论文精读

精读:SFT-then-RL 被 Bug 偷走的胜利

揭示 DeepSpeed 与 OpenRLHF 中的 SFT 训练 Bug 如何系统性压低基线,导致混合策略方法的改进被严重高估

论文: SFT-then-RL Outperforms Mixed-Policy Methods for LLM Reasoning
作者: Alexis Limozin, Eduard Durech, Torsten Hoefler, Imanol Schlag, Valentina Pyatkin
arXiv: 2604.23747
LLM推理 RL训练 SFT DeepSpeed OpenRLHF 混合策略 基线Bug 数学推理

1 论文概览

一句话总结:近半年来多篇声称”混合 SFT+RL 训练优于 SFT→RL 流水线”的顶会论文,其结论建立在被 Bug 侵蚀的基线之上——修复 Bug 后,经典 SFT→RL 流水线在数学推理上反超所有混合策略方法 +3.8~22.2 分。

核心问题:为什么近期涌现的混合策略方法(LUFFY、ReLIFT、SRFT 等)一致报告自己超越了标准 SFT→RL 流水线?是方法论真的更强,还是基线本身出了问题?

主要贡献:

  1. 发现两个关键 SFT Bug:DeepSpeed CPU-offloaded 优化器在梯度累积时静默丢弃中间 micro-batch(影响 TRL、OpenRLHF、Llama-Factory);OpenRLHF 的 loss 聚合将 mini-batch 均值再取均值,而非全局 token 级均值(影响 Llama-Factory 等)
  2. 量化 Bug 影响:两个 Bug 合计压低 SFT 性能高达 5.7 分,其中优化器 Bug 占 ~90%(5.1 分)
  3. 修正后 SFT→RL 反超所有混合策略:Qwen2.5-Math-7B 上 +3.8 分,Llama-3.1-8B 上 +22.2 分
  4. 效率发现:仅 50 步 RL 的截断变体即可超越所有混合策略方法,且 FLOPs 仅为 LUFFY 的 ~55%
  5. 社区警示:这些 Bug 影响的是通用 SFT 流水线,不仅限于混合策略对比实验,可能波及其他依赖同一框架的研究领域

2 方法详解

架构/方法概述

论文的核心方法论并非提出新架构,而是审计 + 复现 + 消融——对 LUFFY、ReLIFT、SRFT、Prefix-RFT、HPT 五种混合策略方法进行系统性复现,追踪其 SFT 基线被压低的根因。

训练流水线遵循经典范式:

  1. SFT 阶段:在 OpenR1-Math-46k-8192 数据集上,使用 DeepSeek-R1 生成的 off-policy 推理轨迹进行监督微调
  2. RL 阶段:基于 GRPO(Group Relative Policy Optimization)进行强化学习,使用非对称裁剪(ε_low=0.2, ε_high=0.28),无 KL 项,无长度归一化

Bug 1:DeepSpeed CPU-Offloaded 优化器 Bug

这是整篇论文的”主角”。Bug 位于 DeepSpeed ZeRO Stage 1/2 的 CPU-offloaded Adam 优化器中:

  • 根因:copy_gradients_to_cpu() 函数被放在 if micro_step_id == 0 的 else 分支内,意味着只有第一个 micro-batch 的梯度会被拷贝到 CPU。后续 micro-batch 在 GPU 上正确累积,但从未触发向 CPU 的拷贝
  • 后果:CPU 侧的优化器在下一次完整优化步骤时,只能看到第一个 micro-batch 的梯度——相当于用 1/N 的数据做了一次梯度下降
  • 引入时间:2024 年 9 月,DeepSpeed PR #6550
  • 关键不对称性:混合策略方法本身在 verl 框架中实现(不使用 DeepSpeed),因此不受此 Bug 影响。只有它们对比的 SFT 基线被影响——这形成了一种系统性的基线压低

“The offloading code copies gradients to CPU inside an else branch that executes only when micro_step_id == 0 (i.e., the first micro-batch). Intermediate micro-batches accumulate gradients on GPU correctly but never trigger a copy to CPU.” —— 论文 Section 3

