TTRL
Test-Time RL · NeurIPS 2025

TTRL:用多数投票当奖励,在测试时做强化学习

测试数据没有标签,但模型可以自己采样 64 条回答、数一数哪个答案出现最多,把这个“多数答案”当成伪标签;与它一致的得 1 分,不一致得 0 分,再跑 GRPO 更新参数。Qwen2.5-Math-7B 在 AIME2024 上 pass@1 从 12.9 升到 40.2(相对 211.6%),而训练信号只是 maj@n。

Yuxin Zuo、Kaiyan Zhang、Li Sheng 等 · 清华大学 / 上海 AI Lab 原文 ↗ 代码 ↗
TL;DR · 30 秒抓住核心

TTRL 把测试时缩放(TTS)里的多数投票从“一次性推理技巧”改成“RL 奖励源”。每道题采样 N 条回答,按最终答案投票得到伪标签 y;每条回答与 y 比较,得 1 或 0;用 GRPO 更新模型。这个过程可以在测试数据上在线迭代,不需要任何人工标签。

论文的关键发现是:TTRL 的最终平均准确率能超过它最初的 maj@n 上限,也能接近用真标签训练的模型;在 AIME2024 上,Qwen2.5-Math-7B 的 12.9→40.2 是相对 211.6% 的提升,四个基准平均 31.1→54.9(相对 76.5%)。

机制上,伪标签不一定准:Qwen2.5-Math-7B(base)在 AIME2024 上初始标签准确率只有 37%,但奖励准确率约 92%(§4.2、Figure 9)。原因是“Lucky Hit”:即使伪标签错了,与它不同的错误回答仍会得到 0 分,而这恰好是正确答案应得的奖励。代价是每道题要采样 64 条回答、训练 32 条,推理算力远高于单次前向。

40.2%
Qwen2.5-Math-7B 的 AIME2024 pass@1(w/ TTRL);base 12.9%
73.0%
Qwen2.5-Math-1.5B 的 MATH-500 pass@1;base 32.7%
211.6%
7B 在 AIME2024 上的相对提升(12.9→40.2)
01

测试时没有标签,但推理本身会产生“共识”

传统流程把训练和测试分开:训练用标签,测试只前向。TTRL 问的是:能不能在测试时继续更新参数,而标签从模型自己的多次采样里来?

给定一道无标签测试题 x,策略 πθ 采样 N 条回答 {y1, …, yN}。多数投票取出现次数最多的最终答案作为伪标签 y*:

y* = argmaxa Σi=1N 1[ extract(yi) = a ]
Eq. 4 的多数投票形式;答案抽取器把每条回答映射成最终答案。

然后给每条回答一个 0/1 奖励:

R(yi, y*) = 1, 若 extract(yi) = y*;否则 0
Eq. 3:奖励只做“与伪标签是否一致”的比较,不需要真标签。

RL 目标就是最大化期望奖励:

maxθ Ey∼πθ(·|x)[ R(y, y*) ]
θ ← θ + η ∇θ Ey∼πθ(·|x)[ R(y, y*) ]
Eq. 1–2:TTRL 的在线更新;η 是学习率。

这套流程有三个隐含前提。第一,模型对同一道题要能生成足够多样的回答,否则投票没有意义;第二,答案要能被抽取和比较,数学题可以用规则 verifier;第三,模型的先验要足够强,能在多数投票里形成比随机更好的共识。论文的 Table 3 就是在测第三个前提。

02

自训练是离线的,自洽性不改参数,TTRL 把两者接起来

TTRL 的位置可以用两条轴划清:标签从哪来、参数更不更新。

自训练 / 伪标签

离线:教师打标,学生拟合

传统 self-training 先用一个模型生成伪标签,再拿这些伪标签做 SFT。学生性能通常被教师的伪标签质量限制,且训练是离线的,不会在测试过程中持续改进。

自洽性 / Best-of-N

只改推理,不改参数

Self-consistency 对同一题采样多条回答并投票,用投票结果作为最终答案;Best-of-N 用奖励模型选一条。它们都只利用测试时算力,不更新模型参数。

TTRL

在线:投票 → 奖励 → RL

投票结果不只用来选答案,还变成奖励信号去更新参数;更新后的模型下一轮投票更准,形成在线循环。论文称其为“lifts itself up by its own bootstraps”。

与 RLHF 的区别

没有人工偏好,也没有真标签

