s1 Simple test-time scaling

  1. Key Insight on s1
  2. Budget Forcing 预算强制
  3. s1 实验细节思考
  4. Reference

Key Insight on s1

1.test-time scaling (测试时扩展)是一种有效的能提升模型的效果的方法, OpenAI o1 模型展示出来了这种能力提升,但是没有公开他们的方法是什么; 因此想探索一种最最简单测试时扩展方法: s1 能够验证增加测试时提升模型效果
2.提出了 Budge Forcing 的策略,这种极简的 scaling 策略实现了对于 test-time 的进行灵活地控制延长 (插入一个 “wait” token) 或者缩短策略 (插入一个 “end-of-thinking” token),同时也能在实验层面帮助验证 test-time scaling 的过程
3.构造了一个 s1K 的小型推理数据集,包含了 1000 个推理数据,虽然数据量不大,但是覆盖了难度/多样性/质量三重要求,是一个很有说服力的数据集

Budget Forcing 预算强制

Budget Forcing 是一种非常简单有效的控制 test-time 的做法,这里的 budget 其实是 cot (token) budget,Budget Forcing 实现了对于 test-time 的进行灵活地控制延长推理或者缩短推理策略:
1.强制延长推理: 只需要在推理一旦发现结束 end-of-thinking token 时, 插入一个 “wait” token,这样就能让模型强行继续思考;如过延长后还想再延长,那么只需要继续重复插入 “wait” 操作

2.强制终止推理:让模型强制停止思考的策略,在模型生成中,我们设定一个最大 token 限制的阈值,当输出 token 数超过阈值的时候,插入一个 end-of-thinking token 同时也可以外加一个 “Answer:” token

有了 Budget Forcing 策略,我们就可以去验证 test-time scaling law 的存在性, 以及对比没有 test-time scaling 的模型效果

s1 实验细节思考

1.数据集构造: s1K 覆盖 1000 高质量样本的数据集, 题目来自于 NuminaMATH/AIME/OlympicArena/OmniMath/AGIEval/SAT/LSAT, 然后覆盖了难度/多样性/质量三重要求筛选, 生成推理轨迹和答案用 Gemini 构造出来完整 s1K 样本; 模型训练过程基于 Qwen-2.5-32B 模型上进行 SFT, 得到 s1K-32B 模型
2.验证 test-time scaling 的两种类别: Sequential v.s. Parrallel

Sequential: 线性增加推理时间,采用 Budget Forcing 对比在不同的 thinking token 作为自变量下的 accuracy 变化趋势
Parrallel: 并行增加推理时间,每个样本评估 64 次,然后分别对比 2/4/8/16/32/64 次多数投票的结果

intuitively,
(i). 左图来看,在 AIME24 上面,有效验证了 test-time scaling 的趋势,到最后三个点呈现出了收敛状态,因为不断地强制 force wait 最终就会慢慢变成复读机,而不会更多地进行更有效的推理
(ii). 右图来看. 有两个层面规模对比,右下角并行的 scaling 也呈现了准确率上升的趋势,说明了多次采样对准确率提升是绝对有用的;左上角左上角的 sequential 单独看,也是呈现了 scaling 的趋势;再对比左上角和右下角也就是对比 sequential v.s parrallel, 我们发现在至少在这个数据集上 sequential 的 scaling 比 parrallel 显著更加高效;那直觉上为什么 sequential 比 parrallel 效率更高呢?我直觉上 sequential 更能够实现更有效的路径排除, 一个数学题三种做法,第一种思路, 第一种做完了,第二种思路,第二种做完了,第三种思路类似这样…做第二种的时候我不想第一种思路了;但并行只能靠每一种去单独探索,有可能是发生重复探索的

Reference

[1]. s1: Simple test-time scaling


转载请注明来源 goldandrabbit.github.io