打開網(wǎng)易新聞 查看精彩圖片

新智元報(bào)道

編輯:編輯部 HXs

【新智元導(dǎo)讀】OpenAI o1/o3-mini級(jí)別的代碼推理模型竟被搶先開源!UC伯克利和Together AI聯(lián)合推出的DeepCoder-14B-Preview,僅14B參數(shù)就能媲美o3-mini,開源代碼、數(shù)據(jù)集一應(yīng)俱全,免費(fèi)使用。

OpenAI o1/o3-mini級(jí)的推理模型,竟被搶先開源了?

打開網(wǎng)易新聞 查看精彩圖片

剛剛,來(lái)自UC伯克利和Together AI的聯(lián)合團(tuán)隊(duì),重磅推出了一款完全開源的代碼推理模型——DeepCoder-14B-Preview。

現(xiàn)在,只需要14B就可以擁有一個(gè)媲美o3-mini的本地模型,并且完全免費(fèi)!

打開網(wǎng)易新聞 查看精彩圖片

DeepCoder-14B-Preview通過(guò)分布式RL從Deepseek-R1-Distilled-Qwen-14B微調(diào)得來(lái)。

在LiveCodeBench基準(zhǔn)測(cè)試中,它的單次通過(guò)率(Pass@1)達(dá)到了60.6%,提升幅度高達(dá)8%。

至此,又見證了強(qiáng)化學(xué)習(xí)的勝利。

打開網(wǎng)易新聞 查看精彩圖片
打開網(wǎng)易新聞 查看精彩圖片

DeepCoder在訓(xùn)練過(guò)程中的LiveCodeBench (LCB) 得分:訓(xùn)練到第180步的時(shí)候,上下文長(zhǎng)度擴(kuò)展到了32K;用32K時(shí)最佳的檢查點(diǎn)來(lái)做推理,并且把上下文擴(kuò)展到64K,這時(shí)LCB得分能達(dá)到60.6%,和o3-mini性能相當(dāng)

同時(shí),團(tuán)隊(duì)還開源了verl-pipe,這是verl后訓(xùn)練系統(tǒng)的擴(kuò)展,集成了多項(xiàng)系統(tǒng)優(yōu)化,能讓端到端的訓(xùn)練速度提高2倍。

對(duì)此網(wǎng)友們稱贊:這是完全開源的勝利,不僅僅是模型,數(shù)據(jù)集、代碼、訓(xùn)練日志也開放。

打開網(wǎng)易新聞 查看精彩圖片

值得一提的是,DeepCoder-14B-Preview基于24K個(gè)可驗(yàn)證的編程問(wèn)題,在32個(gè)H100 GPU上訓(xùn)練了2.5周。

數(shù)據(jù)集構(gòu)建

數(shù)學(xué)領(lǐng)域的研究發(fā)現(xiàn),強(qiáng)化學(xué)習(xí)要是有可驗(yàn)證的獎(jiǎng)勵(lì)機(jī)制,能顯著提升模型的推理能力。

在數(shù)學(xué)領(lǐng)域,網(wǎng)上能找到好多高質(zhì)量、可驗(yàn)證的數(shù)據(jù),編程則相對(duì)稀缺。

在早期實(shí)驗(yàn)中,團(tuán)隊(duì)評(píng)估了幾個(gè)常見的代碼數(shù)據(jù)集,像APPS、TACO、CodeContests、KodCode和LeetCode。

結(jié)果發(fā)現(xiàn),有些數(shù)據(jù)集對(duì)模型來(lái)說(shuō)太簡(jiǎn)單了,如KodCode和LeetCode;還有些數(shù)據(jù)集有噪聲,或者里面的測(cè)試用例有缺陷、不完整,不可驗(yàn)證。這會(huì)給出錯(cuò)誤的獎(jiǎng)勵(lì)信號(hào),讓RL訓(xùn)練無(wú)法穩(wěn)定進(jìn)行。

為解決這些問(wèn)題,研究者整理出一個(gè)高質(zhì)量的訓(xùn)練集,包括:

  • TACO里已驗(yàn)證過(guò)的問(wèn)題。

  • PrimeIntellect的SYNTHETIC-1數(shù)據(jù)集中經(jīng)驗(yàn)證的問(wèn)題。

  • 2023年5月1日到2024年7月31日提交的LiveCodeBench問(wèn)題。

