跳转至

TRL 微调实践

Ch01.1519 TRL 微调实践

📊 Level ⭐⭐⭐ | 8.6KB | entities/fine-tuning-with-trl.md

TRL 微调实践

摘要

TRL(Transformer Reinforcement Learning)是 Hugging Face 生态中面向 LLM 后训练与对齐的开源工具库,将 SFT、DPO、PPO、GRPO 等策略统一在同一套 API 之下,覆盖「指令微调 → 偏好对齐 → 强化学习优化」的完整链路,是实践 RLHF/RLVR 的默认入口。本页结合知识库中微调成本、GRPO 与 SFT+DPO 实践等实体,梳理方法选型与常见陷阱。

核心要点

  • TRL 提供 SFTTrainer、DPOTrainer、PPOTrainer、GRPOTrainer 一套化接口,同一份数据与配置可在不同策略间切换,显著降低对齐实验的工程成本。
  • SFT 是一切对齐的地基:先以指令数据建立基础行为,再谈偏好优化;从 base model 直接跑 RL 几乎必然失败,「先 SFT 后 RL」是多个实践的共同结论。
  • DPO 以偏好对(chosen/rejected)离线优化策略,无需 reward model 与在线采样,是资源受限团队做偏好对齐的默认入口;但信号来自固定数据集,无法探索新行为。
  • PPO 需要与策略同规模的 critic/value model,显存与调参成本高;GRPO 去掉 critic、以组内相对优势替代价值基线,训练成本显著更低,DeepSeek 系列已验证其规模化有效性。
  • GRPO 天然适配 verifiable reward 任务(数学、代码),G=8-16 为常见起点;「格式奖励 + 正确性奖励」组合能显著提升训练稳定性。
  • LoRA/QLoRA 把训练显存需求降低一个量级(7B 全参约 60GB → LoRA 约 18GB → QLoRA 约 10GB),代价是效果保持率与部分能力边界受限。
  • 超参数高度敏感:DPO 的 beta(0.1-0.5)控制偏好采纳激进程度,DPO 学习率需比 SFT 低约两个量级(5e-7 vs 5e-5),否则过拟合偏好数据。
  • 主要失败模式:reward hacking、对 reward model 过拟合、KL 崩溃与训练不稳定,需以 KL 约束、定期刷新参考策略与早停兜底。

深度分析

SFT → DPO → RL 的三层对齐阶梯

对齐是一条能力递进的流水线:SFT 教模型「应该做什么」,DPO 教模型「在多个貌似合理的输出中偏好什么」,PPO/GRPO 教模型「如何为可验证的目标持续改进」。Qwen3-1.7B tool calling 案例展示了互补性:SFT 单独提升约 19 个百分点,DPO 再贡献约 10.5 个百分点——DPO 优化的正是 SFT 难以覆盖的边界情况。理论上,DPO 是对 RLHF 目标的静态近似:在 Bradley-Terry 偏好假设下推出闭式策略目标,以 KL 正则替代显式奖励模型;代价是无法探索新行为。当任务有可验证的正确性信号时,在线 RL 能解锁 DPO 无法触达的能力空间——GSM8K 实验显示 GRPO 效果随组内样本数非线性跃迁(0-shot 6% → 8-shot 41%),本质是模型学会了「生成多个解并比较优劣」的推理习惯。因此应避免两个错误方向:跳过 SFT 直接 RL,或明明有 verifiable reward 却只用静态 DPO。

PPO 与 GRPO 的取舍:critic 之重与组内相对优势

PPO 在 LLM 对齐中的根本困境是 critic:价值网络与策略同规模,训练它显存近乎翻倍,且 critic 偏差会传导到优势估计,成为训练不稳定的主要来源。GRPO 的解法是彻底去掉 critic——对同一 prompt 采样 G 个回答(通常 G=8-64),以组内均值与标准差归一化奖励,得到纯相对的优势估计,同时带来方差降低与类别平衡两个效果。但取舍同样明显:采样成本是 PPO 的 G 倍,生成常成训练瓶颈,需 vLLM 类高速推理与 MoE 架构摊薄成本;组内归一化依赖「组内有信息量」,整组全为 0 分时相对优势失去意义;GRPO 更擅长可验证任务,开放域对话依赖 learned reward model 时,PPO 的价值基线反而更稳健。因此二者是场景分工而非替代:RLVR 默认 GRPO,开放域偏好优化保留 PPO。工程上,GRPO 需同时驻留策略、参考、奖励三类模型,以 QLoRA 承载是资源受限环境的务实选择——奖励函数已知时,模型只需调整输出行为,低秩参数空间足够表达。

