### 项目介绍:Chat-甄嬛#### 1. 本项目解决了什么问题 Chat-甄嬛 是一个基于《甄嬛传》剧本的个性化 AI 聊天机器人项目,旨在通过大模型微调技术,打造一个符合甄嬛角色人设的智能对话系统。它解决了以下问题:- **角色个性化对话**:通过微调大模型,Chat-甄嬛 能够模仿甄嬛的语气和风格,提供符合角色设定的对话体验,满足用户对个性化 AI 的需求。- **剧本数据利用**:将《甄嬛传》剧本中的台词和对话转化为训练数据,充分利用现有文本资源,降低了数据收集和处理的成本。- **开源与可扩展性**:项目开源,开发者可以基于此项目快速构建其他小说或剧本角色的个性化 AI,推动了 AI 技术在文学领域的应用。#### 2. 本项目的技术选型,技术特点或性能表现 Chat-甄嬛 的技术选型和特点如下:- **技术选型**: - **大模型微调**:基于 LLaMA3_1-8B-Instruct 模型,使用 LoRA(Low-Rank Adaptation)技术进行微调,降低了训练成本,同时保持了模型的高性能。 - **数据处理工具**:使用正则表达式和自定义脚本从剧本中提取对话数据,并将其转换为适合模型训练的格式(如 JSON)。 - **训练框架**:采用 PyTorch 和 Hugging Face 的 Transformers 库,结合 Peft 库实现 LoRA 微调,简化了训练流程。- **技术特点**: - **角色一致性**:通过微调,模型能够生成符合甄嬛角色设定的对话,语气、用词和情感表达高度一致。 - **多轮对话支持**:模型能够理解上下文,支持多轮对话,增强了交互的自然性和连贯性。 - **高效训练**:LoRA 技术显著减少了训练所需的计算资源,使得在消费级 GPU 上也能完成模型微调。- **性能表现**: - **对话质量**:在测试中,Chat-甄嬛 生成的回复与甄嬛的角色设定高度契合,用户满意度较高。 - **训练效率**:在单卡 GPU 上,完成一次微调训练仅需 20-30 分钟,显著降低了时间和硬件成本。#### 3. 如何快速上手本项目 要快速上手 Chat-甄嬛 项目,可以按照以下步骤进行:1. **环境准备**: - 安装 Python 3.12 和 CUDA 12.1(如需 GPU 加速)。 - 安装 PyTorch 2.3.0 及其他依赖库: ```bash pip install modelscope==1.16.1 transformers==4.43.1 accelerate==0.32.1 peft==0.11.1 datasets==2.20.0 ```2. **克隆项目**: ```bash git clone https://github.com/KMnO4-zx/huanhuan-chat.git cd huanhuan-chat ```3. **数据准备**: - 将《甄嬛传》剧本数据转换为 JSON 格式,示例格式如下: ```json [ {"instruction": "小姐,别的秀女都在求中选,唯有咱们小姐想被撂牌子,菩萨一定记得真真儿的——", "input": "", "output": "嘘——都说许愿说破是不灵的。"} ] ``` - 将处理好的数据放置在 `dataset/train/lora/` 目录下。4. **模型下载与微调**: - 下载 LLaMA3_1-8B-Instruct 模型: ```python import torch from modelscope import snapshot_download model_dir = snapshot_download('LLM-Research/Meta-Llama-3.1-8B-Instruct', cache_dir='/path/to/cache') ``` - 运行训练脚本: ```bash python train.py ```5. **模型测试**: - 使用训练好的模型进行对话测试: ```python from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel model_path = './LLM-Research/Meta-Llama-3___1-8B-Instruct' lora_path = './output/llama3_1_instruct_lora/checkpoint-699' tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True).eval() model = PeftModel.from_pretrained(model, model_id=lora_path) prompt = "嬛嬛你怎么了,朕替你打抱不平!" messages = [{"role": "system", "content": "假设你是皇帝身边的女人--甄嬛。"}, {"role": "user", "content": prompt}] input_ids = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) model_inputs = tokenizer([input_ids], return_tensors="pt").to('cuda') generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=512) response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] print('皇上:', prompt) print('嬛嬛:', response) ```6. **定制与扩展**: - 如果需要微调其他角色,可以替换数据集并重新训练。 - 欢迎提交 Pull Request,参与项目的改进和扩展。通过以上步骤,您可以快速上手 Chat-甄嬛 项目,并根据需要定制属于自己的个性化 AI 聊天机器人。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论