為保證數(shù)據(jù)質(zhì)量,讓RL訓(xùn)練能順利開展,有一套嚴(yán)格的過(guò)濾流程:

  • 程序化驗(yàn)證:每個(gè)問(wèn)題都會(huì)用外部官方的解法自動(dòng)檢查一遍,只保留官方解法能通過(guò)所有單元測(cè)試的問(wèn)題,檢查過(guò)程在tests/rewards/test_code_batch.py腳本中自動(dòng)完成。

  • 測(cè)試過(guò)濾:每個(gè)問(wèn)題至少包含5個(gè)單元測(cè)試。測(cè)試用例少的問(wèn)題容易讓模型鉆空子,模型通過(guò)識(shí)別常見測(cè)試用例,學(xué)會(huì)簡(jiǎn)單地輸出記憶的答案,即「獎(jiǎng)勵(lì)黑客」。

  • 去重:研究者會(huì)把數(shù)據(jù)集中重復(fù)的問(wèn)題都去掉,防止互相干擾。他們對(duì)Taco Verified、PrimeIntellect SYNTHETIC-1和LCB(2023年5月1日-2024年7月31日)這三個(gè)訓(xùn)練數(shù)據(jù)集做了去重處理,還檢查了測(cè)試數(shù)據(jù)集LCB(2024年8月1日-2025年2月1日)和Codeforces的57個(gè)競(jìng)賽數(shù)據(jù)集。

過(guò)濾后,得到24K個(gè)高質(zhì)量的編程問(wèn)題,用于RL訓(xùn)練,其中7.5K個(gè)來(lái)自TACO Verified,16K個(gè)來(lái)自PrimeIntellect SYNTHETIC-1,600個(gè)來(lái)自LiveCodeBench。

代碼沙盒環(huán)境

為了計(jì)算代碼RL訓(xùn)練的獎(jiǎng)勵(lì),得在代碼沙盒里,對(duì)模型生成的代碼進(jìn)行單元測(cè)試。

每個(gè)RL迭代過(guò)程,用1024個(gè)問(wèn)題來(lái)評(píng)估訓(xùn)練效果,每個(gè)問(wèn)題至少有5個(gè)單元測(cè)試。

這么多測(cè)試任務(wù),就得靠100多個(gè)代碼沙盒一起并行運(yùn)行,才能在合理的時(shí)間內(nèi),準(zhǔn)確驗(yàn)證模型生成的代碼。

目前,研究者用了兩種沙盒:Together代碼解釋器和本地代碼沙盒。

Together代碼解釋器

這個(gè)環(huán)境速度快、效率高,能直接用在RL訓(xùn)練上,每個(gè)問(wèn)題的成本僅3美分。

Together代碼解釋器已支持100多個(gè)沙盒同時(shí)運(yùn)行,每分鐘能執(zhí)行1000多次沙盒操作。

這些沙盒能訪問(wèn)標(biāo)準(zhǔn)輸出(stdout)、標(biāo)準(zhǔn)輸入(stdin),還能評(píng)估代碼最后一行輸出的結(jié)果。

同時(shí),它能把代碼運(yùn)行的環(huán)境和主機(jī)系統(tǒng)隔離開,保證安全。

本地代碼沙盒

本地代碼沙盒是通過(guò)啟動(dòng)一個(gè)獨(dú)立的、有防護(hù)的Python子進(jìn)程來(lái)運(yùn)行的。它從標(biāo)準(zhǔn)輸入(stdin)接收測(cè)試用例的輸入,然后把答案輸出到標(biāo)準(zhǔn)輸入(stdout)。

本地沙盒用的是LiveCodeBench官方代碼庫(kù)里的評(píng)估代碼,確保測(cè)試結(jié)果和現(xiàn)有排行榜一致。

獎(jiǎng)勵(lì)函數(shù)

有些獎(jiǎng)勵(lì)方式容易讓模型作弊,比如給思維鏈(CoT)懲罰,或者N個(gè)測(cè)試中有K個(gè)通過(guò)就給K/N獎(jiǎng)勵(lì)。

