← 返回列表

Taming the Long-Tail: Efficient Reasoning RL Training with Adaptive Drafter

作者 Qinghao Hu, Shang Yang, Junxian Guo, Xiaozhe Yao, Yujun Lin, Yuxian Gu, Han Cai, Chuang Gan, Ana Klimovic, Song Han
年份 2025
会议/期刊 arXiv 2025
评分
标签 RL训练 LLM推理
摘要 解决推理 RL 训练中长尾响应分布问题:自适应投机解码 + 机会性 draft 模型训练,实现 1.7-2.1× 加速且无损质量

核心思想

推理模型的 RL 训练(如 GRPO)中存在长尾分布问题:大多数生成的序列较短,但少数极长序列消耗约 85% 的 rollout 时间。本文提出 TLT:结合自适应投机解码(Speculative Decoding, SD)与机会性 draft 模型训练,实现 1.7-2.1× 加速,同时:

  1. 无损保证:输出分布与原始模型数学等价
  2. 零额外成本:利用 GPU 空闲时间训练 draft 模型
  3. 副产品:训练结束时自动获得部署级 draft 模型

方法详解

1. 长尾问题分析

在 RL rollout 中,少量极长响应成为整个批次的瓶颈——batch 中所有 GPU 必须等待最慢的序列完成。这导致大量 GPU 空闲等待。

2. 投机解码基础

标准 SD 将内存受限的自回归生成转变为计算受限操作:

  1. Draft 模型生成 $k$ 个候选 token
  2. Target 模型单次前向传播并行验证所有 $k$ 个 token
  3. 接受到第一个不匹配处 + 来自 target 的一个正确 token
  4. 无损保证:输出分布与 target 模型的原始分布完全一致

3. 自适应 Drafter

3.1 单层架构

与先前使用多层模型不同,TLT 使用单个 decoder 层的轻量级 drafter,共享 target 模型的 embeddings 和 LM head:

  • 比 Qwen2.5-0.5B 快 2.4×
  • 极低的额外参数开销

3.2 Spot Trainer:利用 GPU 空闲时间

在长尾 rollout 过程中,已完成的 GPU 处于空闲状态。TLT 利用这些气泡时间进行 draft 模型训练:

  • Worker Coordinator:基于 ZeroMQ 的中心化控制器,监控 rollout worker 状态
  • DataBuffer:缓存 hidden states,使用跨步偏移采样包含上一步的长序列
  • 选择性异步检查点:仅转储可训练参数,延迟降低 9.2×
  • 序列打包:将变长序列拼接 + attention mask,吞吐量提升 2.2×

3.3 统一训练框架

支持多种 SD 策略(Eagle, HASS, Eagle-3),使用推理过程中已缓存的 target 模型 hidden states,无需重新计算。

训练流程

  1. Target 模型生成 rollout 响应
  2. 收集 target 模型各层 hidden states(推理时已缓存)
  3. 与 input embeddings 拼接,通过线性投影
  4. 送入 drafter 的单个 decoder 层
  5. 计算 L1 loss(表示对齐)和/或 CE loss(token 预测)
  6. 仅更新 drafter 的 decoder 层

4. 自适应 Rollout 引擎

4.1 树形 Drafting

扩展线性 drafting:探索每一步的 top-K token 候选,创建分支候选树,并行验证。

4.2 Bucketed-Epsilon-Greedy (BEG) MAB 调参器

在线策略选择算法:

输入:策略集 S, 批次阈值 T = {t₁,...,tₘ}, 探索率 ε, 窗口大小 w

初始化:
  按 Tokens_to_Verify 将策略分组 → {S₁,...,Sₘ}
  定义桶 Bᵢ = [tᵢ, tᵢ₊₁-1]

Record(elapsed_time, accept_lens, batch_size):
  ā = (Σaccept_lens) / batch_size + 1
  rₛ = ā × batch_size / elapsed_time   // 奖励函数
  追加 rₛ 到 Rₛ

SelectStrategy(batch_size):
  V = {s ∈ Sᵢ | batch_size ∈ Bᵢ}       // 候选策略
  以概率 ε → 随机选择(探索)
  以概率 1-ε → argmax Median(Rₛ)(利用)

奖励函数:$r_s = \bar{a} \times \text{batch_size} / \text{elapsed_time}$,平衡接受率和每步延迟。

4.3 内存高效 CUDAGraph

通过三种策略降低内存 2.8×(30.39 GB → 10.69 GB):

  • 桶化 batch size(而非为每个 size 单独捕获)
  • 分离 target 和 draft 模型的 graph 捕获
  • 合并兼容策略的 graph

4.4 Model-Free Drafter

备选 n-gram 检索策略,利用推理任务中的序列相似性,在学习型 drafter 不可用时激活。

5. SD 激活阈值

关键设计:在 batch 较大时(高并行度),SD 的加速效果有限甚至为负。因此设定阈值——当剩余请求 < 32 时才激活 SD,避免在早期高 batch 阶段的减速。

实验结果

端到端加速

在 H100 和 A100 平台上,跨 7B 到 70B 模型实现 1.7-2.1× 加速,模型质量完全保持(奖励曲线重叠)。

TopK 敏感性

TopK 4 6 8 10 12 16
接受长度 8.29 8.66 8.67 8.67 8.60 8.42
加速比 3.51× 3.65× 3.64× 3.64× 3.56× 3.47×

TopK=6-10 为最优范围。

Batch Size 影响(Qwen-32B, TP=4)

Tokens_to_Verify Batch 1 Batch 4 Batch 16 Batch 32
16 3.22× 3.01× 2.67× 2.48×
32 3.46× 3.09× 2.52× 2.23×
64 3.62× 2.98× 1.91× 1.70×

关键观察:batch 越大、draft 越深,加速比越低 → 需要自适应策略选择。

自适应 Drafter 效果

指标 Target-Base Target-R
RL 训练接受长度 4.59 6.53
下游接受长度 3.76 5.15

Drafter 在 target 模型更新后几个迭代内即可恢复精度。

个人思考

  1. 长尾问题的洞察非常精准:85% 的时间花在少量极长序列上,这是 RL 训练的真正瓶颈。
  2. 利用 GPU 气泡训练 drafter 是”空间换时间”的优雅实现——零额外成本获得部署级 draft 模型。
  3. BEG-MAB 自适应选择解决了手动调参的痛点:不同 batch size 需要不同的 SD 策略。
  4. 无损保证是关键约束:RL 训练需要精确的概率分布来计算 KL 散度,有损加速会破坏训练。
  5. 适用范围广:支持 GRPO/RLOO/DAPO 等多种 RL 算法,7B-70B 模型,H100/A100 硬件。
← 返回列表