ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

用微信聊天记录微调大模型:WeClone 完整实战,给你的微信数字分身机器人装上灵魂

用微信聊天记录微调大模型:WeClone 完整实战,给你的微信数字分身机器人装上灵魂 用微信聊天记录微调大模型:WeClone 完整实战,给你的微信数字分身机器人装上灵魂【免费下载链接】WeClone One-stop solution for creating your AI twin from chat history Fine-tune LLMs with your chat logs to capture your unique style, then bind to a chatbot to bring your digital self to life.项目地址: https://gitcode.com/GitHub_Trending/we/WeCloneWeClone 用你的微信聊天记录微调大模型,把训好的模型接进微信机器人,私聊、群聊里它都能用你的口吻自动回话,这就是一个能替你聊天的数字分身。本文是微信数字分身教程,适合有 16GB 显存显卡的开发者。上手前:16GB 显存 LoRA 微调的三项前置检查本节完成显存、环境、数据三项检查,全部通过后即可直接开训。显存方面,结论先看:基座模型是 chatglm3-6b,走 LoRA 路线只更新部分参数,SFT 阶段实际显存开销约 16GB,16GB 单卡刚好能跑。显存吃紧时分两层处理:第一层,调小settings.json里的per_device_train_batch_size(默认 4)和gradient_accumulation_steps(默认 8):前者直接降低单批显存占用,后者控制梯度累积步数,两项可同步下调;第二层,调小后仍然 OOM,改用 QLoRA 量化方案进一步压缩显存。环境方面,四条命令搭好运行环境:git clone https://gitcode.com/GitHub_Trending/we/WeClone conda create -n weclone python3.10 conda activate weclone cd WeClone pip install -r requirements.txt数据方面要求两个:一是用 PyWxDump 把微信聊天日志导出为 CSV;二是所有联系人、群聊的 csv 文件夹统一放进仓库的./data/csv目录。 阶段一:微信聊天记录变成可训练数据集本节把 CSV 清洗、格式化成可直接加载的训练集,产物是干净的数据集文件。核心命令:python make_dataset/csv_to_json.py关键参数:敏感信息剔除:默认内置,自动去除手机号、身份证号、邮箱、网址,无需手工处理;连续消息处理:默认把同一人连发的多条消息合并成一句;需要保留多轮对话形式时,换用 make_dataset 目录下的多轮处理脚本csv_to_json-单句多轮.py;禁用词过滤:往 make_dataset/blocked_words.json 里加词,包含禁用词的整句会被整条丢弃。坑与替代方案:触发条件:导出的 csv 散落在各目录,脚本读不到数据。解法:把所有 csv 文件夹统一挪进./data/csv再跑脚本;触发条件:默认剔除项之外还想过滤特定内容,比如某个话题、某类词。解法:把目标词加入禁用词文件,命中即整句丢弃;触发条件:对话上下文依赖强,合并成单句后丢失多轮信息。解法:改用多轮处理脚本重新生成数据集。 阶段二:一条命令微调大模型并本地验证本节跑完 SFT 微调,训练结束后立即起本地页面,确认回复风格贴近本人。训练前,先把 chatglm3-6b 权重放到./chatglm3-6b目录。核心命令:python src/train_sft.py python src/web_demo.py关键参数:批次大小、学习率、LoRA 秩、训练轮数等参数全部集中在 settings.json,克隆到本地后只改这个文件,代码不用动。参数默认值调整方向调整原因per_device_train_batch_size4调小直接降低单批显存占用gradient_accumulation_steps8调小与上一项配合压缩显存learning_rate0.0001调小数据量小时学习率过高容易过拟合,说话风格漂移lora_rank4按需调大能拟合更多风格细节,代价是显存上升num_train_epochs3调大数据量偏小时多训几轮,loss 收敛后及时停坑与替代方案:触发条件:Hugging Face 下载慢或超时。解法:改用魔搭社区下载权重,并在训练、推理前先设置USE_MODELSCOPE_HUB1;触发条件:模型加载失败,日志指向./chatglm3-6b。解法:确认权重目录名与位置和配置一致,缺权重就补下;触发条件:机器有两块以上显卡。解法:先执行pip install deepspeed,再改用deepspeed --num_gpus2 src/train_sft.py多卡分摊训练。 阶段三:微信机器人部署上线,扫码即用本节在两个终端启动 API 服务和机器人进程,微信扫码登录后,数字分身在私聊和群聊里正式接话。核心命令(两个终端,顺序不能反):python src/api_service.py python src/wechat_bot/main.py关键参数:进程顺序:src/api_service.py先启动,src/wechat_bot/main.py后启动;服务在前、机器人在后,反过来机器人拿不到推理能力;登录方式:终端打印登录二维码,微信扫一下即可;唤醒方式:私聊直接发消息触发;群聊里 机器人触发;对话历史:由src/wechat_bot/main.py统一维护,多轮上下文自动衔接。坑与替代方案:触发条件:想让机器人换一个角色说话,而不是自己的口吻。解法:去 src/template.py 修改默认系统提示词;触发条件:回复偏短或重复明显。解法:调 settings.json 里的推理参数,temperature默认 0.5、repetition_penalty默认 1.2、max_length默认 50,想让回复更长就把max_length调大;触发条件:扫码后机器人不回复。解法:确认 API 服务进程还在运行,被误关后按顺序重启两个进程。上面是接入微信后,分身模型与好友对话的实际截图。收尾:数字分身上线的风险与数据优化方向先交代风险。在微信上跑机器人存在封号风险,建议直接用小号上线,并且账号需要绑定银行卡,别拿主号试错。优化方向,按性价比排序:数据先行:先拿一两个密友的聊天记录把全流程跑通,确认语气可用后,再补充更多人的数据重新训练,这是提升效果最直接的一步;对话形式:如果聊天上下文依赖强,改用多轮处理脚本重新生成数据集再训练;参数联动:数据量变化后,重新校准 settings.json 里的学习率、训练轮数和 LoRA 秩,不要沿用旧配置硬训。【免费下载链接】WeClone One-stop solution for creating your AI twin from chat history Fine-tune LLMs with your chat logs to capture your unique style, then bind to a chatbot to bring your digital self to life.项目地址: https://gitcode.com/GitHub_Trending/we/WeClone创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表