大模型训练方法、框架与技术栈

大模型训练方法、框架与技术栈

摘要:大模型训练并不是选择一个框架就结束了。训练目标、参数更新方式、上层工作流、分布式执行和在线生成分别由不同技术负责。本文从学习视角梳理主流训练方法与框架分层,解释它们如何组合,并给出按任务、开发方式和硬件规模进行选型的思路。

关键词:大模型训练、SFT、DPO、PPO、GRPO、LoRA、QLoRA、TRL、LLaMA-Factory、Axolotl、Unsloth、Open-R1、verl、DeepSpeed、FSDP、Megatron-Core

本文基于 2026 年 8 月可查的官方资料整理。开源框架更新很快,具体参数和支持矩阵请以项目对应版本的官方文档为准。


一、先建立大模型训练的全景图

一个模型从“基础模型”走向“可用助手”,可能经历如下过程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
海量原始文本、代码、多模态数据

预训练 Pre-training

Base Model:会续写、有通用知识,但不一定会听指令

继续预训练 Continued Pre-training(可选)

吸收金融、法律、医疗、代码等领域分布

监督微调 SFT

学会对话格式、任务步骤、工具调用和标准回答

偏好优化 DPO 等(可选)

更偏好安全、清晰、有帮助的回答

强化学习 PPO / GRPO 等(可选)

针对可评分目标在线探索和优化

评测、量化、部署、监控和数据回流

这不是每个项目都必须完整执行的流水线。实际情况可能是:

  • 企业客服模型:基座模型 → SFT → DPO;
  • 数学推理模型:基座模型 → 推理轨迹 SFT → GRPO;
  • 行业知识模型:基座模型 → 继续预训练 → SFT;
  • 小型本地模型:基座模型 → QLoRA SFT → 量化部署;
  • 从零训练基础模型:数据工程 → 大规模预训练 → 多阶段后训练。

因此,第一原则是:先确定训练阶段,再选择框架。


二、主流训练方法:模型到底在学什么

2.1 预训练:让模型获得基础能力

预训练通常使用海量原始文本,让模型反复预测下一个 token。

1
2
{"text": "水在标准大气压下的沸点约为100摄氏度。"}
{"text": "def add(a, b):\n return a + b"}

模型不需要人工为每条文本编写答案,因为文本中的下一个 token 本身就是答案。

预训练主要解决:

  • 语言规律;
  • 通用知识;
  • 基础代码、数学和推理模式;
  • 模型能力上限。

它的成本最高,通常涉及大规模数据治理、多维并行、训练稳定性和故障恢复。大多数应用团队不会从零预训练模型,而是选择一个已有 Base Model 做后续训练。

2.2 继续预训练:让模型集中阅读专业资料

继续预训练仍然使用“预测下一个 token”,区别是从已有基座出发,集中训练某种新分布。

例如金融语料:

1
{"text": "本报告期经营活动产生的现金流量净额同比增长18.6%,主要原因是应收账款周转改善……"}

适合:

  • 有大量无标注行业文本;
  • 模型不熟悉专业术语和表达;
  • 需要补充新语言、代码仓库或特定领域分布。

风险是灾难性遗忘:领域能力增强的同时,通用能力可能下降。因此经常混入一定比例的通用数据,并使用较小学习率和全面回归评测。

2.3 SFT:老师直接示范应该怎么回答

SFT(Supervised Fine-Tuning)使用输入和标准输出训练模型。

1
2
3
4
5
6
{
"messages": [
{"role": "user", "content": "银行卡丢失后应该怎么办?"},
{"role": "assistant", "content": "请立即通过银行App、客服电话或柜台办理挂失,并检查近期交易记录。"}
]
}

模型从 SFT 中学习:

  • 如何理解并遵循指令;
  • 如何组织回答;
  • 如何输出 JSON、SQL、代码或工具调用;
  • 特定任务的标准操作流程;
  • 语气、安全边界和角色风格。

SFT 简单、稳定,是最常见的后训练方法。它的局限是只能模仿示范,很难表达“回答 A 和 B 都能接受,但 A 更好”。

2.4 偏好优化:告诉模型哪个回答更好

DPO、KTO、ORPO 等方法属于偏好优化路线。以 DPO 为例,训练数据通常包含同一个问题的优劣回答:

1
2
3
4
5
{
"prompt": "写一封礼貌拒绝会议邀请的邮件。",
"chosen": "感谢邀请,但该时段我已有安排,无法参加。如有会议纪要,我很愿意会后了解。",
"rejected": "没空,不去。"
}

