作者:haotian(阿里巴巴 高級(jí)算法工程師)
近期,seed&清華發(fā)表的DAPO [2],將32b-base做到了aime50分的效果,是一個(gè)值得參考的技術(shù)報(bào)告。這個(gè)報(bào)告里面提到了很多方法/tricks:
好的流程遠(yuǎn)勝不靠譜的算法trick
llm的sft和rl,筆者認(rèn)為,二者差別不大,sft是rl的一個(gè)特例(有一些文章做了類似的討論),而rl則更好的利用了負(fù)樣本。在dapo中,一個(gè)核心是dynamic-sampling,簡(jiǎn)單來(lái)說(shuō),根據(jù)當(dāng)前模型在prompt的bon,動(dòng)態(tài)決定采樣budget,難prompt采樣更多的sample,簡(jiǎn)單prompt則采樣更少的prompt,以及過(guò)濾模型解決不了的hard-prompt或者easy-prompt。
在sft階段,通常也會(huì)使用類似的策略做code/math等等的拒絕采樣、篩選多樣性response(embedding+聚類、長(zhǎng)度)。從DAPO中可以看出,一個(gè)良好的pipline(online-dynamic-sampling)遠(yuǎn)勝于不靠譜的算法trick。
當(dāng)做好sft后,從數(shù)據(jù)/task、response合成/采樣、response挑選/打分方法等等,都有一個(gè)相對(duì)固定且運(yùn)行良好的流程。把這個(gè)流程做到online,在replay-buffer 的數(shù)據(jù)構(gòu)造中即可應(yīng)用,配合對(duì)應(yīng)的挑選/打分/篩選策略,便可將sft階段積累的優(yōu)秀流程直接遷移到online-rl。同時(shí)也需要replay-buffer和主代碼解耦,做靈活的控制。
總之,能做好sft且pipline能夠在線化運(yùn)行的團(tuán)隊(duì),做好online-rl只是算力和時(shí)間的問(wèn)題(生產(chǎn)要素)。反之,則陷入一個(gè)窘境(生產(chǎn)關(guān)系):
1. 做sft的一直offline調(diào)數(shù)據(jù)、蒸餾、挑選,但pipline較難在線化運(yùn)行,且需要人力不斷重復(fù),但實(shí)際上都是well-defined流程和配比實(shí)驗(yàn),不太需要過(guò)多的人工參與;(出現(xiàn)能力/任務(wù)沖突后,人工介入處理)
2. 做rl的不斷重復(fù)sft的數(shù)據(jù)流程:找數(shù)據(jù)、找replay-buffer的數(shù)據(jù)構(gòu)建策略,踩過(guò)一坨坑后,發(fā)現(xiàn),這些策略其實(shí)和sft并無(wú)不同,造成了極大的資源浪費(fèi)和時(shí)間浪費(fèi)。
3. 做agent-rl的時(shí)候,agent-rl只需要寫一個(gè)推理引擎的多次采樣即可,而環(huán)境的穩(wěn)定性則更為重要。如果sft沒(méi)怎么做過(guò)agent-based的sft數(shù)據(jù),則環(huán)境積累基本為0,當(dāng)應(yīng)用agent-rl的時(shí)候,環(huán)境穩(wěn)定性會(huì)成為rl訓(xùn)練的阿喀琉斯之踵。尤其是agent環(huán)境,延時(shí)、返回結(jié)果的不確定性等等會(huì)加劇這個(gè)問(wèn)題。
token-level-loss分析
DAPO中提到了token-level-loss,這個(gè)議題在24年末在社區(qū)也引起了一些討論,尤其當(dāng)梯度累加較大的時(shí)候,會(huì)導(dǎo)致梯度累加訓(xùn)練和大batch訓(xùn)練loss有較大的差異,具體可參考[1]: 這里,第一行是 大batch的loss計(jì)算,第二行是ga=2的loss計(jì)算,顯然,主流框架實(shí)現(xiàn)的為第二行的loss計(jì)算,天然會(huì)比大batch計(jì)算的loss更大,對(duì)于長(zhǎng)文本訓(xùn)練會(huì)產(chǎn)生不利的影響。
在openrlhf/verl中,micro-batch-loss為token-level-loss計(jì)算,但有梯度累加的時(shí)候,也會(huì)存在類似的問(wèn)題。對(duì)于訓(xùn)練會(huì)有一定的影響。前期loss過(guò)大,優(yōu)化過(guò)于激進(jìn)。
實(shí)現(xiàn)梯度累加內(nèi)的token-level-loss也比較直觀,計(jì)算loss的時(shí)候,直接按照各個(gè)維度求和再除以當(dāng)前ga內(nèi)的總token數(shù):
if len(prefetch) == 0 or len(prefetch) % self.strategy.accumulated_gradient != 0:
prefetch.append(experience)
if len(prefetch) % self.strategy.accumulated_gradient == 0:
torch.distributed.barrier()
length_status = {
'response_length': prefetch[0].info['response_length'].sum()
}
for exp in prefetch[1:]:
length_status['response_length'] += exp.info['response_length'].sum()
length_status = self.strategy.all_reduce(length_status, op='sum')
grpo:無(wú)token-level-loss
grpo:有g(shù)a-token-level-loss
參考o(jì)rz的repeatness統(tǒng)計(jì),ga-token-level-loss會(huì)讓grpo優(yōu)化更穩(wěn)定一些,至少不會(huì)產(chǎn)生特別多的重復(fù),而none-token-level-loss訓(xùn)練到后期,repeatness、format崩潰會(huì)顯著上升(不加任何dataloader-filter、kl、entropy正則的情況下)。
對(duì)比reinforce_baseline 和grpo的異同點(diǎn)
(token-level-loss,不考慮kl、entropy等等)
reinforce_baseline的advantage計(jì)算:r-group_mean+全局歸一化
grpo的advantage計(jì)算:(r-group_mean)/group_std(group歸一化)
[3]中對(duì)grpo進(jìn)行了細(xì)致的分析和推導(dǎo):當(dāng)reward=0/1時(shí)(為一個(gè)隨機(jī)變量服從伯努利分布),我們有如下均值/方差的估計(jì)
對(duì)于reinforce_baseline來(lái)說(shuō),
全局std:由于進(jìn)行了局部均值歸一化,global-mean的期望=0,global-std為group的方差求和開根號(hào),global-std要大于group-std,當(dāng)采樣樣本無(wú)窮多時(shí),
如果不對(duì)group樣本做調(diào)整,當(dāng)group-std的標(biāo)準(zhǔn)差小到一定程度,會(huì)讓當(dāng)前的loss急劇增加,產(chǎn)生更為激進(jìn)的優(yōu)化。道理上,reinfroce_baseline和grpo有著類似的training-dynamics,而grpo的收斂速度要好于reinfroce_baseline,但穩(wěn)定性來(lái)說(shuō),不如reinforce_baseline。當(dāng)全局樣本都處于方差較小的狀態(tài),reinforce_baseline也會(huì)崩,只是要比grpo來(lái)的晚一些。
最后總結(jié)一下:
1. sft流程搬到online-replay-buffer采樣流程中,基本上就能做好online-rl(穩(wěn)定的online環(huán)境+魯棒的rl方法);
2. token-level-loss在ga層面實(shí)現(xiàn)也重要,畢竟,在rl訓(xùn)練時(shí),梯度累加都開的比較大,一種規(guī)避方式是一次采樣多次參數(shù)更新即更offpolicy一些;
3. reinforce_baseline和grpo有著類似的training-dynamics,二者的advantage只差一個(gè)系數(shù),道理上,reinforce_baseline會(huì)更穩(wěn)定,而grpo可能前期優(yōu)化會(huì)比較猛。
參考文獻(xiàn)
[1] Bug Fixes in LLM Training - Gradient Accumulation
[2] https://dapo-sia.github.io/static/pdf/dapo_paper.pdf
[3] REINFORCEMENT LEARNING WITH VERIFIABLE REWARDS: GRPO’S EFFECTIVE LOSS, DYNAMICS, AND SUCCESS AMPLIFICATION
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.