资料摘要:personal chatgpt 16 — trl 基础介绍:reward model,ppotrainer
本讲由真实视频转录与作者 notebook/代码交叉整理。原始层:🔒 带时间戳视频转录;课程总览:personal chatgpt — LLMs 实践系列。
本讲把 TRL 放到 RLHF 流程中理解:SFT 先得到可用策略,偏好数据训练 Reward Model,PPO 阶段同时使用 active model、reference model 和 reward signal。Notebook 重点演示 AutoModelForCausalLMWithValueHead、PPOConfig、PPOTrainer,并用 GPT-2 和固定标量 reward 完成一次最小 PPO 更新。
1. TRL 的三个训练入口
Section titled “1. TRL 的三个训练入口”课程概览 SFTTrainer、Reward Model/RewardTrainer 相关流程和 PPOTrainer。这里的重点不是三者具有完全相同的接口,而是它们分别覆盖 RLHF 的不同阶段。
2. Value Head
Section titled “2. Value Head”AutoModelForCausalLMWithValueHead 在语言模型上增加每 token 一个标量的 value 输出。Notebook 注释的返回形状为:
lm_logits:(batch_size, seq_len, vocab_size)value:(batch_size, seq_len)
value head 连接在最后 hidden states 上,用来估计状态/前缀的价值,为 PPO 优势估计提供基线。它不同于 reward model:reward model 对完整响应给偏好分数,value head 是 active policy 训练中的 critic 组件。
3. RLHF/PPO 中的三个模型角色
Section titled “3. RLHF/PPO 中的三个模型角色”- active model / policy: 实际被 PPO 更新的模型;
- reference model: 冻结参照,用于 KL 约束,防止策略偏离过远;
- reward model: 根据偏好对生成响应打分。
Notebook 为简化演示没有加载真实 reward model,而直接使用 torch.tensor(1.0)。
4. 最小 PPO 流程
Section titled “4. 最小 PPO 流程”课程依次进行:初始化 active/ref GPT-2 → tokenize query → 生成 response → 定义 reward → ppo_trainer.step(query, response, reward)。这种示例验证接口流转,不证明模型通过一次固定正奖励学到了有意义偏好。
公式 / 代码
Section titled “公式 / 代码”model = AutoModelForCausalLMWithValueHead.from_pretrained("gpt2")model_ref = AutoModelForCausalLMWithValueHead.from_pretrained("gpt2")config = PPOConfig(batch_size=1)ppo_trainer = PPOTrainer(config, model, model_ref, tokenizer)
response = ppo_trainer.generate([query_tensor[0]], return_prompt=True, **generation_kwargs)reward = [torch.tensor(1.0, device=model.pretrained_model.device)]train_stats = ppo_trainer.step([query_tensor[0]], [response[0]], reward)RLHF 中常用的奖励可概括为:
该式表达课程对 reward 与 reference/KL 角色的说明;Notebook 没有手写完整 PPO 目标。
| 时间 | 内容 |
|---|---|
| 00:23 | TRL 概览与三个 trainer 入口 |
| 02:01 | 引入 Value Head |
| 03:16 | 从 human feedback 到 reward model |
| 04:13 | 说明 KL 惩罚与 PPO 更新 |
| 05:18 | active、reference、reward 三个模型角色 |
| 06:23 | 用 GPT-2 初始化 active/ref model |
| 10:00 | query 与 response 张量 |
| 12:00 左右 | 通过 trainer 生成 response |
| 15:36 | reference 版本用于约束策略 |
| 16:25 | value head 接在 last hidden state 上 |
- 运行标签:conditional。 需要下载两份 GPT-2 包装模型、安装 TRL/Transformers/PyTorch;视频环境使用 CUDA。
source_bundle缺少 5 张相对图片;主仓库相应imgs/文件存在。- 旧版
PPOTrainer(config, model, model_ref, tokenizer)和generate/step参数签名存在较强版本漂移风险,依赖未锁定。 - 固定 reward=1.0 只是接口演示,不是 reward model 训练或有效的 RLHF 实验。
- Notebook 有一次参数更新副作用;本次未执行。
与前后讲关系
Section titled “与前后讲关系”- 承接第 12、14 讲: SFTTrainer 是 TRL/RLHF 的第一阶段入口。
- 补充第 15 讲: 第 15 讲讲基础推理,本讲解释如何在 SFT 后用偏好奖励进一步调整策略。
- 引出后续对齐知识: Value Head、reference KL 与 reward model 是理解 PPO 式 RLHF 的关键角色,但课程此处未推导完整 PPO 数学。
- 第 17 讲起: 课程重新回到 Llama 2 架构源码。
- active model、reference model、reward model 在 PPO 式 RLHF 中各自做什么?
- Value Head 与 Reward Model 为什么不能混为一谈?
- Notebook 中固定
reward=1.0能验证什么,又不能验证什么? - KL 惩罚为什么需要 reference model?
- 哪些代码最可能因 TRL 版本升级而需要重写?
- 视频:trl 基础介绍:reward model,ppotrainer
- 转录:🔒 personal chatgpt 16 视频转录
- 课件 / 代码:🔒 trl_basics.ipynb
- 滴答清单抓取时学习状态:已完成。
- 视频正文采用自动语音识别;关键术语已用标题、notebook 与源码校正,无法确认的口语细节不扩写。
- notebook 未执行的 CUDA、权重下载、训练或外部 API 单元,不表述为已复现实验。