人工智能实践(语言智能)
第6讲:大模型微调

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

对比一览表

维度TRLLLaMA-FactoryAxolotlunsloth
交互方式Python APIYAML + WebUIYAMLPython API
学习曲线中(懂 HF 生态即可)(零代码)中(看懂 YAML)低(模仿 TRL)
国产模型支持依赖 transformers最全一般新增中
多卡 / 分布式accelerateDeepSpeed / FSDPDeepSpeed / FSDP弱(付费)
WebUI✅(LlamaBoard)
研究友好★★★★★★★
工程友好★★★★★★★★★★
最新算法跟进最快跟得紧跟得紧慢半拍
单卡速度基线基线基线
文档语言英文为主中英双语英文英文

按场景选型

推荐: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× 加速"

记住唯一的原则:先用任何一个跑通,再谈选择。