这种数据没有要求 chosen 是唯一正确答案,只表达“在这两个回答中,chosen 更符合偏好”。

偏好优化适合:

  • 调整有用性、安全性、礼貌程度和回答风格;
  • 降低某些不良行为;
  • 已有人工或 AI 生成的偏好对;
  • 希望比在线强化学习更简单、稳定地完成对齐。

DPO 通常使用离线偏好数据,不需要在每一步训练时让模型重新生成候选回答,因此工程复杂度和生成成本一般低于在线 RL。

2.5 奖励模型:训练一个自动阅卷老师

经典 RLHF 流程通常先训练 Reward Model。数据可以是同题多个回答的排序:

1
2
3
4
5
6
7
{
"prompt": "解释什么是缓存。",
"responses": [
{"text": "缓存把常用数据放到访问更快的位置,以减少重复计算或慢速读取。", "rank": 1},
{"text": "缓存就是一种数据库。", "rank": 2}
]
}

奖励模型学会给回答打分,随后 PPO 等算法使用这个分数训练语言模型。

要注意:Reward Model 只是人类目标的代理。如果评分规则有漏洞,模型可能学会“提高分数”而不是真正提高质量,这就是 reward hacking。

2.6 PPO:根据在线奖励更新模型

PPO 是经典强化学习策略优化算法。在大模型后训练中,一般包含:

1
2
3
4
5
6
7
8
9
当前模型生成回答

奖励模型或规则打分

Value Model 估计正常情况下能得多少分

计算本次回答高于还是低于预期

限制单次更新幅度,调整模型

PPO 的优势是能直接利用在线生成和标量奖励,适合需要探索的任务。代价是系统中可能同时存在策略模型、参考模型、奖励模型和价值模型,显存与工程复杂度都较高。

2.7 GRPO:同一道题的多个答案组内比较

GRPO 对同一个 prompt 生成多个候选回答,再根据组内相对奖励训练模型。

1
2
3
4
5
6
7
8
9
{
"prompt": "一个商品原价100元,先涨价20%,再打八折,现价多少?",
"candidates": [
{"answer": "96元", "reward": 1},
{"answer": "100元", "reward": 0},
{"answer": "96元。100×1.2×0.8=96", "reward": 1},
{"answer": "80元", "reward": 0}
]
}

它通常不单独训练 Value Model,而是使用同题多个回答的组内表现作为参照,因此减少了一个模型。但每道题需要生成多条回答,Rollout 成本依然很高。

GRPO 特别适合:

  • 数学题;
  • 代码和单元测试;
  • 逻辑推理;
  • 格式可以自动验证的任务;
  • 有可靠规则或 verifier 的环境。

2.8 蒸馏:让小模型模仿大模型

蒸馏使用强模型生成的回答、推理轨迹或概率信息训练较小模型。

1
2
3
4
5
强 Teacher 生成高质量数据
↓ 过滤、验证、去重
小 Student 使用 SFT 等方法学习

以更低部署成本复现部分能力

蒸馏是一种数据和能力迁移思路,并不与 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
2
Unsloth 负责高效加载和优化模型执行
TRL Trainer 负责 SFT / DPO / GRPO 训练循环

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
2
3
4
5
6
7
训练引擎更新模型参数
↓ 同步新权重
Rollout 引擎生成新回答

Reward / Verifier 打分

训练引擎继续更新

在线 RL 的常见瓶颈并不是反向传播,而是生成速度、权重同步、GPU 放置和训练/推理切换。因此,Rollout 引擎是推理训练技术栈的重要组成部分。


五、框架不是替代关系,而是搭配关系

下面通过几个典型方案理解框架如何组合。

5.1 单张消费级 GPU:领域 QLoRA SFT

1
2
3
4
5
6
基础组件:Transformers + Datasets + PEFT
训练入口:Unsloth + TRL
或者:LLaMA-Factory / Axolotl
参数方式:QLoRA
训练方法:SFT
输出:LoRA Adapter 或合并模型

适合:客服、分类、结构化抽取、特定风格、简单工具调用。

重点检查:

  • 4-bit 基座能否正确加载;
  • chat template 是否匹配;
  • 是否只训练 assistant token;
  • 截断是否删除答案;
  • Adapter 能否正确合并和部署。

5.2 多卡领域 SFT 或 DPO

1
2
3
4
5
上层入口:TRL / LLaMA-Factory / Axolotl / torchtune
参数方式:LoRA 或 Full Fine-tuning
分布式:DeepSpeed ZeRO 或 PyTorch FSDP
日志:W&B / TensorBoard / MLflow 等
评测:离线任务集 + 人工偏好 + 安全回归