獎(jiǎng)勵(lì)函數(shù)采用稀疏結(jié)果獎(jiǎng)勵(lì)模型(ORM),具體獎(jiǎng)勵(lì)規(guī)則是這樣的:

  • 獎(jiǎng)勵(lì)為「1」:生成的代碼必須通過(guò)所有抽選的單元測(cè)試。有些問(wèn)題有幾百個(gè)測(cè)試用例,全部驗(yàn)證不太現(xiàn)實(shí),所以會(huì)根據(jù)輸入字符串的長(zhǎng)度,每個(gè)問(wèn)題挑出15個(gè)最難的測(cè)試(根據(jù)輸入字符串的長(zhǎng)度來(lái)判斷)。

  • 獎(jiǎng)勵(lì)為「0」:要是模型生成的代碼有一個(gè)測(cè)試用例沒(méi)通過(guò),或者答案格式不對(duì)(比如缺少python[CODE]標(biāo)記),就沒(méi)有獎(jiǎng)勵(lì)。每個(gè)測(cè)試用例都有6-12秒的時(shí)間限制。

訓(xùn)練方法

GRPO+

研究者參考了DAPO的關(guān)鍵思路,改進(jìn)了GRPO算法,讓訓(xùn)練過(guò)程更穩(wěn)定:

打開網(wǎng)易新聞 查看精彩圖片

GRPO+和GRPO在16K上下文訓(xùn)練中的平均訓(xùn)練獎(jiǎng)勵(lì):GRPO的獎(jiǎng)勵(lì)曲線最后會(huì)崩潰,GRPO+因?yàn)橛蠧lip High機(jī)制,獎(jiǎng)勵(lì)曲線保持穩(wěn)定

  • 無(wú)熵損失:加上熵?fù)p失項(xiàng),很容易讓訓(xùn)練不穩(wěn)定,熵值指數(shù)級(jí)增長(zhǎng),導(dǎo)致訓(xùn)練崩潰。因此移除了熵?fù)p失項(xiàng)。

  • 無(wú)KL損失(源自DAPO):去掉KL散度損失,LLM就不會(huì)被限制在原來(lái)監(jiān)督微調(diào)(SFT)模型的置信區(qū)域內(nèi)。還能省掉為參考策略計(jì)算對(duì)數(shù)概率,訓(xùn)練速度也就更快了。

  • 超長(zhǎng)過(guò)濾(源自DAPO):為保留長(zhǎng)上下文推理能力,對(duì)超出長(zhǎng)度而被截?cái)嗟男蛄凶隽颂厥馓幚?。這項(xiàng)技術(shù)使DeepCoder即使在32K上下文環(huán)境中訓(xùn)練,在64K上下文下也能推理。這種過(guò)濾方法允許響應(yīng)長(zhǎng)度自然增長(zhǎng),而不會(huì)因截?cái)喽艿綉土P。

打開網(wǎng)易新聞 查看精彩圖片

由于采用超長(zhǎng)過(guò)濾機(jī)制,GRPO+的響應(yīng)長(zhǎng)度隨訓(xùn)練時(shí)間穩(wěn)步增長(zhǎng)

  • Clip High(源自DAPO):通過(guò)提高GRPO/PPO代理?yè)p失的上限,鼓勵(lì)模型嘗試更多不同的可能,熵值也更穩(wěn)定。這樣調(diào)整后,訓(xùn)練更穩(wěn)定,模型性能也有提升。

打開網(wǎng)易新聞 查看精彩圖片

Clip High機(jī)制和沒(méi)有熵?fù)p失,能保證GRPO+的token級(jí)熵不會(huì)崩潰,鼓勵(lì)模型充分探索

迭代式上下文擴(kuò)展

在DeepScaleR的介紹中,提到過(guò)迭代式上下文擴(kuò)展技術(shù)。它能讓模型先在短一點(diǎn)的上下文里學(xué)會(huì)有效思考,然后再應(yīng)用到更長(zhǎng)的上下文。

這個(gè)方法曾讓1.5B參數(shù)模型的下游任務(wù)性能穩(wěn)步提升,隨著上下文窗口從8K擴(kuò)大到16K,再到24K的過(guò)程中,在AIME測(cè)試?yán)锏臏?zhǔn)確率從33%提高到38%,最后到了43%,最終達(dá)到了o1-preview的水平。

