Open R1 更新 #3:OlympicCoder 與程式碼推理洞察

Hugging Face 發佈了 OlympicCoder,這是一對經過微調的 7B 和 32B 程式碼模型,在具挑戰性的國際資訊奧林匹亞 (IOI) 問題上,表現優於包括 Claude 3.7 Sonnet 在內的封閉原始碼前沿模型。此次發佈是 Open R1 專案努力的一部分,旨在透過建立專門的資料集和蒸餾推理軌跡,來重現 DeepSeek-R1 配方中的競賽程式設計面向。

OlympicCoder 與 IOI 基準測試

OlympicCoder-32B 在所有測試過的開源權重模型中表現最佳,並在 50 次提交限制的設定下超越了 o1-mini 和 DeepSeek-R1。為了評估這些能力,Hugging Face 開發了一個新的基準測試,基於 2024 年國際資訊奧林匹亞 (IOI),該測試包含複雜的演算法問題,並在 CC-BY 授權下提供完整的測試集。

提交策略與評估

為了模擬真實競賽條件,Hugging Face 採用了輪詢提交策略,其中解決方案的分數只有在提交後才能得知。此策略優先針對最困難的子任務進行提交,並偏好推理模型生成較長的內容。在這些嚴格的競賽條件下,沒有模型達到獎牌門檻(人類參賽者的第 50 百分位數),儘管 o1 最接近銅牌水平。

新的程式碼推理資料集

為了訓練 OlympicCoder,Hugging Face 發佈了兩個基於 CodeForces 的主要資料集,CodeForces 是一個受歡迎的競賽程式設計平台:

  • open-r1/codeforces:一個包含超過 10,000 個問題的資料集,其中約 3,000 個問題未曾出現在之前的資料集(如 DeepMind 的 CodeContests)中。其中約 60% 包含題解 (editorials)。
  • open-r1/codeforces-cots:近 100,000 個從 DeepSeek-R1 蒸餾而來的思維鏈 (CoT) 樣本,提供 C++ 和 Python 的解決方案。

程式碼可驗證性危機

Hugging Face 指出了現有競賽程式設計資料集中的「可驗證性危機」。許多資料集僅包含短小的測試案例(通常限制在 500 字元以內),導致模型雖然能通過公開測試,但在完整的測試套件上卻失敗。這一發現促使了向 IOI 基準測試的轉向,因為它提供了完全可用且可驗證的問題數據。

訓練推理模型的技術教訓

透過使用 Qwen2.5 Coder Instruct 作為基礎進行 SFT 實驗,Hugging Face 總結了訓練模型使用 R1 推理軌跡的五個關鍵教訓:

  1. 樣本打包會損害推理性能:將訓練樣本連接成等大的區塊會顯著降低模型解決問題的能力,這可能是因為長推理軌跡被截斷或分割在不同的區塊中。
  2. 更高的學習率更有效:與大多數 Qwen SFT 實驗使用的標準 2e-5 相比,使用 4e-5 的學習率提供了顯著的性能提升(在 LiveCodeBench 上提升了近 10 分)。
  3. 題解並不會提升性能:在 R1 蒸餾的提示詞中包含官方題解並不會改善結果模型的性能;從問題敘述中進行樸素採樣反而稍微更有效。
  4. 使用 <think> 標記進行預填充 (Prefill):為了在領域內和領域外的查詢中一致地觸發長 CoT 行為,在對話模板中應預填充助手的回應以 <think> 標記。
  5. 使用 8-bit 優化器處理長上下文:為了在擴展到具有長上下文的 32B 模型時避免記憶體不足 (OOM) 錯誤,將 FSDP 與 paged_adamw_8bit 優化器結合使用,可以將上下文擴展到 22,528 個 token。

GRPO 與數學資料集更新

TRL 中的 GRPO 增強功能

Hugging Face 更新了 TRL 庫中的群體相對策略優化 (GRPO) 實作,並帶來了幾項效率與擴展性改進:

  • 生成重用:樣本現在可以被多次重用(建議 $\mu$ 在 2 到 4 之間)以加速優化。
  • 獎勵權重分配:使用者現在可以為不同的獎勵函數分配不同的權重(例如,優先考慮正確性而非格式化)。
  • 整合:新增了 PEFT 和 vLLM 整合、梯度檢查點 (gradient checkpointing) 以及優化了選擇性 log softmax 計算。

Open R1 數學資料集改進

OpenR1-Math-Raw 資料集已透過 reparsed_answers(透過 Llama-3.3-70B-Instruct 提取)和 correctness 欄位進行了豐富化。消融研究顯示,雖然嚴格驗證(例如,結合 Llama 驗證與 math_verify)在早期階段能顯著提升性能,但隨著訓練時間增加,性能差距會縮小,因為在較長的訓練過程中,擁有更多樣本(即使是不正確的樣本)會變得更有利。

未來路線圖

Hugging Face 計畫將重點放在以下後續步驟:

  • 完善用於通用推理器 (general-purpose reasoners) 的蒸餾資料集混合比例。
  • 將 GRPO 擴展到更大的模型,例如 Qwen2.5-Coder-32B-Instruct,以建立 R1-Zero 變體。
  • 整合來自多個領域的獎勵信號,並利用獎勵模型處理非推理數據。

Sources

相關