03-01 SFTTrainer 不是唯一选择。开源社区围绕 Hugging Face 底座(transformers + peft + datasets)演化出多条工具链:编程式 TRL、YAML/WebUI 工厂、加速内核 等。本篇从工程选型角度横向对比,各工具细节见子文档。
段末注释:LLaMA-Factory 是开源 LLM 微调一体化框架,支持 CLI/WebUI 与 YAML 配置;ms-swift(ModelScope SWIFT)是魔搭社区推出的类似定位的训练与部署工具集。
系列索引:微调技术路线导读 | 前置:02 PEFT、01 数据格式
一、工具在栈中的位置
1 | ┌─────────────────────────────────────┐ |
关系:工厂类工具 ≠ 替代 TRL,多数在底层仍用 Trainer/SFTTrainer 或等价逻辑;Unsloth 可包在 TRL 外或独立加载模型。
二、总览对比表
| 维度 | SFTTrainer (TRL) | LLaMA-Factory | ms-swift | Axolotl | Unsloth |
|---|---|---|---|---|---|
| 抽象层次 | Python API | YAML + WebUI + CLI | CLI + WebUI | YAML | Python API(模型加载) |
| 学习曲线 | 中(需写脚本) | 低 | 低 | 中 | 中 |
| SFT/LoRA | ✓ | ✓ | ✓ | ✓ | ✓(核心) |
| QLoRA | ✓ | ✓ | ✓ | ✓ | ✓(强项) |
| DPO/对齐 | ✓ 原生 TRL | ✓ | ✓ | 部分/配方 | 主要 SFT |
| GRPO/RL | ✓ TRL | 依版本 | 依版本 | 偏社区配方 | ✗ |
| WebUI | ✗ | ✓ LlamaBoard | ✓ | ✗ | ✗ |
| 国产模型 | 通用 HF | 好 | 很好(Qwen 等) | 好 | 主流开源 |
| 自定义 loss | 容易 | 较难 | 较难 | 中 | 较难 |
| 多卡 | accelerate/DS | ✓ | ✓ | ✓ DeepSpeed | 主要单卡优化 |
| 与部署衔接 | 标准 adapter | 导出 HF/GGUF | ModelScope 生态 | HF 权重 | adapter |
三、分工具一句话定位
| 工具 | 一句话 | 详解 |
|---|---|---|
| SFTTrainer | HF 官方 TRL 监督微调入口;对齐工具最全 | 03-01 |
| LLaMA-Factory | 最流行的「配置文件 + WebUI」微调工厂 | 03-02 |
| ms-swift | 魔搭生态;Qwen/国产模型与 ModelScope 数据 | 03-03 |
| Axolotl | YAML 驱动、社区训练配方与多卡场景 | 03-04 |
| Unsloth | LoRA/QLoRA 训练加速,可接 TRL | 03-05 |
底层手写:transformers.Trainer + peft — 最灵活,掩码与 collator 需自写;适合研究。本系列以 SFTTrainer 为编程向参考,不单独成篇。
四、数据与格式兼容性
各工具最终都落到 messages / ShareGPT / Alpaca / prompt-completion 等几种 JSON 形态;与 01-01 Chat Template 原则一致:
| 要点 | 说明 |
|---|---|
| 训练模板 = 推理模板 | 各工具均需在配置里指定 template 或 chat_template |
| 导出格式 | 多为 Hugging Face adapter;Factory/swift 常一键 merge |
| 迁移 | 同一 datasets 常可换工具,改配置即可 |
五、选型决策树
1 | 你需要什么? |
六、与本系列其他模块的关系
| 模块 | 关系 |
|---|---|
| 01 数据 | 任何工具都需先统一数据 |
| 02 PEFT | 参数含义各工具配置项不同名但同源 |
| 04 评估 | 工具无关;验收标准一致 |
| 06 对齐 | 编程向首选 TRL;Factory/swift 可做 DPO 但定制弱于 TRL |
| 07 工程 | 各工具均支持 checkpointing、多卡(能力不同) |
| AMD 实战 | SFTTrainer + BF16 LoRA 范例 |
七、组合用法(常见)
| 组合 | 场景 |
|---|---|
| Factory 探路 → SFTTrainer 固化 | WebUI 调参,脚本上生产 |
SFTTrainer + use_liger_kernel |
少改代码加速 |
Unsloth 加载 + SFTTrainer |
QLoRA 极速(见 03-05) |
| ms-swift 训练 → 本地部署 | 国产全链路 |
八、局限(横向共性)
- 工具换不得评估规范:08-01 基线 必须固定。
- 版本耦合:
transformers/trl/peft/ CUDA 需锁定。 - WebUI 隐藏细节:易忽略 template 与 mask,上线前读 01-01。
- 没有银弹:对话对齐深度定制仍倾向 TRL 编程栈。
九、03 模块阅读顺序
| 顺序 | 文档 |
|---|---|
| 0 | 本文(选型) |
| 1 | SFTTrainer — 编程向默认 |
| 2 | 按选型读 Factory / swift / Axolotl / Unsloth 之一 |
| 3 | 04 评估 + 08-01 基线 |
十、小结
- 要写代码、全链路对齐:
SFTTrainer(TRL)。 - 要界面、YAML 快跑:
LLaMA-Factory或ms-swift。 - 要多卡配方、社区 config:
Axolotl。 - 要单卡 QLoRA 加速:
Unsloth。
下一篇按你的选型进入对应 03-02 ~ 03-05 详解。