Hugging Face的Open R1再度升級! Hugging Face的Open R1是一個社區(qū)驅動的項目,目標是創(chuàng)建一個完全開源的DeepSeek-R1版本。目前,已有模型如OlympicCoder-32B和數(shù)據(jù)集如codeforces發(fā)布,顯示了項目的進展。 最新發(fā)布的7B和32B OlympicCoder,在IOI挑戰(zhàn)上超越了一眾前沿模型,比Claude 3.7 Sonnet還猛。 OlympicCoder已經成了代碼推理界的「肌肉猛男」,有些模型規(guī)模比它大100倍,結果還是被它按在地上摩擦…… 模型在2024年國際信息學奧林匹克競賽(IOI)50次提交中的表現(xiàn) 而這一切,得感謝Open R1的一系列騷操作: CodeForces-CoTs數(shù)據(jù)集:近10萬個高質量樣本,提煉自DeepSeek-R1,專門訓練C++和Python代碼生成。 IOI基準測試:拿2024年國際信息學奧林匹克競賽(IOI)的難題來虐AI,看看誰是真正的「代碼戰(zhàn)神」。 提交策略優(yōu)化:模擬OpenAI的策略,讓模型最大化得分,像真正的選手一樣參加比賽。 我們來扒一扒它是怎么煉成的,以及Hugging Face團隊踩過的那些坑。 (小心,可能會讓你懷疑人生:AI連刷題都比你強了……) CodeForces-CoTs數(shù)據(jù)集 CodeForces作為編程競賽的熱門平臺,其中的算法優(yōu)化問題極具挑戰(zhàn)性。 這使其成為一個有趣的數(shù)據(jù)集,用于提升和測試模型的代碼推理能力。 此次發(fā)布的open-r1/codeforces包含了超過1萬個問題,時間跨度從最初的競賽一直到2025年,其中約3000個問題是DeepMind和CodeContests中沒有的。 對于約60%的問題,數(shù)據(jù)集提供了競賽組織者撰寫的解題思路,這對理解原理至關重要。 同時,每個問題都從官方網站提取了3個正確解決方案。 open-r1/codeforces-cots數(shù)據(jù)集更是一大亮點,其中包含了DeepSeek-R1針對這些問題生成的近10萬個思維鏈(CoT)樣本,用C++和Python兩種語言呈現(xiàn)。 研究團隊在這個數(shù)據(jù)集上對Qwen2.5 Coder Instruct 7B和32B進行微調,得到了OlympicCoder-7B和OlympicCoder-32B模型。 代碼可驗證性危機雖然DeepMind和其他競賽數(shù)據(jù)集都包含測試用例,并聲稱是可驗證的,但這些通常只是競賽網站上全套測試用例的一小部分。 特別是CodeForces,顯示的測試用例上限約為500個字符,這意味著這些數(shù)據(jù)集只包含符合此限制的較短、較簡單的測試用例。 例如,研究者選取了7個問題,R1生成的解決方案通過了全部公開測試用例,并將它們提交到CodeForces平臺: 盡管這些方案通過了較短的測試,但均未通過完整測試集。這凸顯了對新的可驗證的編程競賽數(shù)據(jù)集的需求。 國際信息學奧林匹克競賽(IOI) 國際信息學奧林匹克競賽(IOI)是全球頂尖的編程競賽。 完整測試集遵循寬松的(CC-BY)許可發(fā)布,使其成為測試代碼推理能力的理想數(shù)據(jù)集。 如果你熟悉美國數(shù)學邀請賽(AIME),IOI就相當于數(shù)學奧林匹克競賽(IMO)的編程版,參加AIME的最優(yōu)秀學生才有資格受邀參加IMO。 IOI的問題設計獨特,每個問題細分為多個子任務,各子任務輸入約束不同。 參賽者要解決子任務,提交的方案須在嚴格時限內通過所有測試用例。 最后子任務通常是完整復雜問題,而前面子任務相對簡單、約束更多,參賽者常針對特定子任務拿部分分數(shù),競賽中得滿分十分罕見。 團隊整理了2020-2024年的IOI問題,將它們拆分為子任務,使每個提示都能解決一個特定的子任務,便于有針對性地訓練和評估。 他們還在open-r1/ioi和open-r1/ioi-test-cases中發(fā)布了處理后的問題陳述、評分檢查文件及測試用例,同時創(chuàng)建了自定義代碼,用于運行解決方案并按IOI規(guī)則評分,代碼可在https://github.com/huggingface/ioi上獲取。 研究者對2024年IOI上40多個領先的推理模型進行了全面評估。 每個問題的提交次數(shù)限制為50次,采用與OpenAI類似的選擇策略模擬得分。 評估結果顯示,OlympicCoder模型表現(xiàn)出色。 OlympicCoder-32B在50次提交限制下,超越了o1-mini、DeepSeek-R1、Claude-3.7-Sonnet-thinking等模型。 模型在2024年國際信息學奧林匹克競賽(IOI)50次提交中的表現(xiàn) 提交策略這種提交策略可能不利于非推理模型,像OlympicCoder-32B-Instruct和Qwen-2.5-Coder-32B-Instruct。 為模擬真實競賽,團隊采用類似OpenAI用于o1-ioi的循環(huán)提交策略。 首先提交針對最后一個子任務的解決方案,然后是倒數(shù)第二個子任務的方案,以此類推,只有選定提交時才評估解決方案。 若子任務已被之前選定的提交解決,就跳過針對該子任務的提交。 在每個目標子任務里,傾向于選擇更長的生成內容,這對推理模型合理,對其他模型不太適用。 如果取消50次提交限制,并評估生成的所有提交,會得到以下結果: 國際信息學奧林匹克競賽(2024年)無提交限制時模型的表現(xiàn) 基于R1軌跡訓練的經驗教訓 在創(chuàng)建OlympicCoder模型時,研究者進行了大量SFT實驗,以了解用于CodeForces數(shù)據(jù)集的各種篩選條件的作用。 發(fā)現(xiàn)open-r1/codeforces-cots的以下子集表現(xiàn)最佳:
請注意,這里只關注了C++解決方案,融入Python解決方案可能進一步提高性能。 用LiveCodeBench作為模型的測試平臺,然后將表現(xiàn)最佳的checkpoints用于更具挑戰(zhàn)性的IOI基準測試。 研究者測試了各種超參數(shù)配置來訓練模型,最終確定如下: 模型:Qwen2.5 Coder Instruct 7B和32B 輪數(shù):10 有效批大。128 學習率:4e-5 調度器:余弦衰減至峰值學習率的10% 上下文長度:7B為32,768個token,32B為22,528個token 樣本打包會損害推理性能樣本打包是一種在訓練中常用的加速方法,它將訓練樣本連接成大小相等的塊,無需填充token。 打包后,樣本可能會跨塊邊界重疊。不過,要是大部分樣本比塊小很多,這種重疊影響不大。 然而,對于從R1提取的推理軌跡,這可能會帶來負面影響。 因為很多軌跡長,答案被截斷的可能性高。這就導致訓練時,它很難關注長上下文信息,尤其是問題和答案被分到不同塊的時候。 如下圖所示,打包會嚴重損害模型的性能。用打包時,模型幾乎解不出LiveCodebench里的題;不用打包,性能在幾個訓練周期后趨于平穩(wěn)。 這種差異可能是由于訓練集僅包含C++解決方案,而LiveCodeBench僅評估Python的性能。 盡管如此,在所有分析過的數(shù)據(jù)集里,打包的效果都更差。 用較大的學習率獲得最佳表現(xiàn)在用Qwen進行的大多數(shù)SFT實驗中,2e-5的學習率通常足以獲得強大的性能。 但是,當將帶有推理數(shù)據(jù)的SFT用于現(xiàn)有指令模型時,將學習率大幅提高到4e-5,性能會顯著提升。 如下圖所示,學習率每提高一倍,在LiveCodeBench上的得分就會提高近10分! 納入解題思路無助于提升性能在創(chuàng)建open-r1/codeforces-cots數(shù)據(jù)集中的solutions_w_editorials子集時,原以為給R1輸入問題及解答,能獲得更好的推理軌跡。 但出人意料的是,結果并非如此。訓練時,直接從問題描述采樣,反倒讓性能有了一定的持續(xù)提升。 用 |
原創(chuàng)欄目
IT百科
網友評論
聚超值•精選