不過(guò),將這個(gè)技術(shù)用在14B參數(shù)模型的時(shí)候,遇到了新問(wèn)題:

  • 14B參數(shù)模型本身推理能力就很強(qiáng),想要再提升,就得解決更難的問(wèn)題。

  • 這些更難的問(wèn)題往往需要比8K更長(zhǎng)的上下文窗口,而8K是之前小模型訓(xùn)練的起始上下文長(zhǎng)度。

如果一開始用短上下文訓(xùn)練,模型輸出超出這個(gè)長(zhǎng)度就懲罰它,這樣做效果不好。模型的初始性能會(huì)下降,輸出的內(nèi)容也會(huì)變短,長(zhǎng)上下文的推理能力也會(huì)變?nèi)酢?/p>

為了在保證訓(xùn)練效率的同時(shí),讓模型能處理長(zhǎng)上下文推理,研究者引入了DAPO的超長(zhǎng)過(guò)濾技術(shù)。在訓(xùn)練的時(shí)候,會(huì)忽略那些因?yàn)樘L(zhǎng)被截?cái)嗟男蛄?,這樣模型就算生成的內(nèi)容長(zhǎng)一點(diǎn),也不會(huì)被懲罰。

因此,模型即使在較短的上下文中訓(xùn)練,也能「想得長(zhǎng)遠(yuǎn)」。

研究者把迭代上下文擴(kuò)展用在DeepCoder-14B-Preview上,把訓(xùn)練的上下文窗口從16K擴(kuò)大到32K,LiveCodeBench基準(zhǔn)測(cè)試中,模型表現(xiàn)如下:

  • 在16K和32K上下文長(zhǎng)度下,準(zhǔn)確率從54%提升至58%。

  • 在64K上下文長(zhǎng)度評(píng)估時(shí),達(dá)到了60.6%。

這說(shuō)明模型的泛化能力很強(qiáng),超出了訓(xùn)練時(shí)的上下文范圍也能表現(xiàn)得很好。

和DeepSeek-R1-Distill-Qwen-14B這種基礎(chǔ)蒸餾模型比起來(lái),DeepCoder-14B-Preview的泛化能力就更突出了。

基礎(chǔ)蒸餾模型一旦超出訓(xùn)練時(shí)的上下文長(zhǎng)度,性能就很難提升了。

打開網(wǎng)易新聞 查看精彩圖片

雖然DeepCoder因?yàn)槠骄憫?yīng)長(zhǎng)度較長(zhǎng),在16K上下文長(zhǎng)度下的原始性能低一些,會(huì)因?yàn)榻財(cái)嗪透袷絾?wèn)題扣分,但它在長(zhǎng)上下文的推理能力很強(qiáng),最終在64K上下文長(zhǎng)度的評(píng)估中超越了其他模型。

打開網(wǎng)易新聞 查看精彩圖片

DeepCoder在訓(xùn)練過(guò)程中的平均響應(yīng)長(zhǎng)度和訓(xùn)練獎(jiǎng)勵(lì):平均響應(yīng)長(zhǎng)度從8K增長(zhǎng)到17.5K

DeepCoder的成功,正是把迭代上下文擴(kuò)展和超長(zhǎng)過(guò)濾技術(shù)結(jié)合起來(lái)了。

從圖中可以看到,在訓(xùn)練過(guò)程中,模型的平均響應(yīng)長(zhǎng)度從8K增長(zhǎng)到17.5K,平均獎(jiǎng)勵(lì)也從0.6提高到 0.7。說(shuō)明隨著時(shí)間推移,模型學(xué)會(huì)了更厲害、更有條理的思考方式。

關(guān)鍵技術(shù)改進(jìn)

在多種編程基準(zhǔn)上對(duì) Deepcoder-14B-Preview 進(jìn)行了評(píng)估,包括LiveCodeBench (LCB)、Codeforces、HumanEval+以及AIME2024數(shù)學(xué)競(jìng)賽。

憑借14B的參數(shù)量,模型在所有編程基準(zhǔn)上均展現(xiàn)出強(qiáng)勁性能:在LiveCodeBench上實(shí)現(xiàn)了60.6%的Pass@1準(zhǔn)確率,在Codeforces上獲得了1936的評(píng)分,其表現(xiàn)可與o3-mini (low) 和o1模型相媲美。

