lc:70

vLLM 为什么能加速生成?

注意VLLM是推理部署阶段的加速,提高吞吐率。
核心技术是 PagedAttention
传统 KV Cache 会给每个请求预分配一块连续显存,空间浪费严重(碎片化)。vLLM 借鉴操作系统虚拟内存的分页思想,把 KV Cache 切成小块动态分配,显存利用率大幅提升,从而支持更大 batch size。
在 GRPO 场景里,每步要对同一个 prompt 生成 G=4(或更多)个回复,生成阶段是最大瓶颈

梯度检查点为什么能节省显存

标准训练中,反向传播需要用到每一层的激活值(activations)来计算梯度。对于一个 L 层的 Transformer,前向传播会把所有层的激活值全部保留在显存里,显存消耗与层数成正比

梯度检查点的做法
它节省中间激活值,而不是模型参数本身。

维度 梯度检查点 梯度累积(Gradient Accumulation)
作用维度 模型的深度方向(层与层之间) 数据的批次方向(step 与 step 之间)
解决的问题 单次前向产生的激活值太多,撑爆显存 单个 batch 太小,等效 batch size 不够大
机制 丢弃中间层激活值,反向时按需重算 多个小 batch 的梯度叠加,攒够再 optimizer.step()
影响的是 峰值显存 等效 batch size / 梯度质量
二者不是同一个概念。
正向传播算loss,反向传播需要哪一层哪一个值,再按正常方式算出来,不存着。
检查点放得越密,显存越高、重算越少;放得越稀,显存越低、重算越多。

PPO DPO

维度 PPO DPO GRPO
更新的模型数 Actor + Critic(2 个) Actor(1 个) Actor(1 个)
冻结的模型数 Reference + Reward Model Reference Reference
Critic 的选取自由 有,可独立设计 无(已被解析消去) 无(用组内统计代替)
PPO和GRPO都是在线的
在线 vs 离线的本质区别
关键不在于"拿谁的输出做比较",而在于训练时回复 y 从哪里来
PPO:取 prompt x
2. 当前策略模型 π_θ 现场生成回复 y ← 在线
3. 奖励模型对 y 打分 → r
4. 用 r 更新 π_θ
5. π_θ 已经变了,下一步继续用新的 π_θ 生成
DPO:训练前(数据集制作阶段,与训练无关):
人类或另一个模型生成了 y_w(好回复)和 y_l(差回复)
标注员确认偏好:y_w > y_l
→ 打包成 dataset,冻结
训练第 t 步:
6. 从 dataset 取出固定的三元组 (x, y_w, y_l) ← 离线
7. 分别喂给 π_θ 和 π_ref,只做前向传播
8. 计算 log ratio,更新 π_θ
9. π_θ 更新了,但 dataset 里的 y_w, y_l 永远不变

DPO问题:当 πθ​ 训练到后期,分布已经漂移,模型在学习"其他人犯过的错误"而非"自己现在会犯的错误",存在 distribution shift

PPO 的优势:每步都用当前策略采样,训练信号始终与当前模型分布对齐,但代价是必须在训练中反复做生成(推理),计算开销大

SFT RLHF 本质区别

核心差异在于损失函数告诉模型"学什么"的方式

SFT 的 loss 是标准的交叉熵(语言模型 loss)要求模型的输出分布完全贴近训练数据里给定的那条回复,每个 token 都要对准。本质是行为克隆(Behavior Cloning)——告诉模型"你就照着这个写"。

PPO/DPO 的 loss 本质上是在优化跨回复的相对关系

PPO/GRPO:用奖励信号缩放每条回复的 log-prob 梯度,好回复梯度加强,坏回复梯度抑制
SFT 是单点监督:告诉模型"这个输出是对的,往这里拟合"。
RLHF 是对比/序数监督:告诉模型"这个输出比那个更好/更差,调整相对概率"——这个信号在 SFT 数据里是隐式缺失的。

DPO 的信号是离散序数(yw≻yl,只知道谁更好,不知道好多少),对的形式天然就是成对的。
PPO 的信号是连续标量(reward model 输出一个实数分),好多少/差多少都有量化,不需要成对,单条回复就能打分。

GRPO 在我的项目里不是神经网络奖励模型,而是规则函数(答案对不对,程序直接判断)。这类设计叫 RLVR(RL with Verifiable Rewards),是 DeepSeek-R1-Zero 的核心创新点之一:完全绕开了奖励模型可能被 reward hacking 的问题,信号来源是客观事实而非模型打分。

过两天可以去看看alibi的做法,RoPE我刚刚才注意到原来就是jianlin su 大佬提出的,给跪了,之前一直看他的博客,但是没注意到他就是提出者。。。。。。