WeClone 项目,打造你的数字分身

https://youtu.be/5cZ-949Zni8

项目介绍:一个开源项目,旨在通过微信聊天记录和语音消息微调大语言模型,实现个性化数字分身,包括文本风格和声音的克隆。
支持将微调后的模型绑定到微信、QQ、企业微信、飞书和 Telegram 等平台的机器人,实现跨平台的数字分身,项目持续更新迭代中。

WeClone 是一个开源项目,旨在通过微信聊天记录微调大型语言模型(LLM),实现个性化的数字分身,并可部署为微信、QQ、Telegram 等平台的聊天机器人。

项目概述

WeClone 提供了一套完整的流程,包括:

  • 数据导出:使用 PyWxDump 工具提取微信聊天记录。
  • 数据预处理:清洗数据,去除敏感信息,并格式化为模型可用的 JSON 格式。
  • 模型训练:基于 ChatGLM3-6B 模型,采用 LoRA 方法进行微调。
  • 部署与推理:通过浏览器 Demo 或 API 服务进行模型推理,并可部署为聊天机器人。

此外,项目还支持语音克隆功能(WeClone-audio 模块),可将微信语音消息与 0.5B 大模型结合,实现高质量的声音克隆。

硬件与软件要求

硬件要求:

  • 默认使用 ChatGLM3-6B 模型,LoRA 方法微调阶段需约 16GB 显存。
  • 支持使用 LLaMA Factory 支持的其他模型和方法,显存占用更少。

软件要求:

  • Python 3.8 及以上版本。
  • 必需库:Torch、Transformers、Datasets、Accelerate、PEFT、TRL 等。
  • 可选库:CUDA、Deepspeed、Bitsandbytes、Flash-attn 等。

环境搭建

建议使用 uv 工具进行环境管理:

git clone https://github.com/xming521/WeClone.git
cd WeClone
uv venv .venv --python=3.9
source .venv/bin/activate
uv pip install --group main -e .

数据准备与预处理

  1. 使用 PyWxDump 工具提取微信聊天记录,导出为 CSV 格式。
  2. 将导出的 CSV 文件放置于 ./data/csv 目录下。
  3. 运行 ./make_dataset/csv_to_json.py 脚本,对数据进行清洗和格式化。

项目默认会去除数据中的手机号、身份证号、邮箱、网址等敏感信息,并提供了一个禁用词词库 blocked_words,可自行添加需要过滤的词句。

模型下载与微调

首选在 Hugging Face 下载 ChatGLM3 模型,或使用魔搭社区提供的模型。

微调配置统一在 settings.json 文件中,可根据需要修改模型路径、训练参数等。

单卡训练:

python src/train_sft.py

多卡训练:

pip install deepspeed
deepspeed --num_gpus=使用显卡数量 src/train_sft.py

推理与部署

浏览器 Demo:

python ./src/web_demo.py

API 服务:

python ./src/api_service.py

部署为聊天机器人:

⚠️ 注意:使用微信机器人存在封号风险,建议使用小号,并绑定银行卡。

python ./src/api_service.py  # 启动 API 服务
python ./src/wechat_bot/main.py  # 启动微信机器人

扫码登录后,可在私聊或群聊中 @ 机器人进行互动。

项目状态与注意事项

  • WeClone 仍在快速迭代中,当前效果不代表最终效果。
  • 微调效果很大程度取决于聊天数据的数量和质量。
  • Windows 环境未进行测试,建议使用 WSL 或 Linux 环境。

WeClone 项目为用户提供了一个从数据准备到模型部署的完整解决方案,使得打造个性化的数字分身成为可能。

项目地址:点击打开 (https://github.com/xming521/WeClone)

油管:https://youtu.be/5cZ-949Zni8

了解 Tarogo Cloud Bloger & Shop 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读