打開網(wǎng)易新聞 查看精彩圖片

訓(xùn)練耗時(shí)太長(zhǎng)?系統(tǒng)優(yōu)化來(lái)幫忙

使用長(zhǎng)上下文對(duì)LLM進(jìn)行強(qiáng)化學(xué)習(xí)(RL)訓(xùn)練非常耗時(shí),需要在長(zhǎng)上下文環(huán)境中反復(fù)進(jìn)行采樣和訓(xùn)練。

若無(wú)系統(tǒng)層面的優(yōu)化,完整的訓(xùn)練流程可能耗費(fèi)數(shù)周乃至數(shù)月。14B參數(shù)編程模型訓(xùn)練,每一步就得花1200至2500秒,總訓(xùn)練時(shí)長(zhǎng)達(dá)到2.5周!

團(tuán)隊(duì)引入并開源了verl-pipeline。它是開源RLHF庫(kù)verl的一個(gè)優(yōu)化版本,用了多項(xiàng)系統(tǒng)級(jí)改進(jìn)措施,旨在加速端到端的RL訓(xùn)練過(guò)程。

相較于基準(zhǔn)的verl實(shí)現(xiàn),verl-pipeline實(shí)現(xiàn)了高達(dá)2.5倍的速度提升。

運(yùn)用這些新的系統(tǒng)優(yōu)化來(lái)訓(xùn)練DeepCoder-1.5B-Preview模型,該模型在LiveCodeBench上的準(zhǔn)確率達(dá)到了25%,相比Deepseek-R1-Distill-Qwen-1.5B提升了8%。

采樣器是瓶頸

在后訓(xùn)練中,采樣往往是拖慢整體進(jìn)度的關(guān)鍵因素。這是因?yàn)橛胿LLM和SGLang這類推理引擎生成32K token的長(zhǎng)序列時(shí),會(huì)產(chǎn)生延遲。

打開網(wǎng)易新聞 查看精彩圖片

Verl的PPO/GRPO訓(xùn)練流程:每次RL迭代都包含采樣、獎(jiǎng)勵(lì)函數(shù)計(jì)算和訓(xùn)練這三個(gè)階段;其中,采樣是整個(gè)訓(xùn)練流程的瓶頸,訓(xùn)練速度受限于那些生成較長(zhǎng)序列的掉隊(duì)采樣器(straggler samplers)

RL訓(xùn)練系統(tǒng)通常受限于采樣時(shí)間——上圖展示了Verl的PPO/GRPO流水線,其中響應(yīng)長(zhǎng)度的不一致性導(dǎo)致部分采樣器成為掉隊(duì)者。

這些掉隊(duì)者會(huì)拖慢訓(xùn)練進(jìn)度,而先完成任務(wù)的采樣器則處于空閑狀態(tài),從而導(dǎo)致GPU利用率低下。

樸素解決方案:小批流水線化

為了減少RL訓(xùn)練過(guò)程中的空閑時(shí)間,研究者將采樣和訓(xùn)練過(guò)程流水線化(Minibatch Pipelining)。

如此一來(lái),訓(xùn)練器在采樣器繼續(xù)生成后續(xù)數(shù)據(jù)批次的同時(shí),就會(huì)開始利用較早到達(dá)的小批數(shù)據(jù)進(jìn)行模型更新。這種重疊執(zhí)行有助于減少采樣帶來(lái)的延遲。

打開網(wǎng)易新聞 查看精彩圖片

小批流水線:采樣器和訓(xùn)練器分別在不同的工作機(jī)組中運(yùn)行;當(dāng)完成采樣并釋放小批量數(shù)據(jù)(用于PPO/GRPO訓(xùn)練)后,訓(xùn)練器會(huì)異步處理這些數(shù)據(jù);在一次迭代結(jié)束時(shí),訓(xùn)練器會(huì)將更新后的權(quán)重給采樣器

