32bR1-Zero復現,聚焦scaling

MLNLP社群是國內外知名的機器學習與自然語言處理社群,受眾覆蓋國內外NLP碩博生、高校老師以及企業研究人員。
社群的願景是促進國內外自然語言處理,機器學習學術界、產業界和廣大愛好者之間的交流和進步,特別是初學者同學們的進步。
來源 | 知乎
作者 | 煉熵師

截止到目前,包括hf在內已有很多組織嘗試完整復現R1-Zero,但目前開源的一些專案主要還是聚焦到簡單場景和小size模型上(以qwen-7b系列為主)
完整復現出R1-Zero的test scaling曲線並不是一件容易的事,需要高質量的資料,較大size的模型。本文嘗試總結與記錄我們完整復現R1-Zero的過程。

已有的開源專案參考

  • https://github.com/huggingface/open-r1
  • https://github.com/hkust-nlp/simpleRL-reason?tab=readme-ov-file
  • https://oatllm.notion.site/oat-zero
  • https://github.com/Jiayi-Pan/TinyZero

從7b出發

復現simple RL

tinyZero的任務場景過於簡單,因此我們嘗試先從simpleRL的復現入手。選擇simpleRL的理由,是因為其所用的訓練資料相對簡單,模型7b很好訓練,能很快獲取一個數據和演算法認知,以便更好地幫助我們在32b以及72b模型上訓練。
訓練資料
math training 3-5levelsimpleRL的訓練資料使用的是chat格式:
<|im_start|>system\nPlease reason step by step, and put your final answer within \\boxed{}.<|im_end|>\n<|im_start|>user\nLet $a$ and $b$ be the two real values of $xforwhich\\[\\sqrt[3]{x} + \\sqrt[3]{20 - x} = 2\\]The smaller of the two values can be expressed as $p - \\sqrt{q}$, where$p$ and $q$ are integers. Compute $p + q$.<|im_end|>\n<|im_start|>assistant
我們同時基於R1提供的prompt製作了以下格式資料:
A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer, ensuring that the final result in the answer is enclosed in \\boxed{{}}. The reasoning process and answer are enclosed within '<think>''</think>' and '<answer>''</answer>' tags, respectively, i.e., <think> reasoning process here </think> <answer> answer here </answer>. User: Let $a$ and $b$ be the two real values of $xforwhich\\[\\sqrt[3]{x} + \\sqrt[3]{20 - x} = 2\\]The smaller of the two values can be expressed as $p - \\sqrt{q}$, where$p$ and $q$ are integers. Compute $p + q$. Assistant:
注意這裡第二種格式的情況,eos需要用</answer>來表示,那麼就有兩種做法,prompt中明確提示用</answer>結尾或者修改generation配置,兩者測試下來差異並不會很大,但會影響resps lens的觀測
評測
math500 && AIME24
reward
針對第一種prompt,format的判定為respsonse中是否出現\\boxed欄位
第二種prompt的話,format的判定為response是否滿足<think> reasoning process here </think> <answer> answer here </answer>的格式要求並且出現\\boxed欄位
獎勵分成三種情況:
  • 不滿足format:-1
  • 滿足format,answer錯誤:0
  • 滿足format,answer正確:1
判斷函式使用math-verifiy和qwen-eval
基座與演算法
分別對比了qwen-7b base與qwen-7b math base的效果
並對比了GRPO和PPO的效果差異

實驗結論

1. qwen-7b ppo上測試兩種prompt的區別,resps lens上第二種prompt會出現先下降後增加(快速擬合pattern並學習eos),第一種則是很快增加後基本不變,但是二者的eval效果接近。為什麼lens先下降後上升,因為我們並沒有去以</answer>做為結束的標誌,而是透過提示讓模型自己生成eos,但模型前期並不穩定,eos學的不好,所以前期透過format的約束會出現lens迅速下降去擬合正確結束的格式,然後在後期慢慢變長。
兩個prompt的區別是第二種prompt更適合pretrain model,本身是個續寫任務,而第一種則是chat格式,更適合sft(因為qwen做過cpt,所以有這個chat格式的qa資料,也不用擔心special token沒有訓練過)。但整體上來講第二種prompt更有利於湧現long cot,一個是格式pattern會收縮探索空間(減少極端負例),另一個是這種續寫出來的答案更自然。

2. qwen 7b上為什麼沒有明顯觀測到cot變長的現象?
我們後續又增加了幾組實驗驗證了,cot變長可能和兩個因素有關係,訓練的步數和query的難度,simpleRL所用的math資料在後期train acc已經收斂到90以上,所以無法在該訓練集上進一步出現cot變長的現象。但當切換到另一個較難資料集上時,在1k步能明顯觀測到cot變長至1.2k tokens,但限於7b的能力,train acc也只能收斂到0.25,繼續訓練意義不大
3. ppo上測試結果表明qwen math-7b更優於qwen-7b,AIME24最後可以到0.5(線上測的資料是這個Maxwell-Jia/AIME_2024),實際上離線用qwen的包跑測和simpleRL的結果一致為0.37,AIME的資料還不一樣?),math 0.77
這個是和cpt有直接關係的,所以如果像拿到較高的zero效果,cpt應該也是重要的一個環節

紫色是qwen-math-7b ppo,橘色的是qwen-7b base
4. ppo和grpo的效果基本持平

math-7b用grpo與ppo在AIME24上的效果對比,灰色的是grpo
其他的一些takeaway:
  1. 不使用fomat reward的話,eval的效果會低一些,response lens也不能觀測到增長的趨勢,這個可能和模型大小有關,也和探索空間過大有關
  2. 一個ppo epoch的mini-batch切分不能太多次更新,太offpolicy的話會導致訓練緩慢甚至訓崩,ppo對這個很敏感,我們嘗試用simpleRL的超參發現並不好用
  3. GRPO在效果和效率上與PPO差別不大,而且超參更好調,scaling的話grpo會更好
  4. qwen-7bmath的反思行為在初始階段就會多於qwen-7b,這和math的cpt應該是有比較大的關係
  5. qwen-7bmath並沒觀測到resps lens明顯變長,可能是和訓練集數量比較少有關,但是觀察輸出發現7bmath會吐很多程式碼等無關資訊,所以後續大size不選用math系列
  6. 可以用pass8或者16描述模型上限,這對後續指標觀察意義比較大,pass1應該隨著訓練逼近pass8,如果pass1,pass8,train acc都不漲了那就說明演算法應該出問題了

邁向32b

透過7b的實驗我們能夠很清晰的認識到,復現zero需要的條件:
  • 正確的prompt
  • 相對較難的query
  • 較長的訓練步數,long cot湧現是個緩慢過程
  • size更大的模型

訓練資料

整合開源和內部資料,準備了較高質量的3w+條,qwen7b math的準確率在這份資料集上只有20%,保證了難度覆蓋。同時prompt形式採用了第二種,即r1的提供的prompt格式

演算法

採用GRPO,一個是方便訓練,另一個是調參相對簡單

實驗

1.更大size的模型更容易湧現long cot,下圖是resps len的對比圖

紅色是qwen32b,綠色是7b,紫色是72b
2.反思與正確反思是逐步增加的(這個在7b模型上的增速緩慢),lens也隨之增加,eval的效果也在逐漸變好

3.大temperature更有助於反思出現,與反思行為的進一步增加,模型的行為是先出現大量無效反思的探索,然後逐漸透過rl學習到有效反思
4.gbz調大是必須的
5.課程學習會有較大收益

粉色為課程學習組,紅色為baseline

最終的scaling 曲線

待更新,訓練比較慢,慢慢等,框架還有許多可以最佳化的點
目測結論會和r1中的一樣,rl zero不如純蒸餾

技術交流群邀請函

△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群

關於我們

MLNLP 社群是由國內外機器學習與自然語言處理學者聯合構建的民間學術社群,目前已經發展為國內外知名的機器學習與自然語言處理社群,旨在促進機器學習,自然語言處理學術界、產業界和廣大愛好者之間的進步。
社群可以為相關從業者的深造、就業及研究等方面提供開放交流平臺。歡迎大家關注和加入我們。


相關文章