RLHF/RLAIF 需要人类偏好或强模型反馈;TTRL 的奖励完全来自模型自身的多数投票。它仍然需要一个答案抽取器/规则 verifier 来比较答案,不是“连 verifier 都不要”。

表 0A · 四类方法的标签来源与测试时更新(页面整理,非论文表格)
方法标签来源测试时更新参数主要成本
Self-training教师模型伪标签否(离线 SFT)教师生成 + SFT
Self-consistency自身多数投票否N 次前向
RLHF / RLAIF人类偏好 / AI 反馈训练阶段偏好数据 + RL
TTRL自身多数投票是(测试时 RL)N 次采样 + 反向传播

表中“测试时更新”指在无标签测试数据上继续训练;TTRL 的更新是 GRPO,不是 SFT。

03

投票得伪标签,0/1 奖励,GRPO 更新

方法本身很短:采样、投票、比较、更新。真正需要解释的是“为什么伪标签不准也能训”。

四步循环

1 · Rollout

采样 N 条

对每道题用温度采样生成 64 条回答;论文再把每条回答下采样到 32 条用于训练,以降低计算。

2 · Vote

多数答案当伪标签

抽取每条回答的最终答案,取出现次数最多者为 y*;平票时按实现里的计数顺序处理,论文没有展开平票规则。

3 · Reward

一致 1,不一致 0

奖励是二元的,没有负奖励,也没有部分 credit;同一条回答与 y* 的答案字符串/数值相等才得 1。

4 · Update

GRPO 更新策略

把 (回答, 奖励) 交给 GRPO,按组内相对优势更新 πθ;论文也在 MATH-500 / Qwen2.5-Math-1.5B 上验证了 PPO、PRIME 可以替换 GRPO,三条准确率/熵曲线“closely aligned”(Figure 5)。

为什么伪标签错了还能训:Lucky Hit

假设真答案是 A,但模型采样出的多数答案是 B(错)。对于一条预测为 C(也错)的回答,奖励函数比较 C 与 B:不相等,给 0。这个 0 对“C 是错的”来说恰好是正确奖励。也就是说,伪标签不需要等于真答案,只需要与错误回答不同,就能给出正确的负奖励。

论文在 Qwen2.5-Math-7B(base)的 AIME2024 上观察到:初始标签准确率只有 37%,但奖励准确率约 92%;标签准确率多数时候在 50% 以下,奖励准确率多数时候在 75% 以上(§4.2、Figure 9)。原因是 base model 的错误回答很分散,多数答案的占比只有 16.6%,所以“多数答案”与大量错误回答不同,Lucky Hit 频繁发生。

手算:一个 8 条回答的投票例子 0/1 奖励与奖励准确率

设真答案 A,8 条回答的最终答案是:A, A, A, B, B, C, D, E。多数票 y* = A(3 票),伪标签正确。

奖励:3 条 A 得 1;B/C/D/E 共 5 条得 0。若按真答案 A 计算奖励,这 8 条也应分别是 1/1/1/0/0/0/0/0,所以奖励准确率 = 8/8 = 100%。

若真答案是 F,而多数票仍是 A(伪标签错),则 3 条 A 得 1(错误奖励),5 条非 A 得 0(正确奖励);奖励准确率 = 5/8 = 62.5%。只要错误回答足够分散,这个比例就会高,Lucky Hit 就越有效。

这个例子只解释奖励机制,不代表论文的具体分布;论文的 37%/92% 是 Qwen2.5-Math-7B(base)在 AIME2024 上的实测曲线。

注意 TTRL 并没有“解决”伪标签错误:它只是让奖励在伪标签错误时仍然大概率正确。若多数票集中在一个错误答案上、且模型其他回答与它大量重合,Lucky Hit 就会失效,这也是论文把“先验知识不足”列为失败条件的原因。

04

8×A100、64 条采样、32 条训练:省的是标签,不是算力

TTRL 把标注成本换成了测试时采样与反向传播成本;论文给了完整训练配置,但没有给单题平均 GPU 小时。

表 0B · TTRL 训练与评测配置(页面整理,数字取自 §3.1/§3.2)
项目设置说明
硬件8×A100 80GB全部实验
投票采样64 条 / 题温度 0.6;Qwen2.5-Math 与 LRM 用 1.0
训练采样32 条 / 题从 64 条中下采样,降低计算
最大生成长度3,072 tokensLRM 为 32,768 tokens
优化器AdamW,cosine峰值学习率 5e−7
episodes10 / 30 / 80MATH-500 / AMC / AIME2024,按数据规模设定
评测16 条 / 题温度 0.6、top-p 0.95;32k 上下文用 4 条