然而,這種方法存在三個(gè)關(guān)鍵的局限性:

  1. 小批數(shù)據(jù)的平均序列長(zhǎng)度往往隨訓(xùn)練進(jìn)展而增長(zhǎng),這增加了處理后續(xù)小批的訓(xùn)練時(shí)間。結(jié)果就是,最后幾個(gè)小批數(shù)據(jù)常常在采樣階段結(jié)束后才能處理完畢,從而限制了流水線化帶來(lái)的實(shí)際效益。

  2. 流水線化需要在采樣器和訓(xùn)練器之間靜態(tài)劃分GPU資源,這減少了可用采樣器的數(shù)量。不同于Verl可以在同一個(gè)GPU池中動(dòng)態(tài)地切換采樣器和訓(xùn)練器角色,這種靜態(tài)劃分因采樣器數(shù)量減少,可能反而會(huì)延長(zhǎng)端到端的總采樣時(shí)間。

  3. 獎(jiǎng)勵(lì)函數(shù)的計(jì)算可能耗時(shí)很長(zhǎng),特別是對(duì)于編程類任務(wù),每個(gè)RL迭代都需要運(yùn)行數(shù)千個(gè)單元測(cè)試。在Verl的默認(rèn)設(shè)置中,獎(jiǎng)勵(lì)計(jì)算是在所有采樣任務(wù)完成后,在頭節(jié)點(diǎn)(head node)上集中進(jìn)行的。

盡管存在這些約束,團(tuán)隊(duì)在代碼庫(kù)的ray_trainer_pipeline.py文件中實(shí)現(xiàn)了小批流水線化,并且需要指出的是,這種流水線技術(shù)可以通過(guò)引入微批處理(microbatching)來(lái)進(jìn)一步優(yōu)化。

DeepCoder的解決方案:一次性流水線化

為實(shí)現(xiàn)訓(xùn)練、獎(jiǎng)勵(lì)計(jì)算和采樣的完全流水線化,研究者引入了一次性流水線化(One-Off Pipelining)。

打開網(wǎng)易新聞 查看精彩圖片

一次性流水線:采樣器會(huì)提前一個(gè)迭代周期生成一批數(shù)據(jù),而訓(xùn)練器則使用上一次迭代的數(shù)據(jù)來(lái)更新梯度;此外,獎(jiǎng)勵(lì)函數(shù)的計(jì)算與采樣過(guò)程是交錯(cuò)進(jìn)行的;這種方法不會(huì)為GRPO/PPO的策略算法引入異步離策略樣本

其思路非常簡(jiǎn)單:犧牲第一個(gè)RL迭代,僅執(zhí)行采樣任務(wù),然后利用這個(gè)采樣得到的數(shù)據(jù)批次在下一個(gè)迭代中進(jìn)行訓(xùn)練。

這樣一來(lái),采樣和訓(xùn)練就能并行處理,徹底消除了采樣完成后訓(xùn)練器的等待空閑時(shí)間。

其次,獎(jiǎng)勵(lì)計(jì)算被嵌入到采樣流程中,與之交錯(cuò)執(zhí)行。

一旦某個(gè)采樣請(qǐng)求完成,其對(duì)應(yīng)的獎(jiǎng)勵(lì)會(huì)立即被計(jì)算出來(lái)——這有效減少了獎(jiǎng)勵(lì)評(píng)估環(huán)節(jié)的開銷,特別是對(duì)于計(jì)算密集型任務(wù)(例如編程任務(wù)中的測(cè)試用例執(zhí)行)而言效果顯著。

團(tuán)隊(duì)在代碼庫(kù)verl分支(fork)中的ray_trainer_async.py文件里實(shí)現(xiàn)了一次性流水線化。

端到端性能

打開網(wǎng)易新聞 查看精彩圖片

一次性流水線完全掩蓋了訓(xùn)練器和獎(jiǎng)勵(lì)計(jì)算的時(shí)間,數(shù)學(xué)任務(wù)訓(xùn)練時(shí)間縮短1.4倍,編程任務(wù)縮短2倍

上圖展示了對(duì)verl、小批流水線化和一次性流水線化在兩種工作負(fù)載(數(shù)學(xué)和編程)下的評(píng)估結(jié)果。

為確保公平性,所有基準(zhǔn)方法都利用Python線程池并行計(jì)算獎(jiǎng)勵(lì);而verl官方實(shí)現(xiàn)是串行計(jì)算每個(gè)樣本的獎(jiǎng)勵(lì),這種方式對(duì)于編程任務(wù)來(lái)說(shuō)耗時(shí)過(guò)長(zhǎng),難以實(shí)際應(yīng)用。

