豆包代碼大模型,不小心給曝光了!
在字節開源的代碼大模型評估基準 FullStack Bench 裏面,出現了此前字節未披露過的 Doubao-Coder。
不過目前還隻是 Preview 版,還并沒有上線。
它在多種編程語言上的性能表現如下,可以看到在閉源模型中排名第五。
今年 6 月,字節還發布了 AI 編程助手豆包MarsCode。據傳即由 Doubao-Coder 模型支撐。
目前,豆包 MarsCode 每月爲用戶貢獻百萬量級代碼。
而回到這個評估基準,據介紹 FullStack Bench 是目前最全面的代碼評估數據集。
團隊還同步開源了可随時測評代碼大模型的沙盒執行環境 SandBox Fusion,單服務器即可部署,也可直接在線體驗。
全新代碼大模型評估基準 FullStack Bench
既然如此,那就先來了解一下這個最新評估基準。
有一說一,現在代碼大模型越來越卷,評估 AI 編程水平的 " 考卷 " 也被迫升級 ~
代碼評估基準可以幫助代碼大模型不斷優化。不過,當前的主流基準越來越難以反映代碼大模型的真實水平了。
主要體現在題目類型相對單調,覆蓋的應用領域和編程語言少,模型即便在考試中拿了高分,現實中可能還是難以應對複雜的編程問題。
爲了更真實地評估 AI 編程水平,字節豆包大模型團隊聯合 M-A-P 社區,開源了全新代碼大模型評估基準 FullStack Bench。
這是一個專注于全棧編程和多語言編程的代碼評估數據集,它首次囊括了編程全棧技術中超過 11 類真實場景,覆蓋 16 種編程語言,包含 3374 個問題。
FullStack Bench 的應用領域抽取自全球最大的程序員技術問答社區 Stack Overflow,相比 HumanEval 等基準覆蓋的編程領域擴大了一倍以上。
此前業界基準難以反映真實世界代碼開發的多樣性和複雜性。
例如,HumanEval 和 MBPP 中近 80% 數據隻聚焦于基礎編程和高級編程問題;DS-1000 中超過 95% 數據集中于數據分析和機器學習,且僅對 Python 語言進行評測;xCodeEval 雖覆蓋多項任務,但基本局限于高級編程和數學領域;McEval 和 MDEval 擴展了支持的編程語言,但應用領域仍局限于基礎編程和高級編程,未涉及更廣泛的場景。
爲模拟全棧開發的實際應用場景,字節豆包大模型和 M-A-P 研究團隊分析了全球最大的程序員技術問答社區 Stack Overflow 上的問題分布,從中提煉出常見的真實編程應用領域。
團隊從 Stack Overflow 上随機抽取了 50 萬個問題,并使用大模型爲每個問題标注應用領域類型。
研究團隊篩選出占總問題數前 88.1% 的主要應用領域,其餘領域歸類爲 " 其他 "。再通過對領域分布做适當調整來保證魯棒性,最終形成了 FullStack Bench 關注的超過 11 種應用場景及分布比例。
FullStack Bench 包含 3374 個問題(中文及英文問題各占一半),每個問題均包括題目描述、參考解決方案、單元測試用例及标簽,總計 15168 個單元測試。
爲保證評估準确性,每個問題内容均由相關領域的編程專家設計,并經 AI 和人工驗證進行質量複核。例如,數據分析相關問題,由數據工程專家提出并把關配套内容。
在初始數據集構建後,團隊根據主流代碼大模型測試結果,按問題難度、模糊性和可解性對數據質量進行了交叉評估和進一步完善。
FullStack Bench 數據構成情況如下圖所示。
爲方便開發者對大模型代碼能力進行系統性測試,豆包大模型團隊還開源了一款高效的代碼沙盒執行工具—— SandboxFusion,用于評估來自不同語言的不同編程任務。
除了 FullStack Bench,SandboxFusion 還兼容超過 10 種廣泛使用的代碼評估數據集,支持 23 種編程語言。開發者在單服務器上即可輕松部署 SandboxFusion,也可直接在 GitHub 上進行體驗。
評測結果:解決難題,閉源模型仍優于開源模型
發布評測基準及沙盒的同時,研究團隊也基于 FullStack Bench 測評了全球 20 餘款代碼大模型及語言大模型的編程表現。
模型包括 Qwen2.5-Coder、DeepSeek-Coder-v2、CodeLlama 等開源模型,以及 GPT-4o、OpenAI-o1、Doubao-Coder-Preview 等閉源模型。對于開源模型,根據模型大小,分爲五個組别:1B+、6B+、13B+、20B+ 和 70B+。
跨領域表現:數學編程領域差異最大
得益于強大的推理能力,OpenAI o1-preview 不出所料地領先。
不過,一些開源模型也有不錯的表現。如 DeepSeekCoderv2-Instruct,在 AP ( 高級編程)、OS ( 操作系統)和其他類别中得到高分,拉開了與其他開源模型的差距。
OpenCoder-1.5B-Instruct、Qwen2.5-Coder-7B-Instruct、Qwen2.5-Coder-14B-Instruct 在其各自開源組别中拔得頭籌,并超越了一些更高參數級别的模型。
爲了全面評估現有大語言模型在不同場景下的表現,研究團隊可視化了模型在 FullStack Bench 各領域的表現。
在 BP(基礎編程)、AP(高級編程)、MA(數學編程)、ML(機器學習)和 MM(多媒體)等領域中,模型表現差異顯著,其中以 MA 領域的差距最大。
MA 最佳表現者爲 OpenAI o1-preview(得分 80.42),而最差的是 CodeLlama-34B-Instruct(得分 14.34)。數學編程要求模型同時具備數學和編程能力,那些在高度專業化代碼語料庫上訓練的模型,在 MA 領域往往表現較差。
這一結果進一步證明,FullStack Bench 能夠更全面地評估模型的綜合編程能力。
跨語言表現:C++、C 和 Ruby 上存較大差異
研究團隊對不同模型在多種編程語言上的性能表現進行了分析。
大多數模型在 Bash 編程任務中表現良好。然而,在 C++、C 和 Ruby 的表現上存在較大差異,這表明模型設計者可能在訓練語料庫中對這些語言進行了選擇性采樣。部分 1B+ 的小型模型在 D、R 和 Scala 語言上的表現較差,其通過率低于 10%,這表明它們的多語言處理能力都較弱。
由于 SandboxFusion 提供了來自編譯器的反饋,研究人員評估了模型在部分編程語言上的編譯通過率。實驗結果表明,編譯通過率與測試通過率之間存在正相關關系,但編譯通過并不意味着測試一定通過。同時,研究還探讨了中英文表達對模型性能的影響。
解決難題,閉源模型普遍優于開源模型
不同模型在不同難度問題上的表現存在明顯差異。總體而言,1B+ 模型和 CodeLlama 系列在所有難度級别上的表現均不盡如人意。其餘模型在解決簡單問題時表現相似,但在中等難度問題上存在一定差距。對于難度較大的問題,閉源模型普遍優于開源模型。
使用 SandboxFusion,可提升模型表現
研究人員對比了 " 反思策略(Reflection)" 和 "N 次推斷策略(BoN)" 兩種策略。在 Reflection 策略中,通過利用 SandboxFusion 的反饋上下文對答案進行 N 次精煉,複現了自我精煉策略 [ Madaan et al., 2024 ] 。而在 BoN 策略中,僅進行 N 次推斷以獲得結果。
結果如圖所示,"Reflection" 策略明顯優于 "BoN",這表明 SandboxFusion 提供的反饋上下文具有較高的有效性。
了解這篇研究的詳情,可見文内 Arxiv 鏈接,或關注「豆包大模型團隊」公衆号,查閱更詳細解讀。
參考鏈接:
[ 1 ] 論文鏈接:https://arxiv.org/pdf/2412.00535v2
[ 2 ] 數據集開源地址:https://huggingface.co/datasets/ByteDance/FullStackBench
[ 3 ] 沙盒開源地址:https://github.com/bytedance/SandboxFusion
[ 4 ] 沙盒體驗入口:https://bytedance.github.io/SandboxFusion/playground/datasets
* 本文系量子位獲授權刊載,觀點僅爲作者所有。
— 完 —
量子位 QbitAI
վ ' ᴗ ' ի 追蹤 AI 技術和産品新動态
一鍵三連「分享」、「點贊」和「在看」
科技前沿進展日日相見 ~
>