1. 先看清技术栈:框架、算法与后端不是一回事
微调框架的价值不只在于启动训练,还要正确处理聊天模板、损失掩码、4-bit 基座加载、LoRA 注入、分布式检查点与权重导出。选型前应分清层级:Transformers 提供模型、Tokenizer 和通用 Trainer;PEFT 实现 LoRA 等参数高效方法;Accelerate 统一设备和任务启动;DeepSpeed ZeRO、PyTorch FSDP 负责切分参数、梯度与优化器状态;Megatron-Core 则提供张量、流水线、上下文和专家并行。LLaMA-Factory、Axolotl 和 ms-swift 更接近上层编排平台,TRL 更偏后训练算法库,torchtune 则是可阅读、可修改的原生 PyTorch 配方。
全参数微调更新全部权重,能力上限高,但显存与通信成本最大。LoRA 冻结基座,只训练低秩增量,显著减少可训练参数和优化器状态;QLoRA 再以 4-bit 保存冻结基座,但计算和 LoRA 更新通常仍使用 BF16/FP16。因而"4-bit 加载"不等于对 4-bit 权重做全参数训练,也不等于最终部署量化。
梯度检查点以重复计算换显存,样本 packing 减少 padding;ZeRO-3 与 FSDP 可切分训练状态,但无法消除激活显存,也不保证更快。若 70B 以上模型需要多机、长上下文或 MoE,并且单层难以装入单卡,应优先评估 Megatron-Core 一类多维并行训练栈。SFT 是多数流水线的起点;DPO、ORPO 属于离线偏好优化;PPO、GRPO 涉及在线生成、奖励计算和策略更新,对生成吞吐及稳定性的要求更高。
2. 五个常见框架
2.1 LLaMA-Factory:一站式与低门槛
LLaMA-Factory 以 YAML、CLI 和 LlamaBoard Web UI 统一模型注册、数据模板、SFT、偏好训练、LoRA/QLoRA、评估、推理与导出。它依赖 Transformers、PEFT 和 Accelerate,可接入 DeepSpeed、FSDP、Unsloth、FlashAttention 与 vLLM,对 Qwen、Llama、GLM、LLaVA 等中文及多模态模型覆盖广。优势是路径完整、上手快,适合个人和企业建立常规 SFT/DPO 流程;限制是高度封装带来复杂兼容矩阵,修改训练循环或在线采样时需深入内部 Trainer。
2.2 TRL:算法研究与可编程后训练
Hugging Face TRL 建立在 Transformers、Datasets、PEFT 和 Accelerate 之上,覆盖 SFT、奖励建模、DPO、GRPO、RLOO、PPO 等后训练方法,并提供 Python API 与 CLI。其模型兼容性主要跟随 Hugging Face 生态。优势是算法接口清晰,便于修改 Trainer、损失、奖励函数和 rollout,适合研究人员及已有 Hugging Face 基础设施的团队;限制是数据治理、评估矩阵、集群容错和部署需要外围系统补齐。某个 Trainer 存在,也不代表它已在所有 VLM、LoRA、量化和分布式组合下充分验证。
2.3 Axolotl:配置复现与训练效率
Axolotl 用单一 YAML 编排预处理、训练、评估、量化与推理,强调 packing、FlashAttention、Liger、融合算子和云端容器。它支持全参数、LoRA/QLoRA、偏好优化及部分在线强化学习路径,可使用 DDP、DeepSpeed、FSDP2、Torchrun 和 Ray。优势是配置易于版本控制,性能优化组合丰富,适合 2---8 卡训练及企业标准化流水线;限制是配置项多,前沿特性存在模型和后端约束,不能把 FSDP+QLoRA 等示例外推到所有架构。
2.4 ms-swift:国产模型、多模态与双后端
ms-swift 覆盖训练、评估、量化、推理和部署,对 Qwen、GLM、InternLM、DeepSeek、MiniCPM、InternVL 等国内模型、ModelScope 数据与 NPU 生态尤其友好。Transformers-SWIFT 适合常规 SFT、LoRA、DPO、GRPO、DeepSpeed/FSDP2;Megatron-SWIFT 则通过权重转换接入 TP、PP、CP、EP,服务大规模 Dense/MoE 训练。优势是中文资料、多模态和国内部署链路完整;限制是参数面宽,两套后端并非等价,模型转换与检查点格式增加维护成本。
2.5 torchtune:透明的 PyTorch 配方,但不宜新建生产底座
torchtune 曾以短小、可复制的原生 PyTorch recipe 提供全参数、LoRA/QLoRA、DPO、蒸馏、QAT 与 FSDP 训练,适合学习和修改训练循环。但维护方已于 2025 年宣布停止主动功能开发。因此它仍适用于教学、原型和已有项目维护,不宜作为需要持续适配新模型、新算法与新版 PyTorch 的企业平台默认选择。
2.6 比较框架时最容易忽略的三项能力
第一是数据与模板。框架是否"支持某模型",首先取决于 Tokenizer、聊天模板、特殊 token 和多轮对话截断是否正确。LLaMA-Factory 与 ms-swift 内置模型模板较多,适合快速接入;TRL 更鼓励使用标准 messages、prompt-completion 或偏好数据并通过 Python 定制;Axolotl 则擅长把 chat template、packing 和数据源写入配置。无论使用哪个框架,都应抽样打印 token 化结果,确认用户与助手边界、终止符以及仅对目标回答计算损失。
第二是分布式能力的"可用程度"。配置中出现 ZeRO-3 或 FSDP2,只说明框架提供了入口,不能证明目标模型、量化方式、LoRA、长序列和检查点保存组合已稳定。实际评估应覆盖初始化峰值、训练中峰值、每秒有效 token、保存与恢复时间,以及单卡和多卡结果的一致性。小模型在慢速互联上可能因频繁聚合而变慢,大模型则可能因不切分参数根本无法启动。
第三是生产可复现性。Web UI 方便发起任务,却不等于具备版本治理、权限、调度和审计。企业流水线至少要保存模型 ID 与 revision、框架 commit、容器摘要、数据版本、聊天模板、全部超参数、随机种子、硬件拓扑和评测配置;还要明确适配器、合并权重和部署量化产物之间的关系。因而选型不能只比较训练命令长短,还要评估配置能否审阅、检查点能否跨环境恢复、产物能否进入既有推理与评测系统。
3. 核心能力横向对比
"强"表示覆盖面和工程成熟度,不意味着目标模型与所有训练后端组合均已验证。
|----------------|-------------------|--------------------|----------------|---------------------|---------------|
| 维度 | LLaMA-Factory | TRL | Axolotl | ms-swift | torchtune |
| 核心定位 | 一站式低代码平台 | 可编程后训练算法库 | 配置驱动训练编排 | 国内模型与全流程平台 | 原生 PyTorch 配方 |
| 上手方式 | YAML/CLI/Web UI | Python API/CLI | YAML/CLI | CLI/Python/Web UI | YAML+recipe |
| LoRA/QLoRA | 成熟,入口丰富 | PEFT+bnb | 成熟,优化组合多 | 成熟,含多模态 | 历史配方支持 |
| 后训练 | SFT/DPO/KTO/PPO 等 | DPO/GRPO/PPO 等,扩展强 | 偏好优化及部分在线 RL | DPO/PPO/GRPO 及变体 | 主要为已有 DPO 配方 |
| 分布式 | DDP/ZeRO/FSDP | 经 Accelerate 接入 | ZeRO/FSDP2/多节点 | ZeRO/FSDP2/Megatron | 主要 FSDP |
| 多模态 | 较强 | 已有 SFT/DPO 路径 | 较强 | 很强 | 有限 |
| 主要优势 | 完整、易用、中文友好 | 算法新、可编程性高 | 复现与性能工程 | 国产模型、多模态、NPU | 训练循环透明 |
| 主要限制 | 高级组合兼容性复杂 | 外围工程需自建 | 配置复杂、特性有约束 | 体系宽、双后端有成本 | 停止主动开发 |
| 典型用户 | 个人与应用团队 | 研究人员/HF 团队 | 云训练与性能团队 | 国内企业与大模型团队 | 教学及存量项目 |
4. 典型场景如何选
- 单卡 7B/8B、追求最少配置:首选 LLaMA-Factory QLoRA;中文或国产模型可选 ms-swift;显存结论必须结合序列长度、微批量和 LoRA rank。
- 2---8 卡 LoRA/QLoRA:优先 Axolotl;已有成熟模板体系时,LLaMA-Factory 或 ms-swift 也足够。应核对普通 DDP 是否复制完整基座,以及 FSDP+QLoRA 对目标架构的支持。
- DPO、PPO、GRPO 研究:优先 TRL;若面向国产模型、多轮 rollout 或现成训练界面,可选 ms-swift。关键风险是奖励可靠性、生成后端与策略权重同步。
- 企业标准化流水线:Axolotl 适合 YAML、容器和云训练,LLaMA-Factory 适合统一低代码入口,国内模型、多模态或 NPU 场景优先 ms-swift。框架之外还需锁定镜像、数据、模型 revision、随机种子和评测协议。
- 70B 级全参数、多节点或 MoE:优先 Megatron-Core/Megatron-SWIFT;ZeRO-3 或 FSDP2 可作为备选。必须先进行显存预算、网络拓扑、并行度、检查点恢复与真实吞吐测试。
5. 最小示例:LLaMA-Factory QLoRA SFT
以下配置展示关键路径。正式项目应固定经过验证的代码版本,准备符合框架数据格式的指令数据,并确保训练、评测和推理使用同一聊天模板。
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ### model model_name_or_path: Qwen/Qwen3-4B-Instruct-2507 quantization_bit: 4 quantization_method: bnb ### method stage: sft do_train: true finetuning_type: lora lora_rank: 8 lora_target: all ### dataset dataset: my_sft template: qwen3_nothink cutoff_len: 2048 ### train output_dir: saves/qwen3-4b/lora/my-sft per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-4 num_train_epochs: 3.0 bf16: true |
| CUDA_VISIBLE_DEVICES=0 llamafactory-cli train qwen3_4b_qlora_sft.yaml |
cutoff_len 对激活显存影响显著;有效批量约为微批量×梯度累积步数×数据并行进程数。LoRA 合并应基于原始精度基座进行,再按 vLLM、SGLang、TensorRT-LLM 或 llama.cpp 的要求单独量化。QLoRA 不会自动生成 GGUF、GPTQ 或 AWQ 部署权重。
6. 常见误区与实践建议
- 框架保证流程实现,不保证数据质量和模型效果。应建立基座对照、独立验证集、重复与泄漏检查。
- LoRA 的核心优势是成本和适配器管理,并非在所有任务上优于全参数微调;应在相同数据、模板与评测协议下比较。
- 能运行不代表配置合理。需抽样检查 token 化结果、助手 loss mask、截断比例、长度分布、梯度范数和通用能力回退。
- 多卡不保证线性加速。模型前向、激活和通信会受 PCIe、NVLink、InfiniBand 及跨节点拓扑影响。
- "支持某模型"通常只说明部分路径可用,不等于 QLoRA、FSDP2、DPO、GRPO、多模态冻结和导出等组合全部验证。
- 训练与推理栈应分别设计:训练关注梯度、优化器和检查点,推理关注 KV cache、连续批处理、量化内核与延迟。
7. 结论
没有脱离场景的"最佳框架"。LLaMA-Factory 强在易用和一站式流程;TRL 强在算法与可编程性;Axolotl 强在配置复现和性能工程;ms-swift 强在国产模型、多模态、NPU 与 Megatron 双路径;torchtune 适合学习和存量维护。实用决策顺序是:先按任务类型与模型生态缩小范围,再依据显存、并行规模和定制深度选择后端,最后用真实数据、真实序列长度和统一评测协议验证,而不是依赖项目热度或孤立的吞吐数字。
参考资料
- LLaMA-Factory 官方文档:https://llamafactory.readthedocs.io/
- Hugging Face TRL 官方文档:https://huggingface.co/docs/trl/
- Hugging Face PEFT LoRA 指南:https://huggingface.co/docs/peft/main/conceptual_guides/lora
- Hugging Face Accelerate:FSDP 与 DeepSpeed:https://huggingface.co/docs/accelerate/concept_guides/fsdp_and_deepspeed
- Axolotl 官方文档:https://docs.axolotl.ai/
- ModelScope SWIFT 官方仓库:https://github.com/modelscope/ms-swift
- PyTorch FSDP 官方文档:https://docs.pytorch.org/docs/stable/fsdp.html
- NVIDIA Megatron-Core 并行策略:https://docs.nvidia.com/megatron-core/developer-guide/latest/user-guide/parallelism-guide.html
- torchtune 停止主动开发说明:https://github.com/meta-pytorch/torchtune/issues/2883
- QLoRA 论文:https://arxiv.org/abs/2305.14314