Bug 2:OpenRLHF Loss 聚合 Bug

  • 根因:计算的是 mini-batch 均值的均值,而非全局 token 级均值。由于不同 mini-batch 包含的 response token 数量不同,等权重取均值会扭曲损失信号
  • 后果:训练不稳定,性能下降约 0.6 分
  • 影响范围:OpenRLHF、Llama-Factory、verl 早期版本(verl 已于 2025 年 11 月修复)

与基线方法的区别

论文的关键区别在于:它不是在原方法上做增量改进,而是在质疑整个比较的公平性。混合策略方法的创新点在于将 SFT 信号和 RL 信号交织或混合——但它们宣称的改进,可能只是 Bug 导致的基线幻觉。

3 实验结果

主要指标

在 Qwen2.5-Math-7B 上的核心对比(ID 基准均值):

方法Avg IDAvg OOD
SFT→RL(修正后)57.059.9
SRFT(报告值)53.262.5
HPT(报告值)52.759.0
Prefix-RFT(报告值)51.858.4
LUFFY(复现)46.358.0
ReLIFT(复现)48.856.2

修正后的 SFT→RL 在 ID 任务上以 +3.8 分领先第二名 SRFT。

Bug 消融:量化”偷走”的分数

这是论文最关键的实验——逐个修复 Bug 观察性能恢复:

SFT 配置平均分
OpenRLHF 基线(两个 Bug 都在)48.3
仅修 loss 聚合 Bug49.1(+0.8)
仅修优化器 Bug53.4(+5.1)
两个都修54.0(+5.7)
verl(独立验证)53.8

优化器 Bug 贡献了 ~90% 的性能损失(5.1/5.7),loss 聚合 Bug 贡献 ~10%。

Llama-3.1-8B:差距更加触目惊心

在通用模型 Llama-3.1-8B 上,修正后的 SFT→RL 以 43.7 分碾压所有混合策略方法(最高仅 21.5 分),领先 +22.2 分。这意味着 SFT 对缺乏领域预训练的通用模型至关重要——没有正确的 SFT,RL 从稀疏奖励中学习极其困难。

之前有论文声称 “Llama-3.1-8B 无法遵循 Qwen 的系统提示”,但论文发现这只是 SFT 训练不足的症状——用修正后的 SFT 训练,Llama 可以完全遵循完整提示。

截断 RL:50 步就够了

仅 50 步 RL 就能达到 55.6 分(vs 500 步的 57.0 分),差距仅 1.4 分,且已超越所有混合策略方法。FLOPs 方面,50 步变体仅用 3.63×10¹⁹ FLOPs,是 LUFFY(6.65×10¹⁹)的 ~55%,ReLIFT(8.76×10¹⁹)的 ~41%。

训练动态分析

  • 奖励曲线:SFT→RL 的 RL 阶段起始奖励就超过 80%(Qwen),因为 SFT 已内化专家知识。LUFFY 和 ReLIFT 在 Llama 上 500 步后奖励仍不超过 30%
  • 响应长度:SFT→RL 从 ~5k token 起步,RL 阶段逐渐收敛到 ~3.7k token(修剪冗余)。混合策略方法则长度逐渐增加——先前被解读为”持续探索”的高熵现象,可能只是策略尚未收敛的信号

4 个人分析

亮点

  1. 审计思维而非增量思维:在”方法 A 比方法 B 好 X%“成为 ML 论文标准范式的今天,这篇论文做了一件更基本的事——验证比较的公平性。这种”对基础设施本身的质疑”极其稀缺且必要
  2. Bug 追踪的工程深度:不是简单发现”有 Bug”,而是精确定位到 else 分支、量化每个 Bug 的独立贡献、在多个框架间交叉验证,展现了严谨的工程分析能力
  3. 不对称性洞察:混合策略方法用 verl(无 Bug),SFT 基线用 DeepSpeed/OpenRLHF(有 Bug),这种框架选择的不对称性是系统性基线压低的根因——单看任何一篇论文的实验设计都”合理”,但合在一起就形成了幻觉
  4. 效率论据的翻转:混合策略方法声称自己是更高效的训练范式,但修正基线后发现,SFT→RL 即使只用 50 步 RL、一半的 FLOPs 也能赢

