宅中地 - 每日更新
宅中地 - 每日更新

贊助商廣告

X

華為加拿大與女王大學聯手:一個27B小模型如何逼近千億級巨頭的編程實力?

2026年08月07日 首頁 » 熱門科技

這項由華為加拿大研究院、女王大學、曼尼托巴大學以及康考迪亞大學聯合完成的研究,以預印本形式發布於2026年7月29日,論文編號為arXiv:2607.27146,預計將在2027年AAAI會議上正式亮相。有興趣深入了解的讀者可以通過該編號在arXiv平台查詢完整論文。

**一個讓人頭疼的問題**

假設你現在需要找一位程序員,讓他從零開始寫一個功能完整的命令行工具——不給他任何現成代碼,只給他一份功能說明文檔和一個已經編譯好的可執行程序供參考。他看不到源代碼,不知道別人怎麼實現的,只能通過反覆運行這個參考程序來摸索它的行為規律,然後自己重新寫一遍。

這個任務有多難?哪怕是世界上最先進的AI編程模型,在這類任務上的完整成功率也低得可憐——甚至不足1%。這就是一個名為ProgramBench華為加拿大與女王大學聯手一個27B小模型如何逼近千億級巨頭的編程實力的測試基準所揭示的現實:AI在"從頭造程序"這件事上,還遠遠沒有達到實用水平。

然而,上述聯合研究團隊提出了一套名為MindForge華為加拿大與女王大學聯手一個27B小模型如何逼近千億級巨頭的編程實力的方法,通過一系列精心設計的訓練技術,將一個270億參數的"小"模型(Qwen3.6-27B)的ProgramBench得分從37.98%一路推高到49.51%——這個數字已經超越了參數量是它數倍乃至數十倍的大型前沿模型,例如DeepSeek華為加拿大與女王大學聯手一個27B小模型如何逼近千億級巨頭的編程實力 V4 Pro(1.6萬億參數)和Claude Opus 4.7(參數量未公開披露,但規模遠大於27B)。更令人在意的是,這種能力提升並非僅僅局限於訓練任務本身,而是蔓延到了七個完全不同的軟體工程測試場景,覆蓋了從修復代碼錯誤到跨語言翻譯的廣泛領域。

**一、"從零造程序"究竟難在哪裡**

理解MindForge的價值之前,先要理解為什麼"從頭寫程序"這件事如此困難。

現有的AI編程助手,絕大多數都是在"修繕舊房子"而非"從地基開始建新房"。它們面對的任務通常是:給你一個已有的代碼庫,裡面有一個bug,你去找到它、修復它。或者:在一個現成的框架上,加一個新功能。這類任務有個天然的"腳手架"——現有代碼告訴AI整體結構是什麼樣的,AI只需要在這個框架內做局部調整就行了。

"從頭造程序"則完全不同。AI需要獨立完成軟體開發的完整生命周期:先通過反覆運行參考程序來搞清楚它究竟能做什麼(規格推斷階段);再決定用什麼語言、什麼架構來實現它(設計階段);然後從第一行代碼開始寫起(實現階段);寫完之後運行,發現不對勁,自己找原因(錯誤定位階段);找到原因後修改(修復階段);再測試、再修改,循環往復,直到最終產出一個能通過測試的可執行文件。

這個過程之所以難,是因為AI在每個階段都可能犯錯,而且早期犯的錯會導致後期越來越難以糾正。更關鍵的是,現有的訓練數據根本沒有覆蓋這種完整的開發過程。市面上大量的AI編程訓練數據,都是圍繞"改bug"或"加功能"這類局部任務收集的,幾乎沒有端到端的完整程序開發軌跡。

這正是MindForge要解決的核心問題。

**二、MindForge是怎麼工作的:打造"無源碼訓練場"**

MindForge的核心思路,可以用一個類比來理解:你想訓練一位廚師,但你不能直接給他菜譜。你給他的只是一道已經做好的菜,以及一份食材清單,讓他通過品嘗、觀察、反覆試做,最終復現出這道菜。

在技術層面,MindForge首先需要建立大量這樣的"訓練廚房"——也就是無源碼的可執行程序環境。研究團隊從GitHub上專門收集命令行工具程序的"精選列表"社區出發,初步篩選出2235個候選代碼倉庫,然後讓一個"探索智能體"逐一審查這些程序,判斷它們是否適合作為訓練環境。