在8塊A100 GPU上對(duì)Deepcoder-1.5B-Preview進(jìn)行了評(píng)估,并細(xì)致調(diào)整了采樣器與訓(xùn)練器的資源配比,旨在更好地平衡兩者所需的時(shí)間開銷。

  • 對(duì)于數(shù)學(xué)任務(wù):一次性流水線化將每次RL迭代所需時(shí)間縮短了1.4倍。值得注意的是,數(shù)學(xué)任務(wù)的獎(jiǎng)勵(lì)計(jì)算時(shí)間幾乎為零,因?yàn)樗鼉H涉及基礎(chǔ)的Sympy檢查。特別之處在于,一次性流水線化能夠完全掩蓋(mask away)訓(xùn)練器所需的時(shí)間,這與小批流水線化中最后一個(gè)小批會(huì)「溢出」(spill over)導(dǎo)致延遲的情況形成了對(duì)比。

  • 對(duì)于編程任務(wù):計(jì)算獎(jiǎng)勵(lì)需要在每次RL迭代中運(yùn)行數(shù)千個(gè)單元測(cè)試,這是一個(gè)非常耗時(shí)的過(guò)程。一次性流水線化能夠同時(shí)掩蓋訓(xùn)練器時(shí)間和獎(jiǎng)勵(lì)計(jì)算時(shí)間,從而將端到端的訓(xùn)練總時(shí)長(zhǎng)縮短了2倍。

最關(guān)鍵的是,一次性流水線化不僅切實(shí)有效,而且能成功擴(kuò)展應(yīng)用于復(fù)雜的編程任務(wù)。

DeepCoder使用ray_trainer_async.py(采用一次性流水線化)訓(xùn)練了DeepCoder-1.5B-Preview,其在 LiveCodeBench (LCB) 上的得分相較于基礎(chǔ)的蒸餾模型提升了8%。

打開網(wǎng)易新聞 查看精彩圖片

作者介紹

Sijun Tan(譚嗣俊

打開網(wǎng)易新聞 查看精彩圖片

譚嗣俊是UC伯克利計(jì)算機(jī)科學(xué)專業(yè)的三年級(jí)博士生,導(dǎo)師是Raluca Ada Popa。隸屬于伯克利的Sky Computing Lab。

此前,他在弗吉尼亞大學(xué)獲得計(jì)算機(jī)科學(xué)和數(shù)學(xué)雙學(xué)士學(xué)位,導(dǎo)師是David Wu和Yuan Tian。

他曾在Facebook AI Research(FAIR)實(shí)習(xí)過(guò)一段時(shí)間,并在螞蟻集團(tuán)擔(dān)任過(guò)高級(jí)算法工程師。

他的研究領(lǐng)域涵蓋機(jī)器學(xué)習(xí)、計(jì)算機(jī)安全和應(yīng)用密碼學(xué)。目前,其研究重點(diǎn)是增強(qiáng)通用型AI智能體的能力和魯棒性。

Michael Luo

打開網(wǎng)易新聞 查看精彩圖片

Michael Luo目前是UC伯克利電氣工程與計(jì)算機(jī)科學(xué)系(EECS)的博士生,導(dǎo)師是Ion Stoica教授。

在此之前,他獲得了UC伯克利電氣工程與計(jì)算機(jī)科學(xué)碩士和工商管理雙學(xué)士學(xué)位。

他的研究興趣主要在人工智能和系統(tǒng)領(lǐng)域。目前,其研究主要是為機(jī)器學(xué)習(xí)從業(yè)者構(gòu)建可擴(kuò)展的系統(tǒng),以實(shí)現(xiàn)Sky Computing的愿景。

Roy Huang

打開網(wǎng)易新聞 查看精彩圖片

Roy Huang目前是UC伯克利計(jì)算機(jī)科學(xué)專業(yè)的大四學(xué)生,對(duì)CV和NLP領(lǐng)域的研究感興趣。

參考資料:

https://pretty-radio-b75.notion.site/DeepCoder-A-Fully-Open-Source-14B-Coder-at-O3-mini-Level-1cf81902c14680b3bee5eb349a512a51

https://huggingface.co/agentica-org/DeepCoder-14B-Preview

https://x.com/togethercompute/status/1909697124805333208