局限性

  1. 领域单一:仅在数学推理(Qwen2.5-Math-7B、Llama-3.1-8B)上验证。代码生成、通用推理等领域是否有类似现象尚不清楚
  2. 模型规模有限:最大 8B 参数,尚未验证 70B+ 模型上的表现。在更大规模下,混合策略是否有独特优势?
  3. 未排除”修正基线 + 混合策略”的组合:论文证明了混合策略方法在 Bug 基线上获得的增益不成立,但未测试”在修正后的 SFT 基线上再叠加混合策略”是否还能获得额外提升——作者也承认了这一点
  4. 部分方法复现不完整:ReLIFT 和 HPT 的精确 SFT 配置无法完全验证

对大模型领域的影响

  1. 方法论层面的警示:这是一记响亮的警钟——当多个独立研究组报告一致的发现时,共识不等于真理。如果底层基础设施有 Bug,“可复现的错误”比”不可复现的正确”更具误导性
  2. SFT→RL 范式的重新确认:在 Bug 被修复后,经典流水线的有效性被重新确立。SFT 提供密集的初始信号,RL 在此基础上精炼——这个直觉比混合策略的”同时学习”更符合课程学习的精神
  3. 框架多样性的必要性:论文最深刻的结论可能是——单一框架的垄断是风险的温床。DeepSpeed 的 Bug 影响了 TRL、OpenRLHF、Llama-Factory 三个下游框架,形成了”Bug 的级联传播”。verl 作为独立实现的交叉验证才让问题浮出水面
  4. 对已发表论文的连锁影响:使用受影响框架的 SFT 基线的研究可能不止于混合策略方法——任何依赖 DeepSpeed CPU-offloaded 优化器进行 SFT 的工作都可能需要重新审视

5 实践启示

可以借鉴的技术

  1. Bug 审计清单:在报告 SFT 基线前,至少应在两个独立框架中交叉验证结果。如果 verl 和 OpenRLHF+DeepSpeed 的 SFT 结果差异超过 2 分,应当排查
  2. 梯度累积的正确性验证:可以用小规模实验(2-3 个 micro-batch)手动计算期望梯度,与框架输出对比,确认 CPU offloading 正常工作
  3. Loss 聚合的验证:检查框架是否对 mini-batch 取均值后再取均值(错误),还是全局 token 级取均值(正确)
  4. 截断 RL 策略:在强 SFT 初始化后,RL 阶段可以激进缩减——50 步可能就够了,先跑短实验验证趋势再决定是否扩展
  5. SFT 超参敏感性:SRFT 使用了 10× 更低的学习率和 2× 更大的 batch size,导致基线弱了 5.5 分——SFT 的超参搜索不应被忽视

潜在应用场景

  1. 训练基础设施审计:大型 AI 实验室的训练团队应将此文作为案例,建立自己的框架级 CI 流水线,在每次框架升级后运行回归测试
  2. 论文审稿:审稿人应关注基线实现细节——如果所有对比方法都用同一框架,且该框架有已知 Bug,结论的可信度应打折
  3. LLM 训练流水线选择:对于新项目,优先选择 verl 等已修复 Bug 的框架进行 SFT;如必须使用 DeepSpeed,确认已合入修复 PR #7967
  4. 开源社区协作:Bug 的发现和修复展示了开源协作的力量——从 DeepSpeed PR #6550 引入 Bug,到 #7967 修复,中间可能影响了数十篇论文的实验结果

本精读基于 arXiv:2604.23747,发表于 2026 年 4 月 26 日。代码仓库:github.com/alek6kun/sft_then_rl