微调框架横向对比:SFTTrainer、LLaMA-Factory、ms-swift、Axolotl、Unsloth

03-01 SFTTrainer 不是唯一选择。开源社区围绕 Hugging Face 底座transformers + peft + datasets)演化出多条工具链:编程式 TRLYAML/WebUI 工厂加速内核 等。本篇从工程选型角度横向对比,各工具细节见子文档。

段末注释:LLaMA-Factory 是开源 LLM 微调一体化框架,支持 CLI/WebUI 与 YAML 配置;ms-swift(ModelScope SWIFT)是魔搭社区推出的类似定位的训练与部署工具集。

系列索引:微调技术路线导读 | 前置:02 PEFT01 数据格式


一、工具在栈中的位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                  ┌─────────────────────────────────────┐
配置/界面层 │ LLaMA-Factory │ ms-swift │ Axolotl │
└───────────────┬─────────────────────┘
│ 内部多调用
┌───────────────▼─────────────────────┐
编程 API 层 │ SFTTrainer │ DPOTrainer │ Trainer │
└───────────────┬─────────────────────┘

┌───────────────▼─────────────────────┐
加速层(可选) │ Unsloth │ Liger Kernel │ FlashAttn │
└───────────────┬─────────────────────┘

┌───────────────▼─────────────────────┐
底座 │ transformers │ peft │ accelerate │
└─────────────────────────────────────┘

关系:工厂类工具 ≠ 替代 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 原则一致:

要点 说明
训练模板 = 推理模板 各工具均需在配置里指定 templatechat_template
导出格式 多为 Hugging Face adapter;Factory/swift 常一键 merge
迁移 同一 datasets 常可换工具,改配置即可

五、选型决策树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
你需要什么?

├─ 生产流水线 / 自定义评估 / 多阶段 TRL(SFT→DPO→GRPO)
│ → SFTTrainer + 本系列 06 对齐工具

├─ 快速实验、给非开发同事用 WebUI
│ ├─ 通用开源模型 → LLaMA-Factory
│ └─ Qwen/魔搭模型与数据 → ms-swift

├─ 复杂 YAML 配方、DeepSpeed 多卡、社区 config 多
│ → Axolotl

├─ 单卡 QLoRA 要极致速度
│ → Unsloth(或 SFTTrainer + Liger,见 03-05 / 07-03)

└─ 改 loss / 非标准模态
→ Trainer + peft 手写,或 SFTTrainer 子类

六、与本系列其他模块的关系

模块 关系
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 训练 → 本地部署 国产全链路

八、局限(横向共性)

  1. 工具换不得评估规范08-01 基线 必须固定。
  2. 版本耦合transformers / trl / peft / CUDA 需锁定。
  3. WebUI 隐藏细节:易忽略 template 与 mask,上线前读 01-01
  4. 没有银弹:对话对齐深度定制仍倾向 TRL 编程栈

九、03 模块阅读顺序

顺序 文档
0 本文(选型)
1 SFTTrainer — 编程向默认
2 按选型读 Factory / swift / Axolotl / Unsloth 之一
3 04 评估 + 08-01 基线

十、小结

  • 要写代码、全链路对齐SFTTrainer(TRL)。
  • 要界面、YAML 快跑LLaMA-Factoryms-swift
  • 要多卡配方、社区 configAxolotl
  • 要单卡 QLoRA 加速Unsloth

下一篇按你的选型进入对应 03-02 ~ 03-05 详解。

-------------本文结束感谢您的阅读-------------