摘要:大模型训练并不是选择一个框架就结束了。训练目标、参数更新方式、上层工作流、分布式执行和在线生成分别由不同技术负责。本文从学习视角梳理主流训练方法与框架分层,解释它们如何组合,并给出按任务、开发方式和硬件规模进行选型的思路。
关键词:大模型训练、SFT、DPO、PPO、GRPO、LoRA、QLoRA、TRL、LLaMA-Factory、Axolotl、Unsloth、Open-R1、verl、DeepSpeed、FSDP、Megatron-Core
本文基于 2026 年 8 月可查的官方资料整理。开源框架更新很快,具体参数和支持矩阵请以项目对应版本的官方文档为准。
一、先建立大模型训练的全景图
一个模型从“基础模型”走向“可用助手”,可能经历如下过程:
1 | 海量原始文本、代码、多模态数据 |
这不是每个项目都必须完整执行的流水线。实际情况可能是:
- 企业客服模型:基座模型 → SFT → DPO;
- 数学推理模型:基座模型 → 推理轨迹 SFT → GRPO;
- 行业知识模型:基座模型 → 继续预训练 → SFT;
- 小型本地模型:基座模型 → QLoRA SFT → 量化部署;
- 从零训练基础模型:数据工程 → 大规模预训练 → 多阶段后训练。
因此,第一原则是:先确定训练阶段,再选择框架。
二、主流训练方法:模型到底在学什么
2.1 预训练:让模型获得基础能力
预训练通常使用海量原始文本,让模型反复预测下一个 token。
1 | {"text": "水在标准大气压下的沸点约为100摄氏度。"} |
模型不需要人工为每条文本编写答案,因为文本中的下一个 token 本身就是答案。
预训练主要解决:
- 语言规律;
- 通用知识;
- 基础代码、数学和推理模式;
- 模型能力上限。
它的成本最高,通常涉及大规模数据治理、多维并行、训练稳定性和故障恢复。大多数应用团队不会从零预训练模型,而是选择一个已有 Base Model 做后续训练。
2.2 继续预训练:让模型集中阅读专业资料
继续预训练仍然使用“预测下一个 token”,区别是从已有基座出发,集中训练某种新分布。
例如金融语料:
1 | {"text": "本报告期经营活动产生的现金流量净额同比增长18.6%,主要原因是应收账款周转改善……"} |
适合:
- 有大量无标注行业文本;
- 模型不熟悉专业术语和表达;
- 需要补充新语言、代码仓库或特定领域分布。
风险是灾难性遗忘:领域能力增强的同时,通用能力可能下降。因此经常混入一定比例的通用数据,并使用较小学习率和全面回归评测。
2.3 SFT:老师直接示范应该怎么回答
SFT(Supervised Fine-Tuning)使用输入和标准输出训练模型。
1 | { |
模型从 SFT 中学习:
- 如何理解并遵循指令;
- 如何组织回答;
- 如何输出 JSON、SQL、代码或工具调用;
- 特定任务的标准操作流程;
- 语气、安全边界和角色风格。
SFT 简单、稳定,是最常见的后训练方法。它的局限是只能模仿示范,很难表达“回答 A 和 B 都能接受,但 A 更好”。
2.4 偏好优化:告诉模型哪个回答更好
DPO、KTO、ORPO 等方法属于偏好优化路线。以 DPO 为例,训练数据通常包含同一个问题的优劣回答:
1 | { |
这种数据没有要求 chosen 是唯一正确答案,只表达“在这两个回答中,chosen 更符合偏好”。
偏好优化适合:
- 调整有用性、安全性、礼貌程度和回答风格;
- 降低某些不良行为;
- 已有人工或 AI 生成的偏好对;
- 希望比在线强化学习更简单、稳定地完成对齐。
DPO 通常使用离线偏好数据,不需要在每一步训练时让模型重新生成候选回答,因此工程复杂度和生成成本一般低于在线 RL。
2.5 奖励模型:训练一个自动阅卷老师
经典 RLHF 流程通常先训练 Reward Model。数据可以是同题多个回答的排序:
1 | { |
奖励模型学会给回答打分,随后 PPO 等算法使用这个分数训练语言模型。
要注意:Reward Model 只是人类目标的代理。如果评分规则有漏洞,模型可能学会“提高分数”而不是真正提高质量,这就是 reward hacking。
2.6 PPO:根据在线奖励更新模型
PPO 是经典强化学习策略优化算法。在大模型后训练中,一般包含:
1 | 当前模型生成回答 |
PPO 的优势是能直接利用在线生成和标量奖励,适合需要探索的任务。代价是系统中可能同时存在策略模型、参考模型、奖励模型和价值模型,显存与工程复杂度都较高。
2.7 GRPO:同一道题的多个答案组内比较
GRPO 对同一个 prompt 生成多个候选回答,再根据组内相对奖励训练模型。
1 | { |
它通常不单独训练 Value Model,而是使用同题多个回答的组内表现作为参照,因此减少了一个模型。但每道题需要生成多条回答,Rollout 成本依然很高。
GRPO 特别适合:
- 数学题;
- 代码和单元测试;
- 逻辑推理;
- 格式可以自动验证的任务;
- 有可靠规则或 verifier 的环境。
2.8 蒸馏:让小模型模仿大模型
蒸馏使用强模型生成的回答、推理轨迹或概率信息训练较小模型。
1 | 强 Teacher 生成高质量数据 |
蒸馏是一种数据和能力迁移思路,并不与 SFT 冲突。常见做法正是“生成蒸馏数据,再进行 SFT”。
三、LoRA、QLoRA 与训练方法不是同一维度
训练方法回答“模型根据什么信号学习”;参数更新方式回答“训练时更新哪些参数”。
| 维度 | 常见选择 |
|---|---|
| 训练目标 | 预训练、SFT、DPO、PPO、GRPO |
| 参数更新方式 | Full Fine-tuning、Freeze、LoRA、QLoRA |
| 数值精度 | FP32、FP16、BF16、FP8、4-bit 基座 |
| 分布式方式 | DDP、ZeRO、FSDP、TP、PP、EP、CP |
因此可以组合出:
- LoRA SFT;
- QLoRA DPO;
- LoRA GRPO;
- 全参数 SFT;
- 全参数继续预训练。
3.1 Full Fine-tuning
更新全部模型参数,能力上限较高,但权重、梯度和优化器状态都会占用大量显存。适合数据充分、变化较大、资源充足的场景。
3.2 LoRA
冻结原模型,只在部分层增加小型可训练矩阵。它像在原教材旁增加“可训练的修订页”,能显著减少训练参数、梯度和优化器状态。
适合:
- 单任务或多租户微调;
- 资源有限;
- 需要为多个业务保存独立 adapter;
- 快速试验数据价值。
3.3 QLoRA
把冻结的基座权重以 4-bit 等低位宽存储,再训练 LoRA adapter。它进一步减少基座模型显存,适合消费级或单机 GPU。
QLoRA 不代表所有训练计算都在 4-bit 中进行。实际矩阵计算通常仍使用 BF16/FP16 等计算精度,4-bit 主要用于存放冻结权重。
四、不要把所有软件都叫作“同一种训练框架”
理解训练生态最有效的方法,是按软件承担的职责分类。
4.1 模型与数据基础层
这一层提供模型结构、Tokenizer、数据集和参数高效微调能力:
- PyTorch:张量计算、自动求导、优化器和分布式基础;
- Transformers:常见模型结构、Tokenizer、配置和权重加载;
- Datasets:数据加载、映射、流式处理;
- PEFT:LoRA、Adapter 等参数高效训练;
- bitsandbytes / TorchAO 等:低比特和量化相关能力。
大多数上层框架最终都建立在这些基础组件之上。
4.2 算法与可编程 Trainer
这类工具提供 SFT、偏好优化、奖励模型或强化学习的训练循环。
TRL
TRL 属于 Hugging Face 生态的后训练算法库,提供 SFT、DPO、GRPO、Reward Modeling 等 Trainer,并能与 PEFT、Accelerate、DeepSpeed、FSDP 和 vLLM 等组件连接。
特点:
- Python API 清晰;
- 便于自定义 reward、callback、数据处理和训练逻辑;
- 接近算法层,适合研发和学习;
- 需要使用者理解 chat template、loss mask、tokenizer 和分布式配置。
torchtune
torchtune 是 PyTorch 原生的微调库,强调模块化、可组合 recipe 和清晰的代码结构。
特点:
- 更贴近原生 PyTorch;
- 适合学习训练过程和进行工程定制;
- 覆盖数据准备、微调、评测、量化和本地推理等流程;
- 相比高度集成的平台,使用者通常需要理解更多底层细节。
两者的共同点是“可编程”。区别主要在生态侧重点和具体 recipe,而不是简单的高低优劣。
4.3 配置驱动的一站式后训练框架
这类框架把模型选择、数据模板、训练参数、分布式、日志、导出等流程组织为 YAML 或 WebUI。
LLaMA-Factory
LLaMA-Factory 提供 CLI、YAML 和 LLaMA Board WebUI,覆盖继续预训练、SFT、奖励模型、偏好优化、PPO、LoRA/QLoRA、评测、导出和推理等环节。
优势是模型和训练方式覆盖广、上手快、中文生态友好。风险是高层抽象可能让使用者忽略 chat template、标签掩码和默认参数。
Axolotl
Axolotl 同样以 YAML 配置驱动,覆盖预训练、SFT、DPO/KTO/ORPO、GRPO、奖励模型、LoRA/QLoRA、多模态和多卡训练,并集成多种性能优化。
它的风格更偏开发者和配置工程:配置项丰富、适合构建可重复的训练 recipe。与此同时,复杂组合也要求严格验证版本兼容性。
这类框架适合:
- 快速建立训练基线;
- 团队统一训练入口;
- 用配置保存和复现实验;
- 标准 SFT、LoRA、DPO 项目。
当项目需要自定义 loss、全新算法或复杂在线环境时,通常要进入源码或转向更可编程的算法框架。
4.4 单机低显存与算子优化层
Unsloth
Unsloth 主要通过定制 kernel、计算图、梯度检查点和 LoRA 路径等方式降低显存、提高训练效率,尤其适合单机 LoRA/QLoRA。
它不是新的 SFT 或 GRPO 算法。常见组合是:
1 | Unsloth 负责高效加载和优化模型执行 |
Unsloth 适合低成本实验、消费级 GPU 和快速验证。但实际加速比例取决于模型结构、硬件、序列长度、精度和训练配置,不应直接套用单一宣传数字。
类似的性能组件还有 FlashAttention、Liger Kernel、融合算子和 padding-free packing 等。它们主要回答“如何更快、更省”,而不是“模型应该学习什么”。
4.5 推理模型训练配方与研究项目
Open-R1
Open-R1 是围绕 R1 风格推理模型构建的开源项目,包含:
- 推理数据生成;
- 推理轨迹 SFT/蒸馏;
- GRPO 训练;
- 数学、代码、科学任务评测;
- 数据去污染;
- Accelerate、DeepSpeed 和 vLLM 等组合配方。
它更像“推理训练实验室和可执行教材”,而不是覆盖所有企业训练需求的通用平台。它的价值在于把数据、SFT、在线 RL 和评测串成完整的 reasoning pipeline。
4.6 大规模在线强化学习框架
verl
大模型在线 RL 不只是计算 loss。系统还要管理:
- Actor/Policy;
- Reference Model;
- Critic/Value Model;
- Reward Model 或规则奖励;
- Rollout 引擎;
- 训练与生成之间的权重同步;
- 不同模型在 GPU 上的放置。
verl 针对这类复杂流程提供 RL 数据流和资源编排,能够连接 FSDP、Megatron-LM、vLLM、SGLang 等后端。
它适合多卡、多机和高吞吐 RL,而不是“第一次用单卡做 LoRA SFT”的首选。与 TRL 相比,verl 的重点更偏大规模 RL 系统执行和资源利用;TRL 更适合算法 API、快速实验和 Hugging Face 生态开发。
4.7 分布式训练与状态切分层
DeepSpeed
DeepSpeed 提供分布式训练和显存优化。最常见的 ZeRO 会逐步切分训练状态:
- ZeRO-1:切分优化器状态;
- ZeRO-2:再切分梯度;
- ZeRO-3:再切分模型参数;
- Offload:把部分状态放到 CPU 或 NVMe,以显存换通信和速度。
DeepSpeed 通常被 TRL、Open-R1、LLaMA-Factory、Axolotl 等上层框架调用。
PyTorch FSDP
FSDP 是 PyTorch 原生的全分片数据并行方案,将参数、梯度和优化器状态分片到多个进程,需要时再聚合。
FSDP 与 ZeRO-3 目标相似,但运行时、API、checkpoint 和生态集成不同。选择哪一个应根据目标框架的成熟度、团队经验和实测结果决定。
Megatron-LM / Megatron-Core
Megatron-Core 面向超大 Transformer 训练,提供多种并行维度:
- TP:Tensor Parallel,切分单层矩阵;
- PP:Pipeline Parallel,把不同层放到不同阶段;
- DP:Data Parallel,复制模型处理不同数据;
- EP:Expert Parallel,切分 MoE 专家;
- CP:Context Parallel,沿长上下文维度切分。
它适合从零预训练、超大模型全参数训练、MoE 和大规模 NVIDIA 集群。代价是更高的学习、配置和运维成本。
4.8 Rollout 与推理引擎
vLLM 与 SGLang
vLLM、SGLang 首先是高性能推理和服务系统,但在 GRPO、PPO 和 Agent RL 中也经常承担 Rollout:为同一批 prompt 高速生成候选回答。
1 | 训练引擎更新模型参数 |
在线 RL 的常见瓶颈并不是反向传播,而是生成速度、权重同步、GPU 放置和训练/推理切换。因此,Rollout 引擎是推理训练技术栈的重要组成部分。
五、框架不是替代关系,而是搭配关系
下面通过几个典型方案理解框架如何组合。
5.1 单张消费级 GPU:领域 QLoRA SFT
1 | 基础组件:Transformers + Datasets + PEFT |
适合:客服、分类、结构化抽取、特定风格、简单工具调用。
重点检查:
- 4-bit 基座能否正确加载;
- chat template 是否匹配;
- 是否只训练 assistant token;
- 截断是否删除答案;
- Adapter 能否正确合并和部署。
5.2 多卡领域 SFT 或 DPO
1 | 上层入口:TRL / LLaMA-Factory / Axolotl / torchtune |
此时重点不再只是“能否放进显存”,还包括:
- 通信开销;
- checkpoint 保存和恢复;
- 有效 batch size;
- 多卡数据一致性;
- 参数切分后的导出流程。
5.3 小规模推理模型实验
1 | 训练配方:Open-R1 或自定义 TRL |
适合学习推理模型训练闭环。不要一开始就追求大模型和多机,应先证明 reward、数据和评测有效。
5.4 大规模 GRPO/PPO
1 | RL 编排:verl 或成熟的内部 RL 平台 |
核心工程问题:
- Actor、Reference、Critic、Reward 如何放置;
- 训练权重如何同步给生成引擎;
- Rollout 是否成为吞吐瓶颈;
- 奖励是否稀疏或可被利用;
- 旧数据是否与当前策略分布偏离。
5.5 从零预训练大模型
1 | 模型与并行:Megatron-Core 或同等级预训练系统 |
这种场景的瓶颈往往是数据、通信、稳定性和集群容错,而不只是训练脚本。
六、按训练阶段理解框架覆盖范围
下面的表格用于建立大致认识,不表示所有模型、硬件和版本组合都稳定支持。
| 工具/框架 | 核心定位 | 预训练/CPT | SFT | 偏好优化 | 在线 RL | 分布式重点 |
|---|---|---|---|---|---|---|
| TRL | 后训练算法 Trainer | 非主要定位 | 强 | 强 | GRPO 等 | 通过 Accelerate、DS、FSDP |
| torchtune | PyTorch 原生训练 Recipe | 部分场景 | 强 | 按版本/Recipe | 非主要定位 | PyTorch 原生路线 |
| LLaMA-Factory | 一站式训练工作台 | 支持 | 强 | 强 | 部分算法 | DeepSpeed、FSDP 等集成 |
| Axolotl | YAML 驱动后训练平台 | 支持 | 强 | 强 | GRPO 等 | FSDP、DeepSpeed、多机 |
| Unsloth | 低显存与 Kernel 优化 | 支持部分流程 | 强 | 可结合 TRL | 可结合 TRL | 需按版本验证多卡能力 |
| Open-R1 | 推理训练配方 | 非通用预训练 | 推理蒸馏 SFT | 非主要定位 | GRPO 核心 | DDP、DeepSpeed、vLLM |
| verl | 大规模 RL 系统 | 非主要定位 | 非主要定位 | 可作为 RL 流程一部分 | 强 | FSDP、Megatron、资源编排 |
| DeepSpeed | 分布式/显存优化 | 底层支持 | 底层支持 | 底层支持 | 底层支持 | ZeRO、Offload |
| FSDP | PyTorch 参数全分片 | 底层支持 | 底层支持 | 底层支持 | 底层支持 | 参数、梯度、状态分片 |
| Megatron-Core | 超大模型并行训练 | 强 | 可用于大规模训练 | 可作为训练后端 | 可作为训练后端 | TP、PP、EP、CP、DP |
应注意:
- “核心定位”比“是否支持”更重要;
- 能通过插件调用不代表该功能是框架最成熟的路径;
- 同一框架的新旧版本可能差异很大;
- 多模态、MoE、长上下文和新模型都要单独验证。
七、如何进行框架选型
7.1 先问训练目标
| 目标 | 优先考虑 |
|---|---|
| 改变回答格式、语气、任务行为 | SFT |
| 从两个回答中学习偏好 | DPO 等偏好优化 |
| 对可验证任务进行在线探索 | GRPO |
| 使用通用标量奖励在线优化 | PPO 或其他 RL 算法 |
| 吸收大量无标注领域语料 | 继续预训练 |
| 迁移大模型能力到小模型 | 蒸馏 + SFT/偏好优化 |
7.2 再问开发方式
- 想快速使用标准流程:LLaMA-Factory、Axolotl;
- 想自己写 reward、callback 和训练逻辑:TRL;
- 想贴近 PyTorch Recipe:torchtune;
- 想研究推理模型完整流程:Open-R1;
- 单机显存紧张:Unsloth 或 QLoRA 路线;
- 大规模在线 RL:verl 或成熟内部系统;
- 从零训练超大模型:Megatron-Core 等大规模预训练体系。
7.3 最后问硬件规模
1 | 单卡 / 消费级 GPU |
7.4 用 PoC 而不是功能列表做决定
选型时使用同一个模型、同一份小数据进行验证:
- 模型和 tokenizer 是否能正确加载;
- chat template、EOS、loss mask 是否正确;
- 100~500 个 step 内 loss/reward 是否符合预期;
- 峰值显存和 tokens/s;
- checkpoint 能否恢复;
- 单卡到多卡是否保持一致;
- LoRA 能否合并、导出、部署;
- 目标能力是否提升;
- 通用与安全能力是否退化;
- 环境能否在新机器上复现。
八、总结
大模型训练技术栈可以归纳为四句话:
- 预训练、SFT、DPO、PPO、GRPO决定模型按照什么信号学习。
- Full、LoRA、QLoRA决定更新多少参数以及如何使用显存。
- TRL、torchtune、LLaMA-Factory、Axolotl、Unsloth、Open-R1、verl负责不同层次的训练组织和优化。
- DeepSpeed、FSDP、Megatron-Core、vLLM、SGLang解决大模型分布式训练和在线生成的系统问题。
真正成熟的选型方式不是寻找“最强框架”,而是先明确:
1 | 训练目标是什么? |
框架只是实现路径,数据、目标和评测才决定训练最终是否有价值。