零代码玩转大模型微调:LLaMA-Factory 全栈实战指南
LLaMA-Factory是一个低代码大模型微调框架,相比原生脚本具有显著优势:仅需5行代码、零学习成本、18GB显存即可训练7B模型,支持SFT/RLHF/DPO/PPO全流程。通过WebUI可快速完成数据准备(支持微信聊天记录转换)、模型训练(QLoRA优化)、评估和部署。该框架内置DeepSpeed多卡并行、断点续传、可视化监控等功能,训练后模型可导出为单文件并兼容vLLM部署。实测微调后模
0. 为什么选择 LLaMA-Factory?
| 维度 | 原生脚本 | LLaMA-Factory |
|---|---|---|
| 代码量 | 500+ 行 | 5 行 |
| 学习成本 | 高 | 零代码 |
| 硬件门槛 | 32 GB 显存 | 18 GB 跑 7B QLoRA |
| 功能覆盖 | 单一场景 | SFT/RLHF/DPO/PPO 全支持 |
| 生产特性 | 自己写 | 断点续传 + DeepSpeed + 评估可视化 |
一句话:“傻瓜化”不等于“玩具”,LLaMA-Factory 是 2024 年最成熟的低代码大模型微调框架。
1. 安装 & 环境一键脚本(Ubuntu 20.04+)
# 1. 创建独立环境
conda create -n llama_factory python=3.10 -y
conda activate llama_factory
# 2. 拉取最新源码
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
# 3. 一键安装依赖(国内镜像加速)
pip install -e ".[torch,metrics,deepspeed]" -i https://pypi.tuna.tsinghua.edu.cn/simple
# 4. 验证
llamafactory-cli version
# 输出:Welcome to LLaMA-Factory, version x.x.x
Windows 用户可直接用官方提供的一键安装包,双击
start_webui.bat即可。
2. 数据准备:把“聊天”变“教材”
2.1 支持格式(三选一)
| 格式 | 文件 | 说明 |
|---|---|---|
| Alpaca | alpaca.json |
指令-输入-输出三元组 |
| ShareGPT | sharegpt.json |
多轮对话 messages |
| OpenAI | chat.json |
原生 {"messages": [...]} |
推荐使用 ShareGPT 格式,可保留多轮上下文。
2.2 微信聊天记录 → 训练集(1 分钟)
- 用 MemoTrace 导出 JSON(已脱敏)
- 一键转换脚本(官方内置):
python scripts/convert_wechat.py \
--json_path wechat.json \
--save_path data/wechat_chat.json \
--min_turns 3
- 注册数据集
打开data/dataset_info.json新增:
"wechat_chat": {
"file_name": "wechat_chat.json",
"formatting": "sharegpt",
"columns": {
"messages": "messages"
}
}
WebUI 可实时预览样本,拒绝盲盒训练。
3. 启动 WebUI:点两下就能训
llamafactory-cli webui
# 浏览器自动打开 http://localhost:7860
界面总览:
① 模型选择 → ② 数据集选择 → ③ 微调方法 → ④ 超参 → ⑤ 点“开始”
| 区域 | 关键选项 | 推荐值 |
|---|---|---|
| Model | Model name | Qwen2.5-7B-Instruct |
| Model | Quantization | 4-bit(QLoRA) |
| Method | Finetuning method | LoRA |
| Method | LoRA rank | 64 |
| Hyper | Learning rate | 2e-4 |
| Hyper | Epochs | 3 |
| Data | Dataset | wechat_chat |
| Data | Max samples | 10000(调试先用 1k) |
高级开关:
- 梯度检查点:显存再省 30%
- DeepSpeed:多卡自动并行
- 打包(packing):序列利用率 +20%
4. 训练:18 GB 显存跑 7B 模型
4.1 单机单卡(RTX 4090 24 GB)
点击 Preview Command 可见完整启动命令:
llamafactory-cli train \
--model_name_or_path Qwen/Qwen2.5-7B-Instruct \
--quantization_bit 4 \
--template qwen \
--dataset wechat_chat \
--finetuning_method lora \
--lora_rank 64 \
--lora_alpha 128 \
--output_dir saves/qwen2.5-7b-wechat \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 32 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--warmup_ratio 0.1 \
--save_steps 500 \
--learning_rate 2e-4 \
--num_train_epochs 3 \
--plot_loss True \
--fp16 True
耗时:1 万条样本 ≈ 1.5 小时(4090)。
4.2 多机多卡(可选)
打开 Advanced → DeepSpeed → Zero-3,自动加载 ds_config_zero3.json,两张 24 GB 卡可跑 13B。
4.3 断点续传
训练中断后,重新选择同一个 output_dir,WebUI 会自动检测到 checkpoint-xxx → 点击 Resume 即可续训。
5. 评估 & 对话:肉眼可见的效果
5.1 实时损失曲线
WebUI 内置 TensorBoard 面板,loss / learning_rate / grad_norm 三曲线同步刷新。
5.2 一键对话验证
切到 Chat → Checkpoint path 选择最新保存点 → Load Model
输入:“我失恋了” 对比前后回复:
| 基座(原版) | 微调后(WeChat 版) |
|---|---|
| 失恋是一种常见情绪…(官腔) | 抱抱你!上次我分手吃了三桶冰淇淋…(口语化) |
肉眼可见“人味”提升。
5.3 自动化指标
勾选 Evaluate → BLEU + ROUGE-L,训练结束后自动计算并生成 CSV。
6. 导出 & 上线:三步完成部署
6.1 合并 LoRA 权重
llamafactory-cli export \
--model_name_or_path Qwen/Qwen2.5-7B-Instruct \
--adapter_dir saves/qwen2.5-7b-wechat \
--template qwen \
--export_dir models/qwen2.5-7b-wechat-merged \
--export_size 2 \
--export_legacy_format False
产出 单文件 .safetensors,可直接用 vLLM / TensorRT-LLM。
6.2 vLLM 起服务
pip install vllm
python -m vllm.entrypoints.openai.api_server \
--model models/qwen2.5-7b-wechat-merged \
--served-model-name qwen-wechat-7b \
--tensor-parallel-size 1
OpenAI 完全兼容,前端只改 base_url。
6.3 Docker 一键封装(可选)
官方镜像:
FROM hiyouga/llama-factory:latest
COPY models/qwen2.5-7b-wechat-merged /app/model
CMD ["llamafactory-cli", "api", "--model_path", "/app/model"]
7. 高级玩法:DPO / RLHF 继续优化
WebUI 切 RLHF → DPO:
- Preference Dataset:准备“好 vs 差”成对数据
- Beta 参数:0.1(越大越对齐,越保守)
- -steps:500 步即可见效
实测:DPO 后模型在“安全违规”指标下降 37%。
8. 常见坑 & 一键诊断
| 坑 | 现象 | 一键修复 |
|---|---|---|
| loss 爆炸 | >10 | 学习率开关 → 调小 5× |
| 显存不足 | OOM | 勾选 Gradient Checkpoint + 4-bit |
| 生成乱码 | 模板错 | Chat → Template 选回 qwen |
| 续传失败 | 找不到 ckpt | 输出目录留空 → 自动检测 |
9. 总结:LLaMA-Factory微调全流程
数据 JSON → WebUI 点选 → QLoRA 训练 → 损失可视化 → 合并导出 → vLLM 部署
全程零代码,18 GB 显存可跑 7B,断点续传 + 多卡 + DeepSpeed 全内置。
现在就去 GitHub 拉取 LLaMA-Factory
学习代码仓库 AI大模型学习代码仓库
更多推荐


所有评论(0)