§3.1 与 §3.2:TTRL 对每个 benchmark 单独训练;主表用非零温度采样报告 pass@1,附录 A 的 Table 4 用 greedy decoding,两者不是同一口径。

标签成本

0 个人工标签;但需要答案抽取器与规则 verifier,数学题之外的任务要先定义“答案相等”。

采样成本

每题 64 条 rollout,是单次推理的 64 倍;训练再取 32 条,反向传播成本随模型规模上升。

训练成本

8×A100 80GB;论文没有给总 GPU 小时、单题耗时或显存峰值。

05

采样 → 投票 → 奖励 → GRPO → 下一轮采样

在线循环的关键是:更新后的模型会改变下一轮的投票分布,伪标签质量与奖励质量一起变化。

无标签问题 x 测试数据流 采样 64 条 π_θ(·|x),温度 > 0 多数投票 伪标签 y* 0/1 奖励 与 y* 一致得 1,否则 0 GRPO 更新 32 条 / 题 新策略 π_θ 下一轮投票更准 在线循环 可持续自进化 评测 pass@1(16 条)· 训练日志:熵 / 多数比例 / 奖励准确率
图:TTRL 的在线循环。伪标签来自当前策略的多次采样,奖励是 0/1 比较;训练后策略变化,下一轮伪标签也随之变化。图不覆盖分布式 rollout、答案抽取器实现与 GRPO 的具体超参。
与 TTS 的关系

投票既是推理,也是训练信号

同一批 rollout 既用于选出最终答案,也用于计算奖励;TTRL 没有额外标注,只是把 TTS 的计算复用为 RL 数据。

与 TTT 的关系

在线更新,不是离线适配

传统 TTT 用自监督辅助损失适配单个测试样本;TTRL 用 RL 奖励在测试分布上持续更新,属于在线学习。

06

AIME 12.9→40.2、MATH-500 32.7→73.0:多数模型提升,但不是全部都涨

先看 Table 1 的主结果,再看 Table 2 的更多模型、Table 3 的难度分层,最后区分 greedy 与采样口径。

Table 1 · 主结果(4 个基准 + 平均)

模型AIME2024AMCMATH-500GPQAAvg
Qwen2.5-Math-1.5B
Base7.728.632.724.923.5
w/ TTRL15.848.973.026.141.0
Qwen2.5-Math-7B
Base12.935.646.729.131.1
w/ TTRL40.268.183.427.754.9
Qwen2.5-7B
Base7.934.860.531.833.8
w/ TTRL23.356.680.533.648.5
Qwen2.5-32B
Base7.932.655.833.232.4
w/ TTRL24.059.383.237.751.1
LLaMA3.1-8B
Base4.623.348.630.826.8
w/ TTRL10.032.363.734.135.0
Qwen3-8B(non-thinking,3k context)
Base26.957.882.348.153.8
w/ TTRL46.769.189.353.064.5

Table 1:主结果。AIME/AMC/MATH-500/GPQA 均为 pass@1;主实验用 16 条非零温度采样评测。Qwen2.5-Math-7B 的 GPQA 是 27.7 对 base 29.1,低 1.4 点(相对 4.8%),不是所有单元格都上升。

7B 的 AIME 差值是 27.3 点、相对 211.6%;1.5B 的 MATH-500 差值是 40.3 点、相对 123.2%;7B 的四基准平均从 31.1 到 54.9,相对 76.5%。1.5B 的 AIME 从 7.7 到 15.8,相对 105.2%。

当前读数
1.5B Base
7.7
1.5B TTRL
15.8
7B Base
12.9
7B TTRL
40.2
32B Base
7.9
32B TTRL
24.0
w/ TTRLBase柱高按当前指标的最大值归一;数值逐字取自 Table 1
手算:AIME 视图的柱高 与 JS 逐位一致

最大值是 7B TTRL 40.2,所以 7B TTRL 柱高 = round(40.2/40.2×1000)/10 = 100.0%;7B Base = round(12.9/40.2×1000)/10 = 32.1%。

1.5B Base = round(7.7/40.2×1000)/10 = 19.2%;1.5B TTRL = 39.3%;32B Base = 19.7%;32B TTRL = 59.7%。

