Test Time Scaling
本文探討一種稱為**「測試時縮放」(test-time scaling)的新興語言模型改良方法,旨在利用額外的測試時間計算資源來提升模型效能。為了實現此目標,作者們首先建立了一個名為 s1K 的小型但高品質的資料集,包含1000個具有推理軌跡的問題,這些問題在難度、多樣性和品質上都經過仔細篩選。接著,他們開發了「預算強制」(budget forcing)技術,通過強制終止或延長模型的思考過程來控制測試時的計算量,促使模型反覆檢查答案以修正錯誤的推理步驟。在經過 s1K 資料集微調,並搭配預算強制技術後,名為 s1-32B 的模型在競爭性數學問題上超越了 OpenAI 的 o1-preview 模型,顯示了其在樣本效率和推理能力**方面的優越性。
測試時間擴展 (Test-time scaling) 是一種透過增加測試時的計算量來提升語言模型效能的方法。
以下是有關測試時間擴展的詳細資訊:
- 基本概念:測試時間擴展的目標是在不改變模型本身的情況下,利用額外的計算資源來改善模型在推理階段的表現。
- s1-32B 模型:
- s1-32B 模型展示了測試時間擴展的能力。
- 透過在包含 1,000 個問題的 s1K 資料集上進行微調,並結合一種稱為「預算強制 (budget forcing)」的技術,s1-32B 在競爭數學問題上的表現超越了 OpenAI 的 o1-preview 模型.
- s1-32B 模型在 AIME24 上的效能,透過預算強制,從 50% 提升到 57%。
- 預算強制 (Budget forcing):
- 預算強制是一種控制測試時間計算量的技術。
- 當模型產生的思考 tokens 超過預設的上限時,預算強制會透過附加一個結束思考的 token 分隔符來強制結束思考過程,使模型轉向生成答案。
- 如果希望模型花費更多的測試時間計算量,則可以抑制結束思考 token 分隔符的生成,並附加 “Wait” 字串到模型當前的推理軌跡中,以鼓勵更多的探索。
- 測試時間擴展方法分類:
- 序列擴展 (Sequential scaling):後續的計算依賴於先前的計算結果 (例如,長的推理軌跡)。s1-32B 模型主要關注序列擴展,因為它允許更深入的推理和迭代改進。
- 平行擴展 (Parallel scaling):計算獨立運行 (例如,多數投票)。
- 測試時間擴展的評估指標:
- 可控性 (Control):衡量方法在多大程度上允許控制測試時間計算量的使用。
- 擴展性 (Scaling):衡量分段線性函數的平均斜率,數值越大越好。
- 效能 (Performance):衡量方法在基準測試中實現的最大效能。
- 序列擴展與平行擴展的比較:
- 序列擴展通常比平行擴展更有效,因為後續的計算可以建立在中間結果之上,實現更深入的推理。
- 平行擴展,例如多數投票,在提升效能方面不如序列擴展。
- 局限性:
- 過度抑制結束思考 token 分隔符可能會導致模型進入重複迴圈,而不是持續推理。
- 底層語言模型的上下文窗口 (context window) 限制了擴展的程度。
- 改進方向:
- 改進預算強制,例如輪換不同的字串 (不僅僅是 “Wait”),或將其與頻率懲罰或更高的溫度結合,以避免重複迴圈。
- 將預算強制應用於使用強化學習訓練的推理模型,可能會產生更好的外推效果。
- 平行擴展方法,如多數投票和樹狀搜尋 (透過 REBASE),可以作為序列擴展的補充,從而進一步擴展測試時間的計算。
- 其他方法
- 條件長度控制:在 prompt 中告知模型應該生成多長的內容,但這種方法可能需要預算強制才能實現良好的控制。
- 拒絕抽樣 (Rejection sampling):抽樣直到生成符合預定計算預算的結果,但這種方法可能會導致效能下降。
總體而言,測試時間擴展是一種有潛力提升語言模型效能的方法,而預算強制是一種簡單而有效的實現方式。透過仔細控制計算量並結合其他技術,可以克服現有的局限性,進一步提升模型的推理能力。
Using recurrence to achieve weak to strong generalization