字節(jié)Seed首次開源代碼模型,拿下同規(guī)模多個(gè)SOTA,提出用小模型管理數(shù)據(jù)范式
字節(jié)Seed首次開源代碼模型!
Seed-Coder,8B規(guī)模,超越Qwen3,拿下多個(gè)SOTA。
它證明“只需極少人工參與,LLM就能自行管理代碼訓(xùn)練數(shù)據(jù)”。
通過自身生成和篩選高質(zhì)量訓(xùn)練數(shù)據(jù),可大幅提升模型代碼生成能力。
這可以被視為對(duì)DeepSeek-R1模型自我生成和篩選訓(xùn)練數(shù)據(jù)策略的擴(kuò)展。
一共包含三個(gè)版本:
- Base
- Instruct
- Reasoning
其中,Instruct在編程方面表現(xiàn)出色,拿下兩個(gè)測(cè)試基準(zhǔn)SOTA。
推理版本,在IOI 2024上超越了QwQ-32B和DeepSeek-R1。
模型上下文長(zhǎng)度32K,使用6T tokens訓(xùn)練,并采用寬松的MIT開源協(xié)議,完整代碼已發(fā)布在Hugging Face。
用模型管理訓(xùn)練數(shù)據(jù)
Seed-Coder的前身是doubao-coder,采用Llama 3結(jié)構(gòu),參數(shù)量為8.2B,6層,隱藏層大小為4096,采用分組查詢注意力(GQA)機(jī)制。
最關(guān)鍵的工作是數(shù)據(jù)的處理,Seed團(tuán)隊(duì)提出了一種“模型中心”的數(shù)據(jù)處理方式,使用模型來策劃數(shù)據(jù)。
具體來說,模型會(huì)從GitHub和網(wǎng)絡(luò)檔案爬取原始代碼數(shù)據(jù),經(jīng)過幾個(gè)處理步驟后輸出最終的預(yù)訓(xùn)練數(shù)據(jù)。
Seed-Coder的過濾數(shù)據(jù)分為四個(gè)類別:
- 文件級(jí)代碼:來自GitHub的單個(gè)代碼文件,經(jīng)過處理后保留了高質(zhì)量的代碼內(nèi)容。
- 倉(cāng)庫(kù)級(jí)代碼:基于倉(cāng)庫(kù)結(jié)構(gòu)的代碼文件,保留了項(xiàng)目結(jié)構(gòu)信息,使模型能學(xué)習(xí)到代碼間的關(guān)系。
- Commit數(shù)據(jù):GitHub提交的快照,包括提交信息、倉(cāng)庫(kù)元數(shù)據(jù)、相關(guān)文件和代碼補(bǔ)丁,包括來自14萬個(gè)高質(zhì)量倉(cāng)庫(kù)的7400萬次提交;
- 代碼相關(guān)網(wǎng)絡(luò)數(shù)據(jù):從網(wǎng)絡(luò)存檔中提取的包含代碼塊或高度代碼相關(guān)的文檔。
先看看代碼的處理,在預(yù)處理階段,系統(tǒng)在倉(cāng)庫(kù)和文件兩個(gè)層級(jí)實(shí)施去重,SHA256哈希進(jìn)行精確去重,并通過MinHash算法進(jìn)行近似去重。
這種雙層策略產(chǎn)生了兩種變體的代碼語料庫(kù)——文件級(jí)變體用于短上下文窗口訓(xùn)練,倉(cāng)庫(kù)級(jí)變體保留了項(xiàng)目結(jié)構(gòu)以支持更連貫的長(zhǎng)上下文學(xué)習(xí)。
隨后,系統(tǒng)使用Tree-sitter等語法解析器檢查剩余文件,丟棄那些包含語法錯(cuò)誤的文件。這個(gè)預(yù)處理階段總共減少了大約98%的原始數(shù)據(jù)量。
在質(zhì)量過濾階段,Seed-Coder使用一個(gè)經(jīng)過22萬+份代碼文檔特殊訓(xùn)練的評(píng)分模型來過濾低質(zhì)量代碼文件。
評(píng)分模型以DeepSeek-V2-Chat為基礎(chǔ),評(píng)價(jià)指標(biāo)包含四個(gè)關(guān)鍵方面:
- 可讀性:包含合理數(shù)量的注釋,遵循一致的命名規(guī)范,并遵循通用的格式和結(jié)構(gòu)規(guī)范;
- 模塊性:結(jié)構(gòu)合理,避免功能過于復(fù)雜或冗長(zhǎng),通過模塊化實(shí)現(xiàn)邏輯功能清晰分離;
- 清晰度:減少冗余,(如過多的函數(shù)調(diào)用、大段注釋代碼或調(diào)試打印語句),每個(gè)代碼塊的意圖表達(dá)清晰;
- 可重用性:沒有語法和邏輯錯(cuò)誤、避免過多硬編碼數(shù)據(jù)、設(shè)計(jì)便于與其他項(xiàng)目集成、功能完整且有意義。
評(píng)分模型被要求給出一個(gè)從0到10的總體評(píng)分,并提供詳細(xì)解釋,之后將分?jǐn)?shù)重新縮放到[0,1]范圍,并使用1.3B參數(shù)的預(yù)訓(xùn)練Llama 2模型,通過回歸頭進(jìn)行一個(gè)epoch的微調(diào)作為質(zhì)量評(píng)分器。
最終基于這種評(píng)分方法,Seed團(tuán)隊(duì)過濾掉了得分最低的約10%文件,得到了支持89種編程語言、包含約1萬億個(gè)獨(dú)特token的語料庫(kù)。
再來是Commit的部分,Seed-Coder從14萬個(gè)高質(zhì)量GitHub倉(cāng)庫(kù)中收集了7400萬個(gè)提交記錄。這些倉(cāng)庫(kù)的篩選標(biāo)準(zhǔn)包括:至少100顆星、10個(gè)fork、100次提交和100天的維護(hù)活動(dòng)。
每個(gè)提交記錄都包含豐富的元數(shù)據(jù),如提交消息、代碼補(bǔ)丁、合并狀態(tài)以及提交前的代碼快照。
為了在預(yù)訓(xùn)練中有效利用這些數(shù)據(jù),Seed-Coder將每個(gè)提交樣本格式化為一個(gè)代碼變更預(yù)測(cè)任務(wù)。給定一個(gè)提交消息及其相關(guān)上下文,模型需要預(yù)測(cè)被修改的文件路徑以及相應(yīng)的代碼變更。
在進(jìn)行去重和預(yù)處理后,Seed-Coder獲得了約1000億token的提交數(shù)據(jù)語料庫(kù)用于預(yù)訓(xùn)練。
對(duì)于從網(wǎng)絡(luò)獲取的數(shù)據(jù),Seed-Coder也提出了一個(gè)專門的提取框架。
在預(yù)處理階段,框架對(duì)大規(guī)模網(wǎng)絡(luò)檔案進(jìn)行高效預(yù)處理,并識(shí)別出兩類原始數(shù)據(jù):
- 第一類是HTML中帶有明確代碼標(biāo)簽(如
…
)的網(wǎng)頁(yè),這些可以通過標(biāo)準(zhǔn)規(guī)則直接提取; - 第二類是沒有明確代碼標(biāo)簽但可能包含代碼或相關(guān)知識(shí)的數(shù)據(jù),這類數(shù)據(jù)由于其體量和復(fù)雜性帶來了提取挑戰(zhàn)。
與GitHub數(shù)據(jù)處理類似,研究團(tuán)隊(duì)實(shí)施了精確和近似去重技術(shù),并開發(fā)了啟發(fā)式規(guī)則來在預(yù)處理階段剔除明顯的低質(zhì)量文檔(例如少于10個(gè)詞的文檔)。
在質(zhì)量過濾階段,框架采用兩個(gè)互補(bǔ)策略來確保數(shù)據(jù)質(zhì)量:首先是識(shí)別代碼相關(guān)性,然后評(píng)估已識(shí)別內(nèi)容的內(nèi)在質(zhì)量。
在代碼相關(guān)性識(shí)別步驟中,研究團(tuán)隊(duì)首先從Common Crawl數(shù)據(jù)中抽取了1000萬個(gè)網(wǎng)頁(yè)樣本,將具有代碼特征的頁(yè)面標(biāo)記出來,建立評(píng)估數(shù)據(jù)集。
這個(gè)數(shù)據(jù)集中70%用作訓(xùn)練集,用于訓(xùn)練fastText模型來自動(dòng)識(shí)別代碼相關(guān)內(nèi)容,剩余30%作為驗(yàn)證集來評(píng)估模型效果。
在質(zhì)量評(píng)估步驟中,系統(tǒng)使用LLM對(duì)已識(shí)別的代碼相關(guān)內(nèi)容進(jìn)行評(píng)分,評(píng)分標(biāo)準(zhǔn)采用0-10分制,評(píng)估內(nèi)容的規(guī)范性、完整性和價(jià)值。
但在實(shí)際評(píng)估過程中,研究者發(fā)現(xiàn)不同類型網(wǎng)站的得分出現(xiàn)了系統(tǒng)性偏差:
文檔網(wǎng)站、技術(shù)博客等由于格式規(guī)范、結(jié)構(gòu)清晰,普遍獲得較高分?jǐn)?shù);而技術(shù)論壇、問答平臺(tái)等網(wǎng)站,雖然往往包含有價(jià)值的技術(shù)討論和解決方案,但因其非正式的格式而得分較低。
為了解決這種評(píng)分偏差,研究團(tuán)隊(duì)對(duì)評(píng)分系統(tǒng)進(jìn)行了優(yōu)化——首先將網(wǎng)站按其內(nèi)容形式和功能進(jìn)行分類,然后為每類網(wǎng)站制定專門的評(píng)分標(biāo)準(zhǔn)和篩選閾值。
通過這套經(jīng)過優(yōu)化的雙重過濾機(jī)制,系統(tǒng)最終構(gòu)建了一個(gè)約1.2萬億tokens的網(wǎng)絡(luò)數(shù)據(jù)語料庫(kù)。
基于前面的四個(gè)數(shù)據(jù)類別,Seed-Coder的預(yù)訓(xùn)練分為了兩個(gè)階段。
其中,第一個(gè)階段為常規(guī)預(yù)訓(xùn)練,使用的是文件級(jí)代碼和代碼相關(guān)網(wǎng)絡(luò)數(shù)據(jù),目的是構(gòu)建模型的基礎(chǔ)能力。
第二個(gè)階段是持續(xù)預(yù)訓(xùn)練,使用所有四個(gè)類別的數(shù)據(jù),并額外引入了高質(zhì)量數(shù)據(jù)集和長(zhǎng)上下文數(shù)據(jù)集,以增強(qiáng)性能并進(jìn)行對(duì)齊,同時(shí)刺激模型理解長(zhǎng)上下文數(shù)據(jù)的能力。
除了常規(guī)的next-token預(yù)測(cè)目標(biāo)外,Seed-Coder還采用了Fill-in-the-Middle(FIM)和Suffix-Prefix-Middle(SPM)訓(xùn)練,分別增強(qiáng)上下文感知完成和中間內(nèi)容能力。
基于基礎(chǔ)模型,Seed團(tuán)隊(duì)還開發(fā)了Seed-Coder的兩個(gè)特殊變體——
- 指令模型(-Instruct):目的是增強(qiáng)模型的指令遵循能力,其訓(xùn)練分為監(jiān)督微調(diào)(SFT)第二階段和直接偏好優(yōu)化(DPO)兩個(gè)階段;
- 推理模型(-Reasoning):目的是提升模型在復(fù)雜編程任務(wù)中的多步推理能力,采用長(zhǎng)鏈條思維(LongCoT)強(qiáng)化學(xué)習(xí)訓(xùn)練。首先使用從編程競(jìng)賽問題和高質(zhì)量模型生成的解決方案進(jìn)行預(yù)熱訓(xùn)練,然后通過GRPO框架實(shí)施強(qiáng)化學(xué)習(xí)訓(xùn)練。
這兩個(gè)變體的設(shè)立,進(jìn)一步擴(kuò)展了Seed-Coder的實(shí)用性。
字節(jié)Seed最近更開放了
除了開源Seed-Coder外,字節(jié)Seed近期多個(gè)動(dòng)作也都聚焦在了降門檻、開源開放方面。
比如在基礎(chǔ)模型方面,發(fā)布了視頻生成和推理模型。
視頻生成模型Seaweed,70億參數(shù)原生支持1280x720分辨率、任意寬高比和時(shí)長(zhǎng)視頻生成,效果超越140億參數(shù)模型。
它強(qiáng)調(diào)了成本方面的優(yōu)勢(shì),使用665000 H100 GPU小時(shí)完成訓(xùn)練,中小團(tuán)隊(duì)可部署,僅需40GB顯存單GPU就可生成分辨率達(dá)1280x720的視頻。
深度思考模型Seed-Thinking-v1.5,更輕量級(jí)、更少激活參數(shù),在數(shù)學(xué)、代碼等推理任務(wù)重超越DeepSeek-R1。
同時(shí)團(tuán)隊(duì)公開技術(shù)報(bào)告,介紹其中秘訣,通過數(shù)據(jù)、RL算法和RL基礎(chǔ)設(shè)施三方面提升推理表現(xiàn)。
在智能體方面,與清華聯(lián)手推出了電腦操作智能體UI-TARS,超越GPT-4o等,且免費(fèi)商用。
它在Qwen-VL基礎(chǔ)上而來,能一步步自動(dòng)完成跨任務(wù)的復(fù)雜操作,并兼容各種系統(tǒng)。目前GitHub上星標(biāo)已超過5.8k。
此外還推出了Multi-SWE-bench:用于問題解決的多語言基準(zhǔn)。它跨越7種編程語言,包含1632個(gè)高質(zhì)量實(shí)例。
……
與此同時(shí),字節(jié)Seed內(nèi)部也在不斷調(diào)整。消息稱,LLM 之下的3個(gè)團(tuán)隊(duì),Pre-train(預(yù)訓(xùn)練)、Post-train(后訓(xùn)練) 和Horizon如今轉(zhuǎn)為直接向Seed負(fù)責(zé)人吳永輝匯報(bào)。字節(jié)AI Lab中探索機(jī)器人&具身智能、AI for Science和AI安全可解釋性的三個(gè)方向,也已并入Seed。
今年年初,字節(jié)正式設(shè)立代號(hào)為“Seed Edge”的研究項(xiàng)目,核心目標(biāo)是做比預(yù)訓(xùn)練和大模型迭代更長(zhǎng)期、更基礎(chǔ)的AGI前沿研究,項(xiàng)目成員擁有寬松的研究環(huán)境、獨(dú)立計(jì)算資源,并實(shí)行更長(zhǎng)期的考核方式。擬定五大研究方向也完全面向下一代AI研究、原始性創(chuàng)新,或者是范式上的更迭。
而透過字節(jié)的動(dòng)向,如今AI圈子的新風(fēng)向也更明朗了。
開源、開放、原始性創(chuàng)新、AI普惠……
言而總之,還得是感謝DeepSeek了?(doge)
項(xiàng)目地址:
https://bytedance-seed-coder.github.io/