你是否想過,LLM訓練自己的數據,還能比人類篩選的更有效率?傳統code大模型依賴人工制定規則篩選數據,成本高、效率低,還容易帶偏模型。
論文:Seed-Coder: Let the Code Model Curate Data for Itself
鏈接:https://github.com/ByteDance-Seed/Seed-Coder/blob/master/Seed-Coder.pdf
而Seed-Coder團隊直接“讓LLM自己當老師”,用模型篩選數據訓練自己,打造出一系列8B參數的輕量級開源程式碼模型,性能甚至超越百億級對手!
Seed-Coder
1. 自給自足的數據工廠傳統模型依賴人工規則過濾程式碼數據,比如“必須包含註解”“不能有語法錯誤”。但程式設計師審美各異,規則容易打架,擴充套件性差。Seed-Coder的解決方案很“暴力”:讓另一個LLM當裁判!團隊訓練了一個“程式碼品質評分器”,用LLM從可讀性、模組化、清晰度、複用性四個維度給程式碼打分,自動過濾低品質數據。
2. 小身材大智慧的模型架構Seed-Coder基於Llama 3架構,8.2B參數:
長上下文支持:通過倉庫級程式碼拼接,模型能處理32K超長程式碼檔案,輕鬆應對複雜專案。
填空訓練法(FIM):把程式碼隨機拆成前綴、中綴、後綴,讓模型學會“補全中間缺漏”,提升程式碼補全能力。公式如下:<[fim-suffix]> SUFFIX <[fim-prefix]> PREFIX <[fim-middle]> MIDDLE
這種訓練讓模型像玩拼圖一樣學習程式碼邏輯,效果遠超傳統單模式訓練。
3. 推理能力的訓練法Seed-Coder的推理模型用長思維鏈強化學習(LongCoT),專攻多步驟複雜編碼問題。簡單說,就是讓模型先寫解題思路,再生成程式碼,並通過反覆試錯最佳化邏輯鏈。比如解演算法題時,模型會先拆分問題:“第一步讀輸入,第二步排序,第三步計算極差……”再一步步寫程式碼。這種“先想後做”的策略,讓它在競賽級題庫中表現驚豔。
實際表現
Seed-Coder在多個權威測試中碾壓對手:
程式碼生成:在HumanEval+測試中,8B模型得分77.4,超過70B參數的CodeLlama!
程式碼補全:面對跨檔案補全任務,Seed-Coder的編輯相似度(ES)高達85.1%,吊打同規模模型。
軟體工程實戰:在GitHub真實問題修復測試(SWE-bench)中,Seed-Coder解決率19.2%,比32B模型QwQ還高!
更驚人的是,它甚至能在競賽編程平台Codeforces上達到1553分,接近人類銅獎水平!
未來展望:AI程式設計師要搶飯碗了?
儘管Seed-Coder表現亮眼,仍有局限:
通用能力不足:專注程式碼導致常識理解較弱,比如無法回答“如何做番茄炒蛋”。
數學能力短板:訓練數據中數學內容較少,解複雜數學題時容易翻車。
但團隊已規劃未來方向:
融合更多通用語料,打造“全能型”AI程式設計師
探索MoE架構,進一步壓縮模型體積
可以預見,這類輕量高效的程式碼模型將加速滲透開發工具鏈,成為程式設計師24小時在線的“超級助手”已經不遠了~(既感到欣慰,又感到危險有木有!
備註:暱稱-學校/公司-方向/會議(eg.ACL),進入技術/投稿群
id:DLNLPer,記得備註呦