柱高最低 1.2%,避免 0 值柱不可见;本视图最小值 19.2%,不会触发。图表只画三个模型,完整六个模型见 Table 1。

Table 2 · 更多模型:AIME 有 0,个别单元格下降

模型AIMEAMCMATH-500
LLaMA-3.2-3B-Oat-Zero0.8 → 3.315.1 → 25.341.9 → 55.7
LLaMA-3.2-3B-Instruct6.0 → 13.319.4 → 31.343.9 → 61.6
Mistral-Nemo-Instruct0.8 → 015.4 → 24.840.8 → 51.0
Ministral-8B-Instruct1.3 → 3.319.7 → 28.952.4 → 57.8
DeepSeek-Math-7B-Instruct1.9 → 2.516.3 → 22.942.3 → 52.4
DeepSeek-R1-LLaMA-8B51.7 → 69.281.6 → 88.989.6 → 90.9

Table 2:更多模型。Mistral-Nemo 的 AIME 从 0.8 降到 0;其余大多数单元格上升,但不是每个都上升。

Table 3 · 难度分层:越难,提升越小

指标MATH-500-L1L2L3L4L5
Backbone 准确率25.933.036.332.522.3
w/ TTRL 准确率71.276.276.358.739.2
准确率差(点)+45.4+43.2+40.0+26.2+16.8
Backbone 回答长度2,339.22,125.12,120.61,775.11,751.3
w/ TTRL 回答长度624.3614.4672.3783.5985.3

Table 3:MATH-500 按难度五等分,Qwen2.5-Math-1.5B。L1 准确率 +45.4 点,L5 只有 +16.8 点;回答长度也大幅缩短。论文把这一趋势归因于“先验知识不足”;推断:这不是 TTRL 的奖励机制在难题上失效。原表 Δ 行与显示单元格直接相减在 L1、L5 上差 0.1(45.4 vs 45.3、16.8 vs 16.9),应为未舍入值的舍入差异。

Table 4 · greedy 口径:159.3%,不是 211.6%

附录 A 的 Table 4 用 greedy decoding,Qwen2.5-Math-7B 从 16.7 到 43.3,相对 159.3%;三基准平均从 35.3 到 65.0,相对 84.1%。主表 Table 1 的 211.6% 用的是 16 条非零温度采样;两个数字不是同一评测口径,不能混用。

原文内部并列

211.6% 与 159.3% 是同一模型的不同评测

摘要与 Table 1 的 211.6% 来自 16 条采样、非零温度;附录 A 的 159.3% 来自 greedy decoding。论文没有把两者统一,页面并列。类似地,Table 1 的 7B GPQA 下降 1.4 点,但四基准平均仍上升 23.8 点,这两个结论也并列。

07

它不是“无标签就一定能涨”:先验、超参、算力三道门槛

TTRL 的失败条件比成功条件更值得看:多数投票要有可用的共识,RL 要能稳定训练,算力要付得起。

先验不足

难题上提升变小

Table 3 的 L5 只提升 16.8 点,L1 提升 45.4 点;论文明确说模型先验不足以支撑更难问题的学习。若多数投票接近随机,伪标签和奖励都会失去意义。

超参敏感

温度与 batch 能训崩

Figure 11 展示失败尝试:温度 1.0(相对 0.6)和训练 batch 256 都可能让熵持续偏高、准确率不涨。TTRL 没有数据过滤或课程学习,超参错误会被测试分布放大。

算力上,TTRL 每题要 64 条 rollout,训练再用 32 条;仅采样就约为单次推理的 64 倍。论文节省的是人工标注,不是总 compute。对 API 服务,这意味着测试时延迟和成本显著上升;对本地部署,需要额外的反向传播显存与时间。

理论上,论文没有给收敛性证明或性能上界;它只给经验观察(avg@n 超过初始 maj@n)和机制解释(Lucky Hit)。奖励是 0/1,没有利用模型置信度、答案语义相似度或过程奖励;多数投票也可能把错误共识放大,论文对 mode collapse 的缓解讨论有限。

任务范围上,主实验是数学(AIME/AMC/MATH-500)与 GPQA;开放域生成、代码、多模态、Agent 任务没有验证。数学题有明确最终答案和规则 verifier,这是 TTRL 能工作的关键数据条件;换成开放式任务,答案抽取与“相等”判定本身就是难题。