Update acknowledgment section in README_zh.md
简体中文| English| 项目主页 | 项目文档
[!IMPORTANT] WeClone仍在快速迭代期,当前效果不代表最终效果。 微调LLM效果很大程度取决于模型大小、聊天数据的数量和质量,理论上模型越大,数据越多,效果越好。 7B模型效果一般,14B及以上的模型效果会更好。 Windows环境未进行严格测试,可以使用WSL作为运行环境。
[!IMPORTANT]
[25/06/05]支持图片模态数据微调[25/07/10]数据源增加Telegram
项目默认使用Qwen2.5-7B-Instruct模型,LoRA方法对sft阶段微调,大约需要16GB显存。也可以使用LLaMA Factory支持的其他模型和方法。
需要显存的估算值: | 方法 | 精度 | 7B | 14B | 30B | 70B | xB | | ——————————- | —- | —– | —– | —– | —— | ——- | | Full (bf16 or fp16) | 32 | 120GB | 240GB | 600GB | 1200GB | 18xGB | | Full (pure_bf16) | 16 | 60GB | 120GB | 300GB | 600GB | 8xGB | | Freeze/LoRA/GaLore/APOLLO/BAdam | 16 | 16GB | 32GB | 64GB | 160GB | 2xGB | | QLoRA | 8 | 10GB | 20GB | 40GB | 80GB | xGB | | QLoRA | 4 | 6GB | 12GB | 24GB | 48GB | x/2GB | | QLoRA | 2 | 4GB | 8GB | 16GB | 24GB | x/4GB |
x
bf16
fp16
18x
pure_bf16
8x
2x
x/2
x/4
1.cuda安装(已安装可跳过,要求版本12.6及以上):LLaMA Factory
2.建议使用 uv安装依赖,这是一个非常快速的 Python 环境管理器。安装uv后,您可以使用以下命令创建一个新的Python环境并安装依赖项,速度较慢可以开启代理:
git clone https://github.com/xming521/WeClone.git && cd WeClone uv venv .venv --python=3.12 source .venv/bin/activate # windows下执行 .venv\Scripts\activate uv pip install --group main -e . # 国内用户使用镜像:-i https://pypi.tuna.tsinghua.edu.cn/simple/ uv pip install https://github.com/explosion/spacy-models/releases/download/zh_core_web_sm-3.8.0/zh_core_web_sm-3.8.0-py3-none-any.whl
3.将配置文件模板复制一份并重命名为settings.jsonc,后续配置修改在此文件进行:
settings.jsonc
cp settings.template.jsonc settings.jsonc
[!NOTE] 训练以及推理相关配置统一在文件settings.jsonc
4.使用以下命令测试CUDA环境是否正确配置并可被PyTorch识别,Mac不需要:
python -c "import torch; print('CUDA是否可用:', torch.cuda.is_available());"
5.(可选)安装FlashAttention,加速训练和推理:uv pip install flash-attn --no-build-isolation 版本问题可以使用prebuild-wheels的预编译包安装。
uv pip install flash-attn --no-build-isolation
中国境内推荐使用ModelScope下载模型。例如下载WeClone默认模型:
modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir ./models/Qwen2.5-7B-Instruct
请使用Telegram Desktop导出聊天记录,点击右上角点击导出聊天记录,选择照片类型,格式选择JSON。可以导出多个联系人(不建议使用群聊记录),然后将导出的ChatExport_*文件夹放在./dataset/telegram目录即可,也就是不同人聊天记录的文件夹一起放在 ./dataset/telegram。
ChatExport_*
./dataset/telegram
首先根据需要修改配置文件中的language、platform、include_type。
language
platform
include_type
项目默认通过Microsoft Presidio去除了数据中的电话号码、电子邮件地址、信用卡号码(12-19位数字)、IP地址、地理位置名称、国际银行账户号码、加密货币钱包地址、年龄信息、通用身份证号码,但是不能保证100%过滤识别。
电话号码、电子邮件地址、信用卡号码(12-19位数字)、IP地址、地理位置名称、国际银行账户号码、加密货币钱包地址、年龄信息、通用身份证号码
所以在settings.jsonc中提供了一个禁用词词库blocked_words,可以自行添加需要过滤的词句(会默认去掉包括禁用词的整句)。
blocked_words
[!IMPORTANT] 🚨 请一定注意保护个人隐私,不要泄露个人信息!
执行以下命令对数据进行处理,可以先根据自己的聊天风格修改settings.jsonc的make_dataset_args。
make_dataset_args
weclone-cli make-dataset
数据处理更多参数说明:数据预处理
model_name_or_path
template
lora_target
per_device_train_batch_size
gradient_accumulation_steps
train_sft_args
num_train_epochs
lora_rank
lora_dropout
weclone-cli train-sft
取消settings.jsonc中deepspeed行代码注释,使用以下命令多卡训练:
deepspeed
uv pip install "deepspeed<=0.16.9" deepspeed --num_gpus=使用显卡数量 weclone/train/train_sft.py
测试出合适的temperature、top_p值,修改settings.jsonc的infer_args后,供后续推理时使用。
infer_args
weclone-cli webchat-demo
weclone-cli server
不包含询问个人信息的问题,仅有日常聊天。测试结果在test_result-my.txt。
weclone-cli server weclone-cli test-model
[!TIP] 社群内有部署好的Qwen2.5VL 32B Bot,可以体验效果。
AstrBot 是易上手的多平台 LLM 聊天机器人及开发框架 ✨ 平台支持Telegram、飞书等。
使用步骤:
/tool off_all
[!IMPORTANT] 检查api_service的日志,尽量保证大模型服务请求的参数和微调时一致,tool插件能力都关掉。
LangBot 是一个开源的接入全球多种即时通信平台的 LLM 机器人平台,适合各种场景使用。
gpt-3.5-turbo
同时建议使用DeepWiki解决问题。
欢迎任何 Issues/Pull Requests!
你可以通过查看Issues或帮助审核 PR(拉取请求)来贡献。对于新功能的添加,请先通过 Issue 讨论。开发环境:
uv pip install --group dev -e . pre-commit install
项目使用pytest测试,pyright检查类型,ruff检查代码格式。提交代码前你应该先运行pytest tests确保所有测试通过。
pytest
pyright
ruff
pytest tests
BUPT VCIS Lab的支持 感谢以下代码贡献者和社区里其他成员的贡献
同时本项目受益于LLaMA-Factory、AstrBot、LangBot等优秀开源项目。
[!CAUTION] 本项目仅供学习、研究和实验用途,用于生产环境存在较大风险,请谨慎评估。请勿用于非法用途,后果自负。针对违规获取及利用微信终端用户数据行为的打击公告
[!IMPORTANT] WeClone 目前未与任何平台合作,未发行任何数字货币。唯一官方网站:weclone.love,谨防仿冒。
使用本项目生成的数字分身时,强烈建议:
如确需在生产环境使用,建议:
本免责声明可能随项目更新而修订,用户应定期查看最新版本。继续使用本项目即表示同意最新的免责声明条款。
一旦您下载、克隆、修改、分发或以任何方式使用本项目的代码或模型,即表示您已完整阅读、理解并同意无条件接受本免责声明的全部条款。
请用户慎重阅读并理解本免责声明的所有内容,确保在使用本项目时严格遵守相关规定。
[!TIP] 如果本项目对您有帮助,或者您关注本项目的未来发展,请给项目 Star,谢谢
🚀 One-stop solution for creating your digital avatar from chat history 💡
🚀从聊天记录创造数字分身的一站式解决方案💡
简体中文| English| 项目主页 | 项目文档
✨核心功能
📋特性与说明
数据源平台适配
部署平台支持
近期更新
[25/06/05]支持图片模态数据微调
[25/07/10]数据源增加Telegram
在线微调
硬件要求
项目默认使用Qwen2.5-7B-Instruct模型,LoRA方法对sft阶段微调,大约需要16GB显存。也可以使用LLaMA Factory支持的其他模型和方法。
需要显存的估算值: | 方法 | 精度 | 7B | 14B | 30B | 70B |
xB | | ——————————- | —- | —– | —– | —– | —— | ——- | | Full (bf16orfp16) | 32 | 120GB | 240GB | 600GB | 1200GB |18xGB | | Full (pure_bf16) | 16 | 60GB | 120GB | 300GB | 600GB |8xGB | | Freeze/LoRA/GaLore/APOLLO/BAdam | 16 | 16GB | 32GB | 64GB | 160GB |2xGB | | QLoRA | 8 | 10GB | 20GB | 40GB | 80GB |xGB | | QLoRA | 4 | 6GB | 12GB | 24GB | 48GB |x/2GB | | QLoRA | 2 | 4GB | 8GB | 16GB | 24GB |x/4GB |环境搭建
1.cuda安装(已安装可跳过,要求版本12.6及以上):LLaMA Factory
2.建议使用 uv安装依赖,这是一个非常快速的 Python 环境管理器。安装uv后,您可以使用以下命令创建一个新的Python环境并安装依赖项,速度较慢可以开启代理:
3.将配置文件模板复制一份并重命名为
settings.jsonc,后续配置修改在此文件进行:4.使用以下命令测试CUDA环境是否正确配置并可被PyTorch识别,Mac不需要:
5.(可选)安装FlashAttention,加速训练和推理:
uv pip install flash-attn --no-build-isolation版本问题可以使用prebuild-wheels的预编译包安装。模型下载
中国境内推荐使用ModelScope下载模型。例如下载WeClone默认模型:
数据准备
Telegram
请使用Telegram Desktop导出聊天记录,点击右上角点击导出聊天记录,选择照片类型,格式选择JSON。可以导出多个联系人(不建议使用群聊记录),然后将导出的
ChatExport_*文件夹放在./dataset/telegram目录即可,也就是不同人聊天记录的文件夹一起放在./dataset/telegram。数据预处理
首先根据需要修改配置文件中的
language、platform、include_type。项目默认通过Microsoft Presidio去除了数据中的
电话号码、电子邮件地址、信用卡号码(12-19位数字)、IP地址、地理位置名称、国际银行账户号码、加密货币钱包地址、年龄信息、通用身份证号码,但是不能保证100%过滤识别。所以在
settings.jsonc中提供了一个禁用词词库blocked_words,可以自行添加需要过滤的词句(会默认去掉包括禁用词的整句)。执行以下命令对数据进行处理,可以先根据自己的聊天风格修改settings.jsonc的
make_dataset_args。数据处理更多参数说明:数据预处理
配置参数并微调模型
settings.jsonc的model_name_or_path、template、lora_target选择本地下载好的其他模型。per_device_train_batch_size以及gradient_accumulation_steps来调整显存占用。train_sft_args的num_train_epochs、lora_rank、lora_dropout等参数。单卡训练
多卡训练
取消
settings.jsonc中deepspeed行代码注释,使用以下命令多卡训练:使用浏览器demo简单推理
测试出合适的temperature、top_p值,修改settings.jsonc的
infer_args后,供后续推理时使用。使用接口进行推理
使用常见聊天问题测试
不包含询问个人信息的问题,仅有日常聊天。测试结果在test_result-my.txt。
🖼️ 微调效果
🤖 部署到聊天机器人
AstrBot
AstrBot 是易上手的多平台 LLM 聊天机器人及开发框架 ✨ 平台支持Telegram、飞书等。
使用步骤:
weclone-cli server启动api服务/tool off_all,否则会没有微调后的效果。LangBot
LangBot 是一个开源的接入全球多种即时通信平台的 LLM 机器人平台,适合各种场景使用。
weclone-cli server启动 WeClone API 服务gpt-3.5-turbo,供应商选择 OpenAI,填写 请求 URL 为 WeClone 的地址,详细连接方式可以参考文档,API Key 任意填写。📌 路线图
问题解决
官方文档FAQ
同时建议使用DeepWiki解决问题。
❤️ 贡献代码
欢迎任何 Issues/Pull Requests!
你可以通过查看Issues或帮助审核 PR(拉取请求)来贡献。对于新功能的添加,请先通过 Issue 讨论。
开发环境:
项目使用
pytest测试,pyright检查类型,ruff检查代码格式。提交代码前你应该先运行
pytest tests确保所有测试通过。🙏 致谢
BUPT VCIS Lab的支持 感谢以下代码贡献者和社区里其他成员的贡献
同时本项目受益于LLaMA-Factory、AstrBot、LangBot等优秀开源项目。
⚠️ 免责声明
点击查看免责条款
1. 使用风险自担
2. 生产环境风险警告
3. 模型输出不可靠性
4. 数据安全与隐私
5. 法律合规
6. 技术支持限制
使用建议
强制性Bot身份标识
使用本项目生成的数字分身时,强烈建议:
风险评估建议
如确需在生产环境使用,建议:
本免责声明可能随项目更新而修订,用户应定期查看最新版本。继续使用本项目即表示同意最新的免责声明条款。
一旦您下载、克隆、修改、分发或以任何方式使用本项目的代码或模型,即表示您已完整阅读、理解并同意无条件接受本免责声明的全部条款。
请用户慎重阅读并理解本免责声明的所有内容,确保在使用本项目时严格遵守相关规定。
⭐ Star History