跳转至

十八:训推不一致自测题答案

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484137&idx=1&sn=17eb14577bdec9d2171cd0d038c941c3&chksm=f01eb190c7693886849feaf13b85a4b15f45cc42344e3bac61c6bd46b9accdec9406e0b505b6#rd

参考资料

  • BF16 比 FP16 更优?:https://arxiv.org/abs/2510.26788

  • R3 原论文:https://arxiv.org/abs/2510.11370

  • GSPO 原论文:https://arxiv.org/abs/2507.18071

  • 训推不一致总结:https://github.com/zhaochenyang20/Awesome-ML-SYS-Tutorial/blob/main/rlhf/slime/mismatch/blog-cn.md

  • vLLM 文档:https://docs.vllm.ai/

  • SGLang 文档:https://docs.sglang.ai/

评分标准

  • 合格:能定义训推不一致,知道 rollout/training logprob mismatch、ratio/KL 失真和基本缓解方法。

  • 良好:能解释 BF16/FP16、kernel、mask、position id、解码策略、MoE router 等来源。

  • 优秀:能给出系统化排错流程,并能联系 PPO、GRPO、GSPO、DAPO、SAPO 说明影响和缓解。

一、基本概念

1. 什么是训推不一致?

训推不一致是训练阶段优化的分布、计算路径、输入格式或策略定义,与推理/采样阶段实际使用的行为不一致,导致训练目标和真实部署行为之间出现偏差。

2. 为什么训推不一致在大模型中很常见?

大模型训练和推理常用不同框架、dtype、attention kernel、并行策略、模板、解码参数和缓存格式。系统复杂度越高,不一致来源越多。

3. 训推不一致和普通分布偏移有什么关系?

分布偏移是训推不一致的一类。训推不一致还包括数值路径、kernel、mask、logprob 语义等计算层面的不一致。

4. 请给出三个非 RL 场景中的训推不一致例子。

训练时 teacher forcing、推理时自回归;训练图像有数据增强、推理无增强;训练使用固定模板,线上 prompt 模板变化。

5. 请给出三个 LLM RL 场景中的训推不一致例子。

rollout 用 vLLM、training 用 PyTorch 导致 logprob 不同;rollout 用 FP16 KV cache、training 用 BF16;rollout 和 training 的 response mask 不一致。

6. 为什么训推不一致不一定会立刻体现在训练 loss 上?

训练 loss 只反映训练端计算图上的目标是否下降。如果训练端目标本身和推理行为不一致,loss 可以下降但线上效果变差。

7. 训推不一致和线上效果差之间是什么关系?

训推不一致会让模型优化错误目标或错误分布,导致离线训练指标好但真实推理时质量、格式、长度或任务成功率下降。

8. 面试中如何用一句话概括训推不一致?

训练时模型被优化的行为,与推理时模型实际执行的行为不是同一个问题。

二、传统序列建模与 Exposure Bias

9. 什么是 exposure bias?

训练时模型基于真实历史 token 预测下一个 token,推理时基于自己生成的历史继续生成,两种历史分布不一致,错误会累积。

10. 训练时 teacher forcing 和推理时自回归生成有什么区别?

teacher forcing 条件是 ground-truth prefix;自回归生成条件是 model-generated prefix。

11. 为什么生成模型推理时错误会累积?

一旦前面生成错误,后续上下文偏离训练分布,模型在没训练过的状态上继续预测,可能引发更多错误。

12. exposure bias 和 RLHF 中的训推不一致有什么相同点?

都体现为训练时看到的状态分布和推理时真实状态分布不同。

13. exposure bias 和 rollout/training logprob mismatch 有什么不同点?

exposure bias 主要是数据/状态分布差异;logprob mismatch 是同一 token 序列在不同系统路径下概率计算不一致。

14. scheduled sampling 试图缓解什么问题?

它在训练时混入模型生成的历史 token,试图让训练状态更接近推理状态。

15. 为什么只解决 exposure bias 不等于解决 LLM RL 的训推不一致?

LLM RL 还涉及 rollout/training 引擎、dtype、kernel、old logp、KL、ratio 和 reward 计算一致性。

16. 多轮对话中历史上下文变化如何导致训推不一致?

训练可能使用清洗后的理想历史,线上用户会打断、纠错、改变意图,模型面临的上下文分布不同。

三、LLM RL 中的 Logprob Mismatch

17. LLM RL 中 rollout 阶段通常做什么?

用当前 policy 生成 responses,记录 token、old logprob、reward 输入、长度、mask 等 rollout 数据。

18. LLM RL 中 training 阶段通常做什么?

重新前向计算 new logprob、ref logprob、value 或 advantage,并计算 PPO/GRPO/GSPO 等 loss 更新模型。

19. 什么是 logprob mismatch?

同一模型、同一 prompt、同一 response,在 rollout engine 和 training engine 中计算出的 token logprob 不一致。

20. 为什么同一 prompt/response 在 rollout engine 和 training engine 中 logprob 可能不同?

dtype、kernel、KV cache、position id、padding、template、并行切分、logits processor 和量化路径都可能不同。