显存、数据格式与超参数的工程细节

TRL 微调的工程门槛集中在三个维度。显存方面,全参微调 7B 约需 60GB,LoRA 约 18GB,QLoRA 约 10GB——对 24GB 消费级显卡,QLoRA 是唯一可行的 7B 路径;GRPO 需驻留策略、参考、奖励三份权重且并行生成,显存预算应留出余量,配合 gradient checkpointing、bf16 混合精度与梯度累积使用。数据格式方面,SFT 需按 chat template 构造指令-回答对;DPO 需要 prompt + chosen + rejected 三元结构,chosen/rejected 应来自同一 prompt 的对比采样以保证可比性;GRPO 通常只需 prompt,回答由策略在线生成,配合规则化奖励(格式校验 0.5 分 + 正确性校验 1.0 分)即可训练。超参数方面,SFT 常用学习率 5e-5 量级配合 cosine schedule 与 warmup;DPO 学习率需降到 5e-7 量级,beta 取 0.1-0.5,过高退化为 SFT、过低则过拟合偏好数据;GRPO 重点调 G 值与 KL 惩罚系数,并每隔若干步刷新参考策略避免 KL 项失真。这些参数相互耦合,应以「小数据快速试错 → 达标后放大」的渐进策略推进。

奖励工程与失败模式:reward hacking 与 KL 控制

RL 阶段的真正难点不在算法而在奖励。reward hacking 是头号失败模式:模型会寻找奖励函数的漏洞而非完成任务——堆砌冗长输出迎合长度偏好、在格式上作弊、对评判模型谄媚(sycophancy)。缓解手段分三层:一是奖励可验证化,用规则、单元测试、符号求解器替代或叠加 learned reward;二是对 RM 保持怀疑——RM 也是模型,同样会被策略利用,需定期校准、多 RM 集成或交叉验证;三是 KL 控制,以对参考策略的 KL 散度作惩罚——DPO 的 beta 与 PPO/GRPO 的 KL 系数本质同源,都在「服从奖励」与「不偏离参考」之间找平衡。训练不稳定的应对同样关键:loss 尖峰与发散通常源于学习率过高、奖励未归一化或 KL 系数过小,应监控 KL 距离与生成多样性的趋势而非只看训练 loss;收敛判定基于独立 eval set,并以早停与 checkpoint 回滚作为最后防线。

实践启示

  1. 渐进式路线:先以 7B + LoRA + 10K tokens 小实验验证数据可行性,达标后再放大数据与模型规模,避免方向性错误造成算力浪费。
  2. 按任务选方法:偏好对齐默认 DPO;有 verifiable reward 的任务(数学、代码、tool calling)再上 GRPO/RLVR;开放域对话若需 RL,保留 PPO 的价值基线。
  3. GRPO 显存与组配置:用 QLoRA 承载策略与参考模型,G 从 8-16 起步、显存允许时增至 32-64;生成阶段接入高速推理服务,否则采样成为瓶颈。
  4. 奖励优先规则化:用「格式 + 正确性」双奖励替代单一稀疏奖励;监控 reward hacking 迹象(长度暴涨、格式作弊、谄媚),以 KL 距离作为健康指标。
  5. 超参参照已验证基线:SFT 学习率 5e-5 量级;DPO 学习率 5e-7 量级、beta 0.1-0.5;每 N 步刷新参考策略;以独立 eval set 判断收敛并用早停兜底。
  6. 记录与回滚:为每次实验保存 checkpoint 与完整配置;RL 训练易发散,可复现的回滚路径比单次 SOTA 更重要。

相关实体