6.4 工具选型
TRL / LLaMA-Factory / Axolotl / unsloth——按场景选型,避免工具选择盲区
工具生态全景
2024 年之后,大模型微调的工具生态基本稳定为四个主流栈,它们的定位各有不同:
本节帮你按场景做出选择,避免两种常见误区:
- 误区一:只用自己第一次学会的工具,不知道其他工具擅长什么
- 误区二:追新追潮,换工具比换超参还频繁,最后什么都没跑通
四个工具的定位
TRL(Transformers Reinforcement Learning)
TRL 是 Hugging Face 官方的后训练库,随 Transformers 生态一体发布。
优势:
- 官方维护,和 transformers、peft、accelerate 无缝集成
- 研究优先:新算法(DPO / GRPO / PPO)几乎都是在这里首发
- 代码风格清晰,易于理解训练循环、方便自定义
劣势:
- 需要写 Python 代码,不适合零代码用户
- 文档偏向 API 参考,缺少端到端教程
- 对多机多卡的支持相对朴素(需要自己配 accelerate)
适合谁:
- 研究生 / 研究员,需要复现论文或做新方法实验
- 想把微调嵌进已有 Python pipeline 的工程师
LLaMA-Factory(国内最流行)
LLaMA-Factory 是北航 hiyouga 团队维护的配置驱动框架,在中文社区极其流行。
优势:
- YAML 配置驱动,一份配置文件跑一切(SFT、DPO、PPO、继续预训练)
- 覆盖模型最多:几乎所有国产模型(Qwen、ChatGLM、DeepSeek、Baichuan、InternLM)第一时间支持
- 内置 WebUI(LlamaBoard):零代码也能跑
- 中文文档完整
劣势:
- 抽象层多,报错时不容易定位到底层
- 不方便做非常规的自定义逻辑(要读源码)
适合谁:
- 中文业务场景、国产模型为主
- 工程团队要标准化 pipeline、零代码用户
- 快速跑通一个 baseline
Axolotl(社区主流)
Axolotl 是一个早期非常活跃的社区项目,被 Hugging Face、Mistral 等团队用于训练开源模型。
优势:
- YAML 驱动,类似 LLaMA-Factory 但风格更"Unix"
- 社区提供大量参考配置(Llama、Mistral、Gemma、DeepSeek)
- 支持 DeepSpeed / FSDP 开箱即用
- 文档里有很多"为什么这么配置"的说明
劣势:
- 国内访问速度受影响
- 对国产模型的支持略滞后于 LLaMA-Factory
适合谁:
- 训练开源基座模型、参与开源生态
- 需要可复现 YAML 配置的团队
unsloth(极速 + 省显存)
unsloth 是近两年冒出来的黑马,专注于单卡加速。
优势:
- 2× 训练速度,省 40-70% 显存(来自手写 Triton kernel)
- API 和 TRL 几乎一致,几乎零迁移成本
- 能在免费版 Colab T4 上跑 7B 模型的 QLoRA
劣势:
- 多卡支持较弱(商业版才支持多卡)
- 只支持特定模型家族的优化 kernel(Llama / Mistral / Gemma / Qwen / Phi)
适合谁:
- 学生、个人开发者,单卡 / 消费级 GPU
- 在 Colab / Kaggle 上做作业或 demo
对比一览表
| 维度 | TRL | LLaMA-Factory | Axolotl | unsloth |
|---|---|---|---|---|
| 交互方式 | Python API | YAML + WebUI | YAML | Python API |
| 学习曲线 | 中(懂 HF 生态即可) | 低(零代码) | 中(看懂 YAML) | 低(模仿 TRL) |
| 国产模型支持 | 依赖 transformers | 最全 | 一般 | 新增中 |
| 多卡 / 分布式 | accelerate | DeepSpeed / FSDP | DeepSpeed / FSDP | 弱(付费) |
| WebUI | ❌ | ✅(LlamaBoard) | ❌ | ❌ |
| 研究友好 | ★★★ | ★★ | ★★ | ★ |
| 工程友好 | ★★ | ★★★ | ★★★ | ★★ |
| 最新算法跟进 | 最快 | 跟得紧 | 跟得紧 | 慢半拍 |
| 单卡速度 | 基线 | 基线 | 基线 | 2× |
| 文档语言 | 英文为主 | 中英双语 | 英文 | 英文 |
按场景选型
推荐:TRL
- 最新的 DPO / GRPO / RLVR 几乎第一时间在 TRL 里有实现
- 代码可读性最高,改算法最方便
- 和 Hugging Face 评估、数据集生态无缝衔接
次选:unsloth(如果显存紧,先用 unsloth 跑通,再迁回 TRL 做正式实验)
推荐:LLaMA-Factory(国内)/ Axolotl(海外)
- YAML 配置版本化进 Git,复现性好
- WebUI 让产品同事也能做数据质检
- 内置多卡方案(DeepSpeed ZeRO-3 / FSDP)
组合:LLaMA-Factory 训模型 + TRL 做 custom loss 的小实验
推荐:unsloth
- RTX 3090 / 4090 / T4 上能跑 7B QLoRA
- 2× 加速对单卡尤为重要
- Colab 免费额度里也能跑
注意:训练完用 model.save_pretrained_merged() 导出,推理时可回到 vLLM / transformers。
推荐:LLaMA-Factory
- 国产模型(Qwen、ChatGLM、InternLM、DeepSeek)支持最及时
- 中文文档、中文 issue 响应快
- 数据格式支持 Alpaca / ShareGPT / OpenAI Instruction 等
配合:数据用 datasets 库转换,评估用 OpenCompass。
推荐:Axolotl + DeepSpeed,或 LLaMA-Factory + DeepSpeed
- 两者都深度集成 DeepSpeed ZeRO-2 / ZeRO-3
- 对 32B+ 级模型全参微调,是目前最稳的开源方案
- FSDP 作为备选(Meta 系生态更原生)
不要用 TRL 直接起 8 卡以上,需要手写 accelerate 配置,坑多。
避免工具选择盲区
盲区一:只会用一个工具。LLaMA-Factory 很香,但你应该至少跑通一次 TRL 的裸代码,这样才理解"YAML 背后到底发生了什么"。
盲区二:追新不收敛。社区一有新工具就换,结果每个都没跑通两个 epoch。先用任何一个跑通完整实验,再评估是否真的需要换。
盲区三:忽视吞吐量。训练慢 2× 意味着电费 / 云费 × 2。评估工具时别忘了跑一次 samples/second 基准。
盲区四:不读源码的迷信。当训练跑飞时,一份"3 行 Python 的 TRL Trainer"比"一个封装三层的 YAML"更容易 debug。
入门路径推荐
对于第一次做 SFT 的研究生:
第 1 次:用 TRL 手写
跟着官方教程跑一次 Qwen2.5-1.5B + LoRA,体会"加载 → template → masking → Trainer"的完整链条。
第 2 次:换 LLaMA-Factory 配置驱动
用同一个数据集,写一份 YAML 跑同样的实验,对比速度和易用性。
第 3 次:用 unsloth 跑单卡
把模型换成 7B,用 unsloth 在单卡 24G 上跑 QLoRA,体会"工具选对了,显存压力直接减半"。
第 4 次:需要做新方法时回到 TRL
任何新算法(DPO / GRPO / ORPO)先用 TRL 跑通,再看是否要封装进 LLaMA-Factory。
本节小结
| 工具 | 核心定位 | 一句话记忆 |
|---|---|---|
| TRL | 研究优先、官方维护 | "新算法第一站" |
| LLaMA-Factory | 工程优先、配置驱动、WebUI | "国产模型 + 零代码" |
| Axolotl | 社区驱动、YAML、DeepSpeed | "海外工业配置模板" |
| unsloth | 极速 + 省显存 | "消费卡 2× 加速" |
记住唯一的原则:先用任何一个跑通,再谈选择。