判斷標準相當嚴苛:這個程序必須是自包含的命令行工具(不能依賴網際網路連接、不能需要特殊硬體、不能依賴外部在線服務);它的行為必須可以被明確驗證;它在本地就能完成有意義的工作。經過這輪篩選,1206個程序通過初審,其中1002個成功完成了編譯打包。

接下來是構建階段的精華:研究團隊讓一個"構建智能體"為每個通過初審的程序生成一份構建腳本,這份腳本必須在一個乾淨的、從未被任何人動過的環境中獨立運行,成功編譯出可執行文件。然後,系統會在另一個全新的沙箱環境中重新執行這份腳本,驗證構建結果是否一致(行為等價性檢驗)。任何不一致的構建都會被丟棄,確保每個訓練環境都是可復現的。

最後還有一道"無源碼檢驗":研究團隊會掃描最終生成的可執行文件,確保它的字節內容和字符串中沒有殘留任何原始源代碼的痕跡。如果發現泄漏,就重新構建。只有通過全部檢驗的程序,才會被打包成一個Docker鏡像——裡面只有編譯好的參考可執行文件和公開文檔,完全沒有源代碼。

經過這整套流程,研究團隊最終建立了562個有效的無源碼訓練環境,覆蓋六種編譯型編程語言:Go語言占最大比例(231個,41.1%),其次是Rust(212個,37.7%),接著是C語言(87個,15.5%),C++(29個,5.2%),還有少量Swift和TypeScript程序。這些程序全部來自與ProgramBench測試集不重疊的代碼倉庫,從根本上排除了"考前偷看答案"的可能性。

**三、收集訓練軌跡:讓"老師"在訓練場裡真實演練**

有了訓練場地,下一步是收集高質量的訓練示例。研究團隊選用了GLM-5.2作為"教師模型"——一個在ProgramBench上得分64.60%的高水平模型,放到562個無源碼環境中,讓它像真實開發者一樣工作:看文檔、運行參考程序感受它的行為、設計實現方案、寫代碼、調試、再測試,直到產出一個能通過編譯的可執行文件。

整個過程被完整記錄下來,形成"開發軌跡"。研究團隊只保留那些教師模型最終成功產出可執行文件並主動發出"任務完成"信號的軌跡,過濾掉那些中途崩潰、超時或陷入死循環的嘗試。這個過濾邏輯很合理:你想從老師那裡學的,是成功的做法,而不是失敗的嘗試。

最終收集到1001條完整的開發軌跡。這些軌跡的規模令人印象深刻:平均每條軌跡包含181.6個對話回合、約177,000個token,最長的一條包含477個回合、272,000個token。相比之下,現有的大多數編程訓練數據,95%都在32,000個token以內——MindForge的軌跡長度是它們的好幾倍,真正覆蓋了長程開發過程。

研究團隊還用自動化工具分析了這1001條軌跡都包含哪些開發階段。結果顯示,幾乎所有軌跡都包含規格探索(99.1%)和代碼實現(99.7%),87.1%的軌跡包含明確的架構設計思考,59.4%的軌跡包含錯誤定位行為,62.6%包含錯誤修復行為,83.7%包含驗證步驟,64.2%包含對已有實現的精化和優化。換句話說,這些軌跡不是重複展示單一技能的枯燥練習,而是覆蓋完整軟體開發生命周期的豐富學習材料。

**四、軌跡淨化:去除噪音,留下精華**

收集到的原始軌跡並非完美無缺。一個強大的教師模型在長達數百回合的自主運行中,難免會犯錯、遭遇環境故障,或者出現前後不一致的表述。直接用這些原始軌跡訓練學生模型,等於讓學生連老師的筆誤和說錯的話都一起學進去了。

為了解決這個問題,研究團隊設計了兩套軌跡淨化機制。

第一套叫做"基礎設施噪聲恢復":有時候不是教師模型犯錯,而是運行環境本身出了問題(比如API調用失敗、沙箱崩潰)。這時候一條正在進行中的軌跡會被迫中斷。如果直接丟棄,就浪費了前面所有的推理計算成本。研究團隊的解決方案是"倒帶重播":回到最後一個健康的狀態點,在一個全新的乾淨環境中重新執行之前所有的工具調用步驟(注意:這一步不需要再次調用教師模型,只是機械地重放操作),然後從中斷點繼續讓教師模型往下走。這樣既保住了之前的工作成果,又避免了重複推理的巨額成本。