21. 请写出 token-level logprob difference 的公式。

delta_t = logp_train_t - logp_rollout_t

22. PPO ratio 为什么对 old logprob 的正确性敏感?

PPO ratio 是:

r_t = exp(logp_new_t - logp_old_t)
如果 old logp 不是真实采样策略概率,ratio 就没有正确的 importance sampling 含义。

23. 如果 old logp 来自 rollout engine,new logp 来自 training engine,会有什么风险?

ratio 会混入系统误差,不只反映策略参数变化,可能导致 clip fraction、KL 和 policy loss 失真。

24. 为什么 logprob mismatch 会被 exp 放大到 ratio mismatch?

ratio 是 logprob 差的指数。小的 logprob 偏差经过指数可能变成明显的比例偏差。

25. sequence-level logprob mismatch 如何计算?

Delta_seq = sum_t (logp_train_t - logp_rollout_t)
也可做长度归一化:

Delta_seq_avg = Delta_seq / T

26. 为什么长序列会放大 token-level 小误差?

长序列需要累加很多 token 的 logprob 差,小偏差会随长度累积,影响 sequence ratio 和 KL。

四、数值精度、Kernel 与系统栈

27. FP16 和 BF16 的主要格式差异是什么?

FP16 有 5 位指数、10 位尾数;BF16 有 8 位指数、7 位尾数。BF16 动态范围更大,FP16 局部精度更高。

28. 为什么 BF16 在大模型训练中通常更稳定?

BF16 指数范围接近 FP32,更不容易 overflow/underflow,适合大范围激活和梯度。

29. FP16 在什么情况下可能出现 overflow/underflow 问题?

梯度或激活很大时 overflow,很小概率或梯度时 underflow,因此 FP16 训练常需要 loss scaling。

30. BF16/FP16 不一致如何影响 logits 和 logprob?

不同舍入、累积和动态范围会改变 logits,进而改变 softmax、logsumexp 和选中 token 的 logprob。

31. 为什么 softmax/logsumexp 对数值差异敏感?

softmax 是指数归一化,logsumexp 聚合所有 logits。小 logits 差异可能改变概率分布,尤其在 top tokens 接近时。

32. 不同 attention kernel 为什么可能导致训推不一致?

不同 kernel 的计算顺序、累积精度、mask 处理和数值近似不同,输出 hidden states 和 logits 会有差异。

33. KV cache 精度为什么会影响 rollout logprob?

自回归生成依赖历史 key/value。如果 KV cache 用低精度存储,后续 token 的 attention 结果和 logits 会变化。

34. tensor parallel 或 pipeline parallel 切分不同会带来什么风险?

不同切分可能改变归约顺序、通信精度和 kernel 路径,导致数值结果微小不同,MoE 中还可能影响路由。

35. fused RMSNorm 或 fused logits processor 可能如何造成差异?

融合实现可能使用不同计算顺序或近似;logits processor 若训练端缺失,会让采样分布与训练概率语义不一致。

36. 为什么“权重完全一样”仍然可能出现 logprob mismatch?

因为前向计算路径、dtype、kernel、mask、position id、KV cache 和解码处理器都可能不同。

五、模板、Mask、Position 与解码

37. chat template 不一致会导致什么问题?

模型实际条件上下文不同,同一个 response 的条件概率不再可比较。

38. prompt token 被计入 RL loss 会造成什么后果?

模型会被错误优化去生成用户 prompt 或系统模板,policy gradient 语义错误。

39. padding token 参与 logprob/KL 计算会造成什么后果?

无意义 token 污染 loss、KL、长度统计和 advantage,导致训练不稳定。

40. left padding 和 right padding 为什么可能影响 position id?

如果 position id 处理不一致,相同有效 token 会得到不同位置编码,logits 会变化。

41. EOS 和 stop words 处理不一致会造成什么问题?

response 边界不同,reward、mask、logprob 求和范围不同,导致 loss 不一致。

42. response 被截断后 reward 和 mask 没对齐会造成什么问题?

模型可能为未计入或错误计入的 token 接收奖励,过长惩罚和终止价值也会错位。

43. temperature、top-k、top-p 与训推不一致有什么关系?

这些改变采样分布。如果 old logp 计算没有反映实际截断/温度后的分布,importance ratio 语义不正确。

44. top-p 截断采样下 old logp 的语义为什么需要明确?

需要明确 old logp 是原始模型分布概率,还是 top-p 截断后重归一化分布概率。两者不同。

45. repetition penalty 如果 rollout 用了而 training 没用,会发生什么?

采样动作来自惩罚后的分布,但训练 logp 按未惩罚分布计算,old logp 与行为策略不匹配。

46. 为什么部署评估必须使用真实 inference stack?

因为线上使用的 dtype、kernel、模板、解码和缓存才决定真实用户体验。训练端评估不能覆盖所有系统差异。

六、MoE、R3 与 GSPO

47. MoE 模型中的 router 起什么作用?

router 根据 token hidden state 选择一个或多个 experts,决定 token 的前向路径。

48. 为什么 MoE router 对数值扰动敏感?

