type
Post
status
Published
date
Jun 12, 2025
slug
trl-learning-notes
summary
我从学习者角度整理 Hugging Face TRL:把它理解成大模型后训练工具箱,并梳理 SFT、DPO、GRPO、Reward Modeling 和 PPO 的学习路线。
tags
LLM
训练
PEFT
category
LLM
icon
password
这篇是我重新整理 TRL 时的学习笔记。最开始我只保存了 Hugging Face TRL 的 GitHub 链接,后来才意识到它不是一个单纯的 RLHF 工具包,而是围绕大模型后训练建立起来的一套完整训练入口:SFT、DPO、GRPO、Reward Modeling、PPO 等方法都可以在同一个生态里串起来。

🧭 一、我先把 TRL 理解成“后训练工具箱”
我以前看到 TRL 的全称 Transformers Reinforcement Learning,会下意识把它和 RLHF、PPO 绑定在一起。但真正看文档后,我发现现在的 TRL 更像是 Hugging Face 生态里的后训练工具箱。
它的重点不是只做强化学习,而是帮助我在预训练模型之后继续调整模型行为。这个阶段可能包括:
- SFT:用高质量指令数据让模型先学会任务格式。
- Reward Modeling:训练奖励模型,让系统能评价回答好坏。
- DPO:直接用偏好数据优化模型,不一定先显式训练奖励模型。
- GRPO:面向推理模型和可验证任务的一类优化方式。
- PPO / RLOO 等在线方法:在奖励信号下继续优化策略模型。
这样理解后,TRL 对我来说就不只是一个库,而是一个观察大模型训练后半程的窗口。
🧱 二、我会怎么拆 TRL 的学习路线
如果从零开始学,我不会一上来就碰 PPO。PPO 涉及策略模型、参考模型、奖励模型、KL 约束、采样和训练稳定性,对初学者来说概念太密。
我更适合按下面这条路线走:
- 先学 SFTTrainer:理解数据格式、tokenizer、chat template、训练参数和评测输出。
- 再学 DPOTrainer:理解
chosen/rejected偏好样本,以及为什么可以不用显式 reward model。
- 然后看 RewardTrainer:补上奖励模型的概念,理解传统 RLHF 的中间层。
- 最后再看 GRPO / PPO:把模型生成、奖励函数、策略更新和训练稳定性串起来。
这条路线更像从“确定答案的数据”走向“偏好选择的数据”,最后再走向“模型边生成边优化”。
🧪 三、SFT 是我最适合先动手的入口
TRL Quickstart 里最直观的例子就是
SFTTrainer。它让我看到,很多后训练实验其实不需要一开始就搭复杂框架:准备数据集、指定模型、启动 trainer,就能跑出一个最小闭环。我现在会把 SFT 看成后训练的地基。它不解决所有对齐问题,但它能先让模型知道我要什么格式、什么任务、什么表达方式。没有这个地基,后面的 DPO 或 RLHF 很容易变成在不稳定基础上继续调参。
⚖️ 四、DPO 让我重新理解“偏好数据”
DPO 对我最大的启发是:偏好学习不一定非要先训练一个奖励模型。它直接使用同一个 prompt 下的
chosen 和 rejected 回答,让模型提高偏好回答相对于非偏好回答的概率。这件事让我更容易理解为什么很多模型对齐工作会特别重视偏好数据。因为人类很多判断不是“标准答案是什么”,而是“两个回答里哪个更好”。这类数据天然适合表达风格、安全性、帮助性和推理质量上的差异。
我也会提醒自己:DPO 看起来比 PPO 简洁,但它并不意味着数据质量不重要。偏好对如果标注混乱,模型只会更稳定地学到错误偏好。
🚀 五、GRPO 为什么最近更值得关注
随着 DeepSeek-R1 这类推理模型受到关注,GRPO 也变得更常被讨论。它吸引我的地方在于:它不完全依赖传统 reward model,而是更适合结合可验证任务、规则奖励和多样本比较。
我会把 GRPO 放在推理模型训练语境里理解:模型对同一道题生成多条解法,然后根据结果、格式、过程或规则奖励来更新。这比单条回答的监督学习更接近“模型自己探索,再根据反馈调整”。
但我也不会把 GRPO 神化。它依然需要好的任务设计、奖励函数、采样策略和训练资源。对个人学习来说,先理解它在 TRL 里的 trainer 接口和数据流,比盲目复现大模型训练更现实。
🧩 六、TRL 和 Hugging Face 生态的关系
TRL 的价值还在于它不是孤立工具。它和 Hugging Face 的
transformers、datasets、accelerate、peft、vLLM、DeepSpeed 等生态连接得很紧。这对我学习很重要。因为真实训练不是只有一个 loss:
- 数据要能加载和格式化。
- 模型要能用 Transformers 统一加载。
- 显存不够时要考虑 PEFT、LoRA、量化和梯度检查点。
- 训练规模变大后要考虑分布式、DeepSpeed 或 vLLM 加速采样。
- 训练后还要能保存、推送、评测和部署。
所以我现在看 TRL,不会只看某个 trainer 的参数,而会把它放进完整训练流水线里看。
🧠 七、这次学习后的结论
我对 TRL 的阶段性理解是:它把大模型后训练中最常见的方法做成了相对统一的工程接口。对学习者来说,它的意义不是让我立刻训练出一个强模型,而是让我能用可运行的代码理解 SFT、DPO、GRPO、Reward Modeling 和 RLHF 之间的关系。
下一步我更想做一个小实验:先用小模型跑 SFT,再用一小批偏好数据跑 DPO,然后比较模型回答风格的变化。这个实验规模不大,但能帮我真正理解“后训练改变模型行为”这件事。
📎 参考资料
我接下来会把 TRL 当成后训练学习路线的主线工具:先跑通最小 SFT,再理解 DPO,最后再看 GRPO 和 PPO 这类更复杂的优化方法。
- 作者:老王TechTalk
- 链接:https://www.illusionjourney.com/article/trl-learning-notes
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章