第二套叫做"推理重寫機制":當教師模型在某一步產生了格式錯誤的工具調用時,這個錯誤步驟和隨之而來的報錯資訊會被刪除。但問題在於,教師模型往往會在後續的推理中提到這個錯誤(比如"剛才那一步失敗了,我接下來要換個方法")。一旦錯誤步驟被刪除,後續的這段"反思"就變成了無頭蒼蠅——它在回應一個已經不存在的東西,邏輯上完全斷裂。

解決方法是:識別出這些"孤兒推理"段落,用GLM-5.2來重寫它們,讓它們與清理後的軌跡語境保持連貫。關鍵的約束是:重寫只能修改推理文字,不能改動任何工具調用和環境響應——這些代表教師模型真實行動的記錄必須保持原樣,修改的只是用於串聯上下文的"旁白"部分。每次重寫結果還會經過安全檢查,確保沒有引入新的不一致內容。

**五、訓練結果:小模型的逆襲**

用這1001條經過淨化的完整開發軌跡(最終因長度限制去掉28條,使用973條)對Qwen3.6-27B進行微調後,得到的模型被命名為MindForge-27B。

在ProgramBench的200個測試任務上,MindForge-27B的平均測試通過率從37.98%躍升到49.51%,絕對提升11.53個百分點,相對提升30.4%。更具體地說,在200個測試任務中,MindForge-27B在152個任務上得分嚴格高於基礎模型,只在43個任務上得分較低,5個任務持平。這種廣泛、均勻的提升,而不是少數任務的異常高分拉動,說明訓練真正產生了系統性的能力提升。

從橫向比較來看,這個成績意味著什麼?MindForge-27B(49.51%)超越了Sonnet 4.6(47.97%)、DeepSeek V4 Pro(47.80%,參數量1.6萬億),與Claude Opus 4.7(51.38%)和GLM-5.1(50.90%)處於同一水平。而這些模型的參數規模,是MindForge-27B的數十倍乃至數百倍。

當然,與教師模型GLM-5.2(64.60%)以及GPT-5.5(56.50%)等頂尖前沿模型相比,MindForge-27B還有明顯差距。但考慮到它只有270億參數,並且只用了1001條訓練軌跡,這個結果已經相當出色。

**六、能力真的泛化了嗎:七個陌生戰場的考驗**

一個模型在訓練數據相關的測試上表現好,並不能證明它真正"學會了"軟體工程。真正的考驗,是把它放到訓練時完全沒有見過的任務類型上,看它是否還能表現出色。

研究團隊為此準備了七個獨立的評測基準,涵蓋完全不同的軟體工程場景。在這七個場景中,MindForge-27B全部超越了它的基礎模型Qwen3.6-27B,這一點本身就很難得。

最戲劇性的提升來自RepoZero-C2Rust任務:這是一個要求把C語言程序翻譯成Rust語言的任務,完全通過率從47.00%飆升到78.00%,提升了31個百分點。DeepSWE是一組全新設計的、真實的長程工程任務,得分從1.76%升至15.92%,雖然絕對值不高,但倍數意義上提升了整整9倍。NL2Repo-Bench測試的是從自然語言描述直接生成整個代碼倉庫的能力,在提供測試用例輔助的設置下,得分從61.27%提升到71.97%(+10.70個百分點);在不提供測試用例的更難設置下,從18.92%提升到23.48%(+4.56個百分點)。

與此同時,在傳統的代碼修復任務上,MindForge-27B同樣取得了一致的提升:SWE-bench Verified(標準版代碼修復基準)從68.80%提升到73.84%(+5.04個百分點);SWE-bench Pro(更難的企業級代碼修復任務)從45.41%提升到51.34%(+5.93個百分點);SWE-bench Multilingual(跨語言代碼修復)從62.55%提升到67.77%(+5.22個百分點);FeatBench(從自然語言描述實現新功能)從50.10%提升到55.05%(+4.94個百分點)。

所有這些提升,經過嚴格的統計檢驗(配對Wilcoxon檢驗和精確McNemar檢驗,並使用Holm方法校正多重比較)後,全部達到統計顯著性(Holm校正p值均低於0.05)。這意味著這些提升不是偶然的隨機波動,而是真實存在的能力躍升。

**七、行為的變化:模型是怎麼變得更好的**

數字背後,模型的行為到底發生了什麼變化?研究團隊通過詳細分析ProgramBench測試中各模型的操作軌跡,給出了一幅相當清晰的圖景。

