通过微信聊天数据对大语言模型进行微调,让模型学习特定对话风格,默认采用ChatGLM3-6B模型,结合LoRA方法进行SFT阶段训练,显存占用约16GB,可以切换至LLaMA Factory支持的其他模型,显存需求更低但需自行调整系统提示词等配置。
集成语音克隆模块,支持基于微信语音消息和0.5B大模型生成高保真语音,实现数字分身的声音复刻。
支持将微调后的模型绑定至微信、QQ、Telegram、企微、飞书等平台,打造个性化的AI对话机器人。
显存占用参考表
方法 | 精度 | 7B | 14B | 30B | 70B | xB |
---|---|---|---|---|---|---|
Full(bf16/fp16) | 32 | 120GB | 240GB | 600GB | 1200GB | 18x GB |
Full(pure_bf16) | 16 | 60GB | 120GB | 300GB | 600GB | 8x GB |
Freeze/LoRA等 | 16 | 16GB | 32GB | 64GB | 160GB | 2x GB |
QLoRA | 8 | 10GB | 20GB | 40GB | 80GB | x GB |
QLoRA | 4 | 6GB | 12GB | 24GB | 48GB | x/2 GB |
QLoRA | 2 | 4GB | 8GB | 16GB | 24GB | x/4 GB |
• 微调效果高度依赖聊天数据质量,建议优先准备量大、格式规整的对话样本。
• 语音克隆模块需额外安装xcodec依赖,基础环境搭建可通过uv管理器完成。
git clone https://github.com/xming521/WeClone.git
cd WeClone
uv venv .venv --python=3.9 # 创建虚拟环境
source .venv/bin/activate # 激活环境(Windows使用.venv\Scripts\activate)
uv pip install --group main -e 、 # 安装基础依赖(不含语音功能)
数据提取
使用PyWxDump工具解密微信数据库,导出CSV格式聊天记录(支持多联系人/群聊),将导出的csv文件夹存放至./data
目录,示例数据可参考data/example_chat.csv
。
预处理配置
• 系统默认过滤手机号、身份证号等敏感信息,可通过blocked_words
词库自定义过滤内容。
• 多句处理策略:
脚本文件 | 处理逻辑 |
---|---|
csv_to_json.py | 用逗号连接连续回答 |
csv_to_json-单句多轮.py | 将多句放入提示词的'history'字段 |
执行./make_dataset/csv_to_json.py
完成数据格式转换。
模型获取
• Hugging Face渠道:直接下载ChatGLM3系列模型(需耐心等待大文件下载)。
• 魔搭社区替代方案:
export USE_MODELSCOPE_HUB=1 # Windows使用set命令
git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
注意:需将魔搭社区的modeling_chatglm.py替换为Hugging Face版本。
微调参数配置
修改settings.json
文件:
• 选择本地模型路径
• 调整per_device_train_batch_size
(单卡训练批次)和gradient_accumulation_steps
(梯度累积步数)控制显存占用
• 根据数据量修改num_train_epochs
(训练轮次)、lora_rank
(LoRA秩)等超参数
训练执行
• 单卡训练:python src/train_sft.py
(建议2万条左右数据,loss降至3.5左右停止以避免过拟合)
• 多卡训练(需安装deepspeed):
uv pip install deepspeed
deepspeed --num_gpus=2 src/train_sft.py # 示例:使用2块GPU
• 浏览器Demo:python ./src/web_demo.py
(启动本地可视化界面)
• API服务:python ./src/api_service.py
(提供接口调用能力)
• 功能测试:python ./src/test_model.py
(验证常见问题回答)
步骤说明
1、部署AstrBot框架(支持Docker等方式)
2、在AstrBot中配置消息平台(如微信、Telegram)
3、启动项目API服务:python ./src/api_service.py
4、添加服务提供商:选择OpenAI类型,API Base URL填写AstrBot可访问的地址(如容器内地址http://172.17.0.1:8005/v1
),模型名称填gpt-3.5-turbo
5、关闭默认工具调用:在消息平台发送指令/tool off reminder
6、根据微调时的default_system
字段,在AstrBot中设置系统提示词
python ./src/api_service.py # 先启动API服务
python ./src/wechat_bot/main.py # 终端显示二维码,扫码登录
注意:需使用绑定银行卡的微信小号,存在封号风险,仅建议测试使用。
目录/文件 | 功能描述 |
---|---|
WeClone-audio | 语音克隆模块 |
data | 存放聊天记录CSV文件 |
img | 文档配图与截图 |
make_dataset | 数据预处理脚本 |
src | 核心代码(训练、推理、机器人接口) |
.gitignore | 版本控制忽略规则 |
pyproject.toml/requirements.txt | 依赖管理文件 |
settings.json | 训练推理配置中心 |