此时重点不再只是“能否放进显存”,还包括:

  • 通信开销;
  • checkpoint 保存和恢复;
  • 有效 batch size;
  • 多卡数据一致性;
  • 参数切分后的导出流程。

5.3 小规模推理模型实验

1
2
3
4
5
6
训练配方:Open-R1 或自定义 TRL
算法:推理轨迹 SFT + GRPO
参数方式:LoRA / QLoRA
性能优化:Unsloth(模型和环境支持时)
Rollout:TRL 内置生成或 vLLM
Reward:数学答案、代码测试、格式验证

适合学习推理模型训练闭环。不要一开始就追求大模型和多机,应先证明 reward、数据和评测有效。

5.4 大规模 GRPO/PPO

1
2
3
4
5
RL 编排:verl 或成熟的内部 RL 平台
训练后端:FSDP 或 Megatron-Core
Rollout:vLLM / SGLang
Reward:规则、Reward Model、Verifier、环境反馈
资源管理:训练和生成分离或共置

核心工程问题:

  • Actor、Reference、Critic、Reward 如何放置;
  • 训练权重如何同步给生成引擎;
  • Rollout 是否成为吞吐瓶颈;
  • 奖励是否稀疏或可被利用;
  • 旧数据是否与当前策略分布偏离。

5.5 从零预训练大模型

1
2
3
4
5
6
模型与并行:Megatron-Core 或同等级预训练系统
数据:流式数据管线、去重、质量过滤、配比
并行:DP + TP + PP,MoE 时增加 EP,长上下文增加 CP
精度:BF16 / FP8 等
存储:分布式 checkpoint
监控:吞吐、MFU、梯度、数据异常、硬件故障

这种场景的瓶颈往往是数据、通信、稳定性和集群容错,而不只是训练脚本。


六、按训练阶段理解框架覆盖范围

下面的表格用于建立大致认识,不表示所有模型、硬件和版本组合都稳定支持。

工具/框架 核心定位 预训练/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
2
3
4
5
6
7
8
9
10
11
单卡 / 消费级 GPU
→ LoRA / QLoRA、Unsloth、LLaMA-Factory、Axolotl

单机多卡
→ TRL / torchtune / 配置框架 + FSDP 或 DeepSpeed

多机后训练
→ FSDP / DeepSpeed,在线 RL 考虑 verl + rollout 引擎

大规模预训练 / MoE
→ Megatron-Core 或专用训练平台

7.4 用 PoC 而不是功能列表做决定

选型时使用同一个模型、同一份小数据进行验证:

  1. 模型和 tokenizer 是否能正确加载;
  2. chat template、EOS、loss mask 是否正确;
  3. 100~500 个 step 内 loss/reward 是否符合预期;
  4. 峰值显存和 tokens/s;
  5. checkpoint 能否恢复;
  6. 单卡到多卡是否保持一致;
  7. LoRA 能否合并、导出、部署;
  8. 目标能力是否提升;
  9. 通用与安全能力是否退化;
  10. 环境能否在新机器上复现。

八、总结

大模型训练技术栈可以归纳为四句话:

  1. 预训练、SFT、DPO、PPO、GRPO决定模型按照什么信号学习。
  2. Full、LoRA、QLoRA决定更新多少参数以及如何使用显存。
  3. TRL、torchtune、LLaMA-Factory、Axolotl、Unsloth、Open-R1、verl负责不同层次的训练组织和优化。
  4. DeepSpeed、FSDP、Megatron-Core、vLLM、SGLang解决大模型分布式训练和在线生成的系统问题。

真正成熟的选型方式不是寻找“最强框架”,而是先明确:

1
2
3
4
5
训练目标是什么?
数据和奖励是什么?
模型与硬件规模多大?
需要多深的算法定制?
如何评测、恢复、导出和上线?

框架只是实现路径,数据、目标和评测才决定训练最终是否有价值。


参考资料

  1. TRL 官方文档
  2. torchtune 官方文档
  3. LLaMA-Factory 官方仓库
  4. LLaMA-Factory 论文
  5. Axolotl 官方文档
  6. Unsloth 官方文档
  7. Open-R1 官方仓库
  8. verl 官方仓库
  9. DeepSpeed ZeRO 官方文档
  10. PyTorch FSDP 官方文档
  11. Megatron-LM / Megatron-Core 官方仓库
  12. vLLM 官方文档
  13. SGLang 官方文档

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×