從操作規模來看,MindForge-27B在每個任務上的投入大幅增加:平均對話回合數從344.0增加到735.7,工具調用次數從174.4增加到373.0,消耗的token總量從20.3億增加到116.4億(整個200題測試集合計),是基礎模型的5.7倍。更值得一提的是,MindForge-27B的工具調用量甚至超過了教師模型GLM-5.2(平均186.6次),說明學生不是簡單地模仿老師的操作量,而是發展出了更為徹底的探索風格。

單純操作多並不等於有效——你要看的是錯誤率。MindForge-27B的每次命令失敗率從基礎模型的10.98%下降到9.35%,這意味著儘管操作總量翻倍,但單次操作的可靠性反而提高了。更長的軌跡、更低的錯誤率,這種組合說明額外的操作是有效的深度探索,而非無謂的重複。

研究團隊還測量了兩個"行為轉化率"指標,用來衡量模型是否能夠將推理和錯誤分析轉化為實際的代碼修改。具體來說:一是"推理後立即編輯"的比例,即模型做完推理之後,緊接著就修改代碼的頻率;二是"失敗恢復後立即編輯"的比例,即遇到報錯之後,緊接著就動手修復代碼的頻率。

基礎模型在這兩個指標上分別只有27.8%和31.8%——也就是說,它推理了但沒有行動,或者遭遇了報錯卻沒有立即去修復,這種情況發生得相當頻繁。研究團隊在論文中給出了一個具體的案例:基礎模型已經正確診斷出了一個函數的問題所在,明確表示需要修改它,但接下來的29個連續操作中,有16次是在對同一個參考程序重複運行同一條命令,反覆得到完全相同的輸出,而那個它自己說要修復的函數,直到30個操作後才終於被打開修改。這種"診斷了但不行動"的模式,正是基礎模型在長程任務中效率低下的根本原因。

MindForge-27B在這兩個轉化率指標上幾乎翻倍:推理後立即編輯的比例達到50.1%,失敗恢復後立即編輯的比例達到48.8%。這讓它與教師模型GLM-5.2(61.4% / 64.0%)和前沿模型GPT-5.5-high(67.3% / 70.4%)之間的差距大幅縮小,而與基礎模型相比則有了質的跨越。

研究團隊還構建了每個程序的覆蓋率鏡像(為200個ProgramBench測試程序重新編譯了帶覆蓋率插樁的版本),用來測量各模型在嘗試復現程序之前,究竟有多徹底地探索了參考程序的行為。平均來看,MindForge-27B覆蓋了參考實現代碼的58.39%,而基礎模型只有49.34%(中位數分別為66.47%和52.14%,差距更為明顯)。在200個測試案例中,MindForge-27B在154個案例上取得了嚴格更高的覆蓋率,只在11個案例上落後。探索得更深入、更全面,這是MindForge-27B能產出更好實現的行為基礎。

**八、整個流程的工程細節**

為了完整呈現MindForge的技術實現,有必要介紹一些關鍵的工程參數。

整個環境構建流程由三個智能體串聯完成,都運行在Qwen3.5-397B-A17B這個模型上,通過mini-swe-agent框架與沙箱環境交互,部署在Kubernetes集群上。探索智能體(Offline Screening)只讀取源代碼和文檔,從不執行任何構建操作,是最廉價的過濾層。構建智能體(Build Discovery)在有網路訪問權限的沙箱中工作,可以下載依賴包,但其生成的構建腳本必須在沒有任何預裝依賴的乾淨環境中獨立運行。兩個智能體都採用"先提議後驗證"的模式:在沙箱內有一個即時驗證器給出反饋,沙箱外還有一個宿主端驗證器做最終裁決,防止沙箱內的智能體"自我批改試卷"。

模型訓練使用MS-Swift框架配合Megatron後端,訓練設置為序列打包(減少填充浪費)、微批大小1、全局批大小96、訓練8個epoch。優化器為AdamW(β?=0.9, β?=0.98,權重衰減0.04),學習率從4×10⁻⁵熱身後按餘弦調度衰減至4×10⁻⁶,梯度裁剪最大範數1.0。訓練損失只計算在助手生成的推理、自然語言和工具調用token上,系統消息、用戶消息和工具輸出都被遮罩,不參與梯度更新。訓練和推理均使用bfloat16精度,推理時上下文窗口設置為512K token並開啟推理模式。

