Windows下WeClone使用,不看必踩坑
抖音/BiliBili:何夕2077
一、 环境与依赖安装 (LLaMA-Factory & vLLM)
vLLM 特殊处理
依赖安装命令
- 务必使用
uv
命令进行依赖安装。
- 原因: 项目尚未提供
requirements.txt
,使用其他命令(如 conda
)易导致依赖版本冲突。
uv
会帮助自动安装与你的 CUDA 版本兼容的 Torch。
LLaMA-Factory 依赖更新
- 不建议手动安装 LLaMA-Factory 的最新源码。
- 警告: 手动安装开发版代码可能引发连锁反应,升级其他不兼容的依赖,导致未知问题,对新手尤其不友好。
二、 数据处理与准备 (PyWxDump & 通用数据清洗)
PyWxDump 数据提取
- 非实时同步: PyWxDump 提取的数据不是实时更新的。
- 获取最新记录: 需要在 PyWxDump 界面右上角点击“实时消息”按钮手动更新。
CSV 导出
- 大数据量问题: 直接导出大量数据到 CSV 可能失败。
- 建议使用下面方法
更稳妥方法:
- 先导出解密后的数据(为 SQLite 文件)。
- 使用 SQL 工具(如 DBeaver)连接 SQLite 文件。
- 通过 SQL 查询语句筛选所需数据。
- 将查询结果导出为 CSV 文件。(SQL 语句可参考文档或自行编写)
- 参考SQL:
SELECT localId as id, MsgSvrID,
CASE WHEN "Type" = 1 THEN '文本' ELSE '其它' END AS type_name,
CASE WHEN IsSender = 1 THEN 1 ELSE 0 END AS is_sender,
CASE WHEN IsSender = 1 THEN '自己id' ELSE StrTalker END AS talker,
StrTalker as room_name, StrContent as msg,
datetime(CreateTime, 'unixepoch', 'localtime') as src, datetime(CreateTime, 'unixepoch', 'localtime') as CreateTime
FROM MSG
where type=1
order by CreateTime asc ;
数据清洗
- 数据清洗爆内存? 在settings.jsonc找到"enable_clean"设置为false,
- 注意: 关闭LLM数据评分,可减少内存占用,也可能会导致数据清洗不干净
- 至关重要: 数据清洗是模型训练成功的基石。
- 高质量数据: 带来理想的训练效果。
- 低质量数据: 可能导致模型表现异常,如输出无意义的重复内容。
三、 模型训练与优化
硬件与性能参考 (以 8GB 显存 4060 为例)
- 模型规模上限: 大致能运行 7B (70亿参数) 规模的模型。
- 训练耗时 (处理上万条数据):
- 开启量化和 Unsloth 优化:
约四小时
- 不进行优化: 可能需要
十几个小时
量化与 Unsloth
- 新增参数: 量化和 Unsloth 优化可能需要配置额外的参数到 settings.jsonc
"quantization_bit": 4, // 开启4位量化
"quantization_type": "nf4", //量化类型nf4
"double_quantization": true, //开启双精度量化
"quantization_method": "bitsandbytes" // 使用bnb方法量化
"use_unsloth": true //开启unsloth缓存加速
- 更多参数参考文档:https://llamafactory.readthedocs.io/zh-cn/latest/advanced/arguments.html
- 缺失模块: 可能需要通过
uv pip install
安装某些缺失的模块。
modelscope bitsandbytes>=0.39.0 optimum>=1.17.0 auto_gptq>=0.5.0 unsloth triton-windows==3.2.0.post11
- 也需要设置PowerShell环境变量:
$env:USE_MODELSCOPE_HUB=1
$env:DISABLE_VERSION_CHECK=1
模型权重合并
- 训练完成后,可以使用特定命令合并模型权重。
llamafactory-cli export export-merge.yaml
- export-merge.yaml内配置。
### model
model_name_or_path: ./主模型路径
adapter_name_or_path: ./炼好的lora路径
template: qwen
finetuning_type: lora
### export
export_dir: ./合并导出路径
export_size: 5
export_device: cpu
export_legacy_format: false
四、 模型量化与本地部署
量化工具
- 可以考虑使用
llama.app
这类工具对训练好的模型进行量化处理。
8位量化命令:uv run llama.cpp目录/convert_hf_to_gguf.py /模型路径 --outtype q8_0 --verbose --outfile /导出文件.gguf
本地运行
- 量化后的模型可以通过
Ollama
导入,以便在本地高效运行。
导入命令:ollama create 模型命名 -f .\ModelFile.txt
ModelFile
文件模板,可解决qwen模型输出不停的问题。
模板内容:
FROM 模型文件.gguf
SYSTEM """
填入系统提示词
"""
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
"""
PARAMETER stop "<|im_end|>"
PARAMETER stop "<|endoftext|>"
PARAMETER stop "<|im_start|>"
PARAMETER num_ctx 4096
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_predict 512
核心要点总结
- 环境配置要细心: Windows 下
vLLM
需特殊处理,依赖安装推荐 uv
。
- 数据是王道: PyWxDump 注意数据同步和导出策略,数据清洗是重中之重。
- 优化有技巧: 了解硬件限制,善用量化和 Unsloth 等优化手段。
- 勤查文档: 许多具体操作(如参数、命令)都需要参考官方文档或教程。