router 通常做 top-k 选择,如果多个 expert logits 接近,小数值扰动就可能改变专家选择。

49. router 行为不一致如何放大 logprob mismatch?

expert 路由变了,后续 FFN 参数路径不同,hidden state 和 logits 差异可能显著增大。

50. R3 相关工作主要关注什么问题?

R3 关注 MoE/RL 训练中 router 相关的训推不一致和稳定性问题,试图让路由行为与训练目标更一致。

51. MoE 中 auxiliary load balancing loss 和 RL objective 可能有什么张力?

load balancing 鼓励专家均衡使用,RL objective 鼓励高奖励输出。两者可能对 router 产生不同方向的压力。

52. GSPO 的 sequence-level ratio 如何定义?

常见理解:

r_seq = exp(1/T * sum_t (logp_new_t - logp_old_t))
用整条序列的平均 log ratio 表示序列级概率变化。

53. GSPO 为什么能缓解 token-level ratio 高方差?

它聚合整条序列的 log ratio,减少单个异常 token 对更新的支配,使优化信号更平滑。

54. GSPO 能否彻底消除训推不一致?为什么?

不能。GSPO 缓解 ratio 高方差,但如果底层 logp 本身错了,sequence ratio 仍然基于错误输入。

55. GSPO 为什么特别适合讨论 MoE/长序列 RL 稳定性?

MoE token 路由和长序列 token ratio 都容易产生局部高方差。sequence-level 处理能提升整体一致性。

56. R3、GSPO 和 dtype 对齐分别从哪些层面缓解不一致?

R3 关注 router/MoE 路径一致性;GSPO 关注优化目标 ratio 粒度;dtype 对齐关注数值计算路径一致性。

七、度量、监控与缓解

57. 如何度量 token-level logprob mismatch?

固定同一模型、prompt、response,分别计算 rollout/training logp,统计 delta_t 的均值、绝对值、分位数和最大值。

58. 如何度量 sequence-level logprob mismatch?

累加 token 差异:

Delta_seq = sum_t delta_t
并按长度归一化比较不同 response。

59. 训练中应该监控哪些 ratio 相关指标?

ratio 均值、方差、分位数、最大值、clip fraction、sequence ratio、ratio 与 reward/length 的相关性。

60. clip fraction 异常升高可能说明什么?

策略更新过大、old logp 不准、logprob mismatch、学习率过高或数据过旧。

61. approx KL 异常和训推不一致有什么关系?

approx KL 依赖 logp 差。如果 logp 计算路径不一致,KL 会失真,无法准确反映策略偏离。

62. 什么是 true on-policy?它为什么重要?

采样数据和训练更新使用同一个真实策略分布。它保证 policy gradient 和 importance ratio 的语义正确。

63. 为什么常建议在 training engine 中 recompute old logp?

这样 old/new logp 来自同一计算图和数值路径,ratio 更能反映策略参数变化,而不是系统差异。

64. TIS 的基本思想是什么?

Trajectory-level Importance Sampling 用整条轨迹的重要性权重修正采样分布和目标分布不一致。

65. MIS 的基本思想是什么?

在更细粒度,如 minibatch 或 token 层面对分布差异进行重要性修正,降低 mismatch 或 off-policy 偏差。

66. importance sampling 能完全解决训推不一致吗?为什么?

不能。IS 可以修正分布权重,但如果 logp 本身计算错误、mask 错误或模板不同,修正基础就不可靠,还可能带来高方差。

八、综合排错与设计

67. 请设计一个排查 rollout/training logprob mismatch 的步骤清单。

固定 checkpoint、prompt、response;确认 token id 完全相同;比较 attention mask、position id、dtype、kernel、KV cache、模板、EOS;逐 token 比较 logits/logp;逐项关闭量化和 fused kernel;记录 mismatch 分布。

68. 如果训练 reward 上升但线上推理效果下降,你会如何排查训推不一致?

检查线上模板/解码是否和训练一致;比较线上推理栈与训练栈 logprob;检查 KL、长度、mask、reward hacking;用真实 inference stack 做离线评估。

69. 如果同一 checkpoint 在 vLLM 和 PyTorch 中输出不同 logprob,你会检查哪些因素?

检查 tokenizer、chat template、position id、dtype、KV cache dtype、attention kernel、sampling processor、parallel 配置、EOS/stop、padding 和量化。

70. 请完整说明 PPO、GRPO、GSPO、DAPO、SAPO 中训推不一致分别会如何影响训练,以及各自有什么缓解思路。

PPO 依赖 exp(new_logp-old_logp),old logp 错会直接破坏 ratio 和 clipping。GRPO 同样依赖 token ratio,还会影响组内 advantage 的有效更新。GSPO 用 sequence-level ratio 缓解 token 级异常,但仍需 logp 对齐。DAPO 通过 dynamic sampling、token-level loss、clip-higher 和长度 shaping 提高有效训练,但不能替代系统一致性。SAPO 用 soft gate 平滑 off-policy 更新,降低 hard clipping 粗糙性。所有方法都需要对齐 tokenizer、模板、dtype、kernel、mask,并监控 logprob mismatch。

            预览时标签不可点




































<div class="