在污染分析方面,研究團隊將562個訓練環境的代碼倉庫與所有評測基準的倉庫進行了逐一比對,發現只有5個倉庫重疊(覆蓋17個評測實例),其中3個來自DeepSWE,14個來自SWE-bench Multilingual。對於這17個實例,基礎模型和MindForge-27B的通過率幾乎一致(DeepSWE重疊部分兩個模型都是0/3,SWE-bench Multilingual重疊部分基礎模型11/14,MindForge-27B 12/14,只有一個實例從失敗變為通過)。更重要的是,訓練任務和評測任務的性質根本不同:訓練中程序是看不見源代碼、從頭復現的;而這些評測任務是在現有源代碼上解決具體問題。研究團隊認為污染風險可以忽略不計。

**歸根結底,MindForge說明了什麼**

回到最開始的問題:為什麼從頭寫一個程序比修改現有代碼要難那麼多?因為它要求AI具備一種完整的工程直覺——不只是"這裡有個bug,改掉它"的局部修復能力,而是"我需要理解這個程序想做什麼,然後設計一套方案,一行行實現它,遇到問題自己診斷解決"的全局掌控能力。

MindForge的貢獻,在於它提供了一條讓小模型習得這種全局掌控能力的可行路徑。關鍵不在於用了多少數據(1001條軌跡,放到現在的AI訓練規模里算是非常少的),而在於數據的質量和覆蓋面:每一條軌跡都是一次完整的從頭到尾的開發過程,包含了真實工程中才會出現的各種挑戰——規格不明確、初始設計有缺陷、編譯報錯、測試不通過、反覆疊代直到成功。

這對AI能力的發展方向有著實際的啟示意義。當前AI編程工具的瓶頸,可能並不是參數量不夠大,而是訓練數據的視野太窄——總是在修修補補,從未經歷過從無到有的完整創造過程。MindForge的實驗結果表明,如果讓模型接觸到足夠多的完整開發軌跡,即便模型規模不大,也能在這條軸線上產生實質性的能力躍升。

當然,MindForge-27B距離真正勝任複雜程序開發還有相當距離。教師模型GLM-5.2在ProgramBench上還有64.60%對49.51%的明顯優勢,而最頂尖的模型(如Kimi K3,77.80%;GPT-5.6 Sol,77.60%)還在更高處。而且ProgramBench本身測試的是相對規範的命令行工具復現,真實世界的軟體工程遠比這複雜。對於"為什麼全程序開發訓練會讓模型在截然不同的任務(如SWE-bench代碼修復)上也變強"這個問題,目前也只有行為層面的觀察,還缺乏深層的理論解釋。

但這項研究至少回答了一個有意義的問題:用完整的開發生命周期軌跡來訓練模型,比起只用局部修改任務的數據,確實能培養出更強、更通用的軟體工程能力。這條路,值得繼續走下去。有興趣深入研究細節的讀者,可以通過arXiv編號2607.27146查閱完整論文,該論文將相關代碼、環境、軌跡以及MindForge-27B模型權重一併開源。

---

Q&A

Q1:MindForge訓練的模型在編程能力上達到了什麼水平?

A:MindForge-27B在ProgramBench基準測試上的平均通過率達到49.51%,超越了參數量是它數十倍的DeepSeek V4 Pro(47.80%),與Claude Opus 4.7(51.38%)處於同一水平。在七個額外的軟體工程測試場景中也全部超越了基礎模型,包括代碼修復、功能實現和跨語言程序翻譯等任務。

Q2:MindForge只用了1001條訓練數據為什麼效果這麼好?

A:關鍵在於數據質量而非數量。MindForge的1001條訓練軌跡每一條都是一次完整的程序開發過程,平均長達181.6個對話回合,覆蓋從規格推斷、架構設計到調試修復的全部階段。99.1%的軌跡包含規格探索,87.1%包含設計思考,而傳統編程訓練數據只覆蓋局部修改任務,視野窄、深度淺,MindForge的軌跡提供了真實工程中的完整決策過程。

Q3:ProgramBench是什麼類型的測試,為什麼頂級AI在上面得分這麼低?

A:ProgramBench要求AI僅憑一個編譯好的參考程序和文檔,從零開始重新實現該程序,不提供任何源代碼。它包含200個真實的開源命令行工具(如FFmpeg、SQLite),要求AI獨立完成規格推斷、架構設計、實現、調試的完整開發過程。由於現有AI主要在代碼修改任務上訓練,缺乏端到端開發經驗,即便是GPT-5.5這類前沿模型也只能完整解決不到1%的任務。

宅中地 - Facebook 分享 宅中地 - Twitter 分享 宅中地 - Whatsapp 分享 宅中地 - Line 分享
相關內容
Copyright ©2026 | 服務條款 | DMCA | 聯絡我們
宅中地 - 每日更新