Weclone:10分钟用微信聊天记录训练一个你

1,895 阅读4分钟

Weclone 是一个开源的 AI数字分身 生成项目,它通过用户的微信聊天记录,对大语言模型(LLM)进行微调,从而创建一个有那味儿的"你"。

ps:Chatgpt 刚火起来的时候,我当时也有类似想法,大部分人的聊天记录都记录在微信上面,如果能直接把聊天记录拿出来训练一个大模型,岂不就能造就一个“我”?我可以用这个模型到处灌水,甚至导入到人形机器人中.

只可惜当时没有精力(\能力)做这样的事情,现在看到有同学实现了这样的项目,还是非常开心(\可恶)的!

快速开始

一、准备算力服务器

因为完整搭建一个训练环境非常复杂,新手可以使用云算力进行测试。

目前市面上很多算力平台都提供了免费试用的云服务器,一些新的小平台赠送的免费额度还挺可观的(比如趣算云、算多多、恒源云、智星文、damodel等),我这里以算多多为例。

1、注册 用以下链接注册,可以免费领取 36 小时的 4070(😁) http://www.gpuduoduo.com/console/login?shareToken=L76YLJ

2、创建实例
选择Weclone 镜像,这个镜像包含了依赖的 LLaMA Factory 库、Qwen2.5-7B 模型、CUDA等,也有常用的 jupyterlab、uv、conda、modelscope 等常用的环境。

图片

等待实例创建成功,可以通过 SSH 或 PyJupyter 连接机器。

二、准备微调数据

1、将手机微信聊天记录迁移到电脑上

参考:zhuanlan.zhihu.com/p/647727121

2、使用PyWxDump导出聊天记录文件

PyWxDump 可将电脑上的微信聊天记录导出为文件。

1、下载安装包(只支持Windows):
github.com/xaoyaoo/PyW…

2、解压后,打开exe应用,会自动在浏览器打开页面

3、解密数据

电脑微信要打开

图片

图片

4、导出聊天记录

图片

图片

图片

三、数据预处理

1、将本地聊天记录 csv 文件夹复制到云算力上上 Weclone 工程的./dataset目录下

图片

- Windows 用户
scp -P 2222 -r C:\xxx\wxdump_tmp\export\csv [root@10.114.40.10](mailto:root@10.114.40.10):/root/weclone/WeClone/dataset 

将 2222 换成你的实例 ssh 端口号,xxx/csv换成本地聊天记录的文件夹目录,10.114.40.10 换成实例ssh地址

 注意:如果提示找不到 scp,请在“应用和功能”里添加“OpenSSH 客户端”。(也可以下载图形客户端 winscp:winscp.net/eng/downloa…

-Mac 或 Linux 用户:
scp -P 2222 -r /xxx/csv [root@10.114.40.10](mailto:root@10.114.40.10):/root/weclone/WeClone/dataset
2、对聊天记录进行预处理

原始的聊天记录需要经过预处理才能用于模型训练。

预处理数据

source .venv/bin/activate #激活环境
weclone-cli make-dataset  #在WeClone根目录下执行该命令

成功后,你会看到:

Collecting lengths100%|██████████████████████████████████████████| 9/9 [00:00<00:00, 370085.65it/s]
[WeClone] I16:07:12 |  cutoff_len设置建议:
[WeClone] W16:07:12 | 多模态任务请务必配置cutoff_len为数据最大长度
[WeClone] I16:07:12 | 9 (100.00%) samples have length256.
[WeClone] S16:07:13 | 聊天记录处理成功,共9条,保存到 ./dataset/res_csv/sft/sft-my.json
(.venv) (base) root@ins-tcaiohv2xon41mtq510pgpwxu0b42duj:~/weclone/WeClone

到这里,我们的前置工作都准备好了,可以正式开始训练(微调)大模型了

四、微调大模型

镜像里预置了 Qwen2.5-7B

可以用 modelscope 下载其他模型,注意要替换一下 settings.jsonc 里的配置

保证当前仍处于虚拟环境下,开始微调

weclone-cli train-sft

工程里已经默认配置好各种参数( ./settings.jsonc),可以按需修改,此处我介绍一些常用的:

参数描述
common_args 里的 model_name_or_path代表大模型的名称和目录
common_args 里的 template代表大模型类型
common_args 里的 use_unsloth是否使用 unsloth 优化 LoRA 微调,unsloth 可以提高微调速度,减少微调所需的显存⚠️如果打开这个,那么推理的时候会有报错,目前还没解决

更多参数设置参考:llamafactory.readthedocs.io/zh-cn/lates…

训练好的模型保存到 ./model_output 下(同样可以在设置)

五、开始玩吧

可以通过启动一个 web 服务,与你的模型对话!

weclone-cli webchat-demo

脚本会启动一个 Web 服务,一般在 7860 端口

平台已经将这个端口映射到公网了,等 Web 服务起来后,在算多多控制台的快捷应用区域打开:

图片

接下来就可以愉快地和你的分身聊天了

图片

六、部署到线上

你可以考虑将训练好的模型部署到常用的聊天机器人中,具体可以参考这篇文章 blog.051088.xyz/posts/weclo…

参考资料

• xming521/WeClone 从聊天记录创造数字分身的一站式解决方案[1]:项目主页,涵盖聊天记录处理、LoRA 微调、声音克隆等模块,本文主要基于项目README编写。 • 保姆级教程: blog.051088.xyz/posts/weclo…