在OpenAI o1剛放出來(lái)時(shí),它有限的技術(shù)報(bào)告里,有2個(gè)內(nèi)容格外抓人眼球:
我一直是把這2者理解為兩個(gè)獨(dú)立的個(gè)體,在這個(gè)基礎(chǔ)上,當(dāng)時(shí)我給出了一些關(guān)于o1實(shí)現(xiàn)思路的猜想(https://zhuanlan.zhihu.com/p/773907223):
我認(rèn)為o1走的可能是上述framework3的路線,總結(jié)來(lái)說(shuō):
Inference/test-time scaling
:這一塊的主要作用是為RL過(guò)程自動(dòng)化地制造高質(zhì)量數(shù)據(jù)集。包括用于format模型產(chǎn)生思考過(guò)程的long cot數(shù)據(jù)集,以及帶preference labels的數(shù)據(jù)集。我把這一塊的系統(tǒng)抽象為PRM + some search methods的形式。例如討論度很高的MCTS,本質(zhì)上也可理解為 fixed PRM + some search methods。RL
:這部分應(yīng)該就是openAI自己慣有的一套R(shí)L流程。那么,我為什么當(dāng)時(shí)會(huì)認(rèn)為 inference-time scaling 和 RL 應(yīng)該是2個(gè)獨(dú)立的過(guò)程呢?因?yàn)樵谖业恼J(rèn)知里,我認(rèn)為如果沒(méi)有顯式的引導(dǎo),模型是不具備產(chǎn)生long cot(乃至帶反思的cot)的能力的(在模型訓(xùn)練初期,這個(gè)能力是指formatting模型,讓它知道要產(chǎn)出這種格式的回答;在訓(xùn)練過(guò)程中再來(lái)慢慢提升這種回答的質(zhì)量)這個(gè)顯示引導(dǎo)就是指諸如sft這樣的過(guò)程。所以在這個(gè)認(rèn)知里,上面的2個(gè)過(guò)程就應(yīng)該是獨(dú)立的。
而我第一次發(fā)現(xiàn)這樣的認(rèn)知可能有問(wèn)題,是在我閱讀紅杉對(duì)openAI的訪談中,在這個(gè)萬(wàn)字長(zhǎng)文里,有一句話格外引起我的興趣,我當(dāng)時(shí)把它劃了出來(lái):
這句話的意思是:沒(méi)有人為的刻意為之,模型在某種訓(xùn)練過(guò)程中自發(fā)出現(xiàn)了反思的行為。而如果這一點(diǎn)都是能實(shí)現(xiàn)的,那是否意味著沒(méi)有人為的刻意為之,模型本來(lái)也具備產(chǎn)生long cot的能力呢?
如果是這樣的話,那么o1可能除了數(shù)據(jù)工程 + 慣常的RL技巧外,整個(gè)系統(tǒng)要比想的簡(jiǎn)單很多。可是我的水平有限,實(shí)在不知道除了顯式引導(dǎo)外,模型怎么可能自發(fā)產(chǎn)生這樣的能力呢?
而直到前幾天,又是蹭著熱點(diǎn)讀到了dpsk-r1的這篇技術(shù)報(bào)告,我這下才發(fā)現(xiàn):原來(lái)單純的RL就可以激發(fā)模型產(chǎn)出帶有l(wèi)ong cot(甚至是反思)的回復(fù)的能力!(可能在此之前已有很多研究發(fā)現(xiàn)了這點(diǎn),是我對(duì)這一塊的follow-up太少了,確實(shí)直到跟著熱點(diǎn)讀了dpsk-r1,才發(fā)現(xiàn)了這點(diǎn))。這里單純的RL是指:我并沒(méi)有顯式提供一些真正的long cot數(shù)據(jù)讓模型去背去學(xué),我只是在sys_msg里告訴模型先思考,再回答。接著通過(guò)RL一輪又一輪的訓(xùn)練,模型產(chǎn)出的responses越來(lái)越長(zhǎng),且在某個(gè)時(shí)刻出現(xiàn)了自我評(píng)估和反思的行為。這個(gè)實(shí)驗(yàn)探索就是dpsk-r1-zero在做的事情。
如果RL有這種能力,那么inference time scaling 和 RL 就可以不是2個(gè)獨(dú)立的過(guò)程,而是在RL的過(guò)程里自發(fā)出現(xiàn)了inference time scaling的現(xiàn)象,而如果它們不再獨(dú)立,那么類o1的訓(xùn)練架構(gòu)也許就比我們想得要簡(jiǎn)單很多。
原本我只是抱著追熱點(diǎn)的心態(tài)掃一下dpsk r1,我甚至沒(méi)打算看完它的tech report。不過(guò)開頭關(guān)于dpsk-r1-zero的實(shí)驗(yàn)結(jié)論一下吸引了我,所以把核心內(nèi)容簡(jiǎn)單記錄下,我會(huì)側(cè)重訓(xùn)練流,略去評(píng)估。(這邊的重點(diǎn)并不在于討論什么路子是對(duì)的、什么是錯(cuò)的,只是對(duì)我來(lái)說(shuō)發(fā)現(xiàn)一種可能)。
在dpsk r1的這篇報(bào)告里,提到了2個(gè)模型,分別是 DeepSeek-R1-Zero
和 DeepSeek-R1
,總結(jié)來(lái)看:
zero算是一個(gè)實(shí)驗(yàn)性質(zhì)的模型,在zero上不通過(guò)任何sft的方式,僅使用RL + 規(guī)則RM,就能激發(fā)模型產(chǎn)出帶反思的long cot。這個(gè)重要的實(shí)驗(yàn)發(fā)現(xiàn)進(jìn)一步啟發(fā)了r1的訓(xùn)練。
r1是受到zero RL相關(guān)的實(shí)驗(yàn)結(jié)果啟發(fā),而新訓(xùn)的最終版的模型。zero所采用的RL方法(即什么樣的RL能激發(fā)模型主動(dòng)產(chǎn)出long cot,甚至是反思)將被 r1 參考。
下面簡(jiǎn)單記錄下兩者的訓(xùn)練細(xì)節(jié)。
dpsk家的GRPO,不是文本關(guān)注的重點(diǎn),暫略。
在訓(xùn)練DeepSeek-R1-Zero時(shí),采用了基于規(guī)則的獎(jiǎng)勵(lì)系統(tǒng),主要包括兩種類型的獎(jiǎng)勵(lì):
(1)準(zhǔn)確性獎(jiǎng)勵(lì)(Accuracy Rewards)用于評(píng)估模型responses的準(zhǔn)確性。例如數(shù)學(xué)問(wèn)題的答案是否正確,代碼是否通過(guò)測(cè)試用例等。
(2)格式獎(jiǎng)勵(lì)(Format Rewards)
(3)為什么不使用神經(jīng)網(wǎng)絡(luò)式的RM?
為了訓(xùn)練DeepSeek-R1-Zero,我們首先設(shè)計(jì)了一個(gè)簡(jiǎn)單的模板,指導(dǎo)基礎(chǔ)模型遵循我們指定的指令:
模版如下:
和別的模型的性能比較這里略去,簡(jiǎn)單介紹一下對(duì)于R1 zero性能重要的幾個(gè)結(jié)論:
r1 zero證明了無(wú)需sft,直接用base model做RL,已經(jīng)可以取得強(qiáng)大的reasoning能力。
使用多數(shù)投票策略(例如對(duì)一條prompt采樣多次,取出現(xiàn)次數(shù)最多的那個(gè)答案)可以進(jìn)一步增強(qiáng)模型性能。
隨著訓(xùn)練steps的增加,r1 zero傾向于產(chǎn)出更長(zhǎng)的response(long cot),并且還出現(xiàn)了反思行為。這些都是在沒(méi)有外部干預(yù)的情況下,r1 zero模型在訓(xùn)練中自我進(jìn)化的結(jié)果。
所以接下來(lái)探索deepseek r1,這是獨(dú)立于r1 zero的正式訓(xùn)練流程了。可以說(shuō),r1 zero的訓(xùn)練是一個(gè)探索性的過(guò)程,它驗(yàn)證了RL本身對(duì)于激勵(lì)模型產(chǎn)生推理的能力。在這個(gè)探索結(jié)論上,開始正式進(jìn)入r1的訓(xùn)練。
r1的訓(xùn)練總體訓(xùn)練過(guò)程如下:
|special_token|<reasoning_process>|special_token|<summary>
這里新的sft數(shù)據(jù)集來(lái)自兩個(gè)方面,一共約80w條。
1. 當(dāng)前正在訓(xùn)練的模型產(chǎn)出的結(jié)果(reasoning data)
2. 不是當(dāng)前正在訓(xùn)練的模型產(chǎn)出的結(jié)果(no reasoning data)
再次回到base模型上,首先用這80w的新數(shù)據(jù)對(duì)它做2個(gè)epoch的sft。
接著執(zhí)行2個(gè)階段的RL:
第1階段RL:旨在增強(qiáng)模型推理方面的能力。采取類似r1 zero的RL方法,使用基于規(guī)則的RM,對(duì)模型進(jìn)行RL訓(xùn)練,以提升模型在數(shù)學(xué)、代碼和邏輯方面的推理能力。(這里用的數(shù)據(jù)集應(yīng)該不是那80w,是類似于zero直接構(gòu)建prompt)
第2階段RL:旨在針對(duì)模型的helpfulness和 harmlessness,類似于dpsk v3的訓(xùn)練pipeline
當(dāng)你觀察上面對(duì)r1的兩個(gè)階段訓(xùn)練時(shí),你會(huì)發(fā)現(xiàn)它們依然用到了sft,表現(xiàn)在:
那么你看可能會(huì)有這樣的疑問(wèn):如果還用sft,那前面zero的實(shí)驗(yàn)是不是白做了? 既然得到了RL本身就有激發(fā)模型做long cot和反思的能力,那要sft干嘛?這豈不是和開頭所說(shuō)的RL中實(shí)現(xiàn)inference time scaling有矛盾嗎?
這里談一下我的理解:
使用以上80w數(shù)據(jù),對(duì)llama和qwen系的部分dense模型做sft,然后檢測(cè)這些模型的推理能力。
結(jié)論:對(duì)于小模型,不需要依然RL,只用蒸餾就可以使得其推理能力得到顯著提升(對(duì)于大模型會(huì)是怎么樣的,這里沒(méi)有提)
聯(lián)系客服