天天看點

「代碼大模型」成 AI 新風口,aiXcoder 想讓所有企業搶先用上

作者:極客公園

4 月 9 日,北京大學軟體工程研究所開源了由其 aiXcoder 團隊全新自研 7B 代碼大模型。作為「AI+軟體開發」領域的專業團隊,aiXcoder 開源的 7B 代碼大模型,有可能會給企業「軟體工程」帶來全新的可能。

在美國,AI 軟體開發工具 GitHub Copilot 的 ARR(年度經常性收入)早達到 1 億美元,成為 AI 在開發者應用上的裡程碑産品。納德拉稱其為「微軟最成熟的 GenAI 産品」,「這對程式員的必要性就像 Microsoft Word 中的拼寫和文法檢查一樣」。

但實際上,要讓 AI 真正幫助開發者解決問題,「拼寫和文法檢查」隻是表層,從「軟體工程」的角度,幫助開發者解決真實軟體開發場景中的問題,才是根本。

aiXcoder 團隊來自北京大學軟體工程研究所,他們不但是國際上最早将深度學習技術用于程式代碼處理的團隊,也是最早推出基于深度學習的程式設計産品的團隊。

aiXcoder 團隊這次開源的新一代全自研的 7B 代碼大模型,聚焦企業真實開發場景,緻力于解決企業私有化部署場景下的軟體開發問題。該模型的 Base 版本已在 Github、Gitee、Gitlink 等平台開源。

多個主流評測集測評結果顯示,aiXcoder-7B 模型在代碼生成與補全的能力上,展現了百億級代碼大模型的效果,速度更快、效果更準,而且,由于它充分考慮了企業私有化部署的需求,更适合企業的真實開發場景。

在今天的 AIGC 創業潮下,aiXcoder 團隊的先發優勢會讓其脫穎而出嗎?軟體開發自動化的美好願景離我們還有多遠?

01 aiXcoder 團隊「探路」十年

2014 年,北京大學軟體工程研究所的研究者(aiXcoder 團隊的前身),相繼發表了《Building program vector representations for deep learning》(譯為《建構深度學習的程式向量表示》)等多篇具有裡程碑意義的研究論文,在全球範圍内首次驗證了深度學習路線在代碼處理領域的作用。

但在提出這項研究時,用深度神經網絡處理程式代碼,還是一個極其大膽的假設。當時,軟體從業者普遍認為「軟體自動化隻是一個長期而美好的願景」,AI 領域也隻是抱持「可以試試看」的态度。

彼時,随着圖靈獎得主 Geoffrey Hinton 解決了多層神經網絡訓練的難題,深度學習技術相繼在語音、視覺、自然語言領域大放異彩,相關技術迅速在産業裡更疊,但還沒有人把它與程式代碼的處理聯系起來。

計算機能編譯、能運作程式,為什麼還要讓計算機學會了解程式?

但這個問題對北大軟工所的研究者們而言,卻是從做研究的第一天就「種草」的課題。在他們看來,人之是以要寫程式,是因為計算機隻能「聽懂」程式語言。「人寫程式,是在為機器提供服務」。研究者的使命,就是要把人從「為機器服務」的困境中解放出來。

然而要讓計算機能夠自己寫程式,就需要首先讓它學會了解程式。也就是說,不但要讓計算機能運作程式,還要能了解所運作的程式的語義。

在這個信念下,他們提出一個大膽的猜想:如果把網際網路上的程式「爬」下來,訓練一個處理程式的「深度學習引擎」,那麼就可以實作,給這個引擎一個程式代碼,它可以自動分析出程式的意圖。而反過來,給這個引擎一個意圖描述,它就可以生成代碼了。

2013 年冬,他們在團隊領頭人李戈教授的帶領下,便開始了把深度學習技術用于程式處理領域的研究。

那時候還沒有今天耳熟能詳的深度學習架構——TensorFlow、Pytorch,于是一行人選擇用 C++ 程式語言從最底層搭建神經網絡,包括反向傳播算法、求導算法等。

作為探索性研究,團隊面臨的第二個挑戰是沒有 GPU。

當時,他們找了 17 台北京大學軟體工程研究所「退役」的 PC 機,在北大 1726 機房鋪了一地,用一個局部網絡把這些計算機連起來,來實作訓練一個深度神經網絡的任務。

訓練效率可想而知,5 萬條資料跑了一個多月。

好在結果讓人欣喜,根據前文提到的論文:在程式分析任務上——程式功能分類、程式模式檢測,深度學習都比以往方法得到的結果更準确。

這讓團隊看到了深度學習技術應用于程式處理的前景,并從此堅定地踏上了征程,一幹就是十年。

2015 年,他們發表了最早的程式生成論文《On End-to-End Program Generation from User Intention by Deep Neural Networks》(譯為《基于使用者意圖的端到端程式生成的深度神經網絡》)開拓了利用深度學習技術生成程式代碼的先河。

2017 年 5 月,推出了 aiXcoder 最初的實驗室版本 deep-autocoder,開啟了不斷提升代碼補全的模型參數量,完善産品互動形态的探索,代碼補全和生成的效果也越來越好。

2018 年,随着産品打磨走向成熟,實驗室産品也開始面向産業,6 月釋出了 aiXcoder 原型版,并與華為、百度、騰訊等多家頭部企業展開持續合作,做代碼生成與補全、代碼分析等技術的概念驗證。随後以不同領域為目标,aiXcoder 團隊開始探索不同模型驅動不同任務的路徑,推出了 Android 版、python 版等不同領域的模型版本。

直到 2021 年 OpenAI 的 Codex 問世,業界才開始相信:在更大更深的神經網絡上,訓練代碼大模型的效果也越來越好。時隔不久,aiXcoder 團隊在鵬城實驗室的算力支援下,研發出第一個超過十億的代碼大模型 aiXcoder L 版。

2022 年 6 月,aiXcoder 團隊釋出國内首個完全自主知識産權的方法級代碼生成模型 aiXcoder XL,該模型擁有百億級參數量,可根據自然語言功能描述一鍵生成完整程式代碼(NL to Code)。

2023 年 8 月,聚焦企業适配的 aiXcoder Europa 版上線,除了像代碼自動補全、生成、缺陷檢測與修複等正常功能外,aiXcoder Europa 為企業場景量身定做,可以根據企業資料安全和算力要求,提供私有化部署和個性化訓練服務,并在提升研發效率的同時,有效降低了代碼大模型的應用成本。

在産品不斷更新,突破一個又一個評測基準的同時,aiXcoder 團隊也積極在銀行、證券、高科技、軍工等領域幫助頭部企業客戶實作真正的代碼大模型應用落地。

同時,資本市場也看好 aiXcoder 的發展前景,高瓴、清流、彬複等極具行業引領性的明星股東紛紛加注。

站在 ChatGPT 點燃 AI 熱情的今天,回看 aiXcoder 團隊過去十年的探索,他們是拓荒者,也是以積累了深厚的算法、工程能力以及市場 know-how。在大模型技術尚未成熟到「拿來就用」的程度,aiXcoder 團隊結合深度學習技術和軟體領域的專業能力,有效幫助企業落地軟體自動化。

02 開源 aiXcoder-7B,加速「軟體開發自動化」

4 月 9 日開源釋出的 aiXcoder 7B,同樣秉承了其産品為企業服務的核心理念。

aiXcoder 7B 不僅在代碼生成的基礎能力上超越了同級别的現有模型,甚至在一些特定任務上比更大參數量級的 15B、34B 的代碼大模型效果要更好。

如下圖,在 HumanEval、MBPP、MultiPL-E 三個主流代碼生成效果評估測評集上,aiXcoder-7B 展現出了明顯優勢。

「代碼大模型」成 AI 新風口,aiXcoder 想讓所有企業搶先用上

其實,在真實的開發環境中下,上述 NL to Code 根據自然語言生成對應代碼的能力隻是基礎,現在主流的評測方式離真實場景很遠,寫程式或者代碼需要各種內建、擴充以及調用關系,NL to code 根據自然語言給出方法,在實際的場景問題中是割裂的。

為此,aiXcoder-7B 在模型的構造過程中,特别考慮了與實際開發場景對齊的項目級代碼的處理能力,是以,它比其他模型更能夠考慮到軟體項目内其它相關代碼檔案中所包含的重要資訊,如類定義、類屬性、方法定義等。

在專門考慮項目級資訊的代碼生成測評資料集 CrossCodeEval (Ding et al.,2023) 上,aiXcoder-7B 表現出了顯著優于其他模型的準确性。(下圖)

「代碼大模型」成 AI 新風口,aiXcoder 想讓所有企業搶先用上

同時,在代碼補全場景中,開發者不僅期待模型能生成一個完整的代碼塊,其具有完整的文法結構,完整的處理邏輯,還需要盡可能調用上下文已經實作的函數,這樣才符合實際的開發風格。

為了評估在實際開發場景中的補全效果,aiXcoder 在一個具有超過 16000 條真實開發場景代碼的開源測評資料集上,也展現了最優的效果。而且,相較于其他模型,aiXcoder 7B 更加傾向于使用較短的代碼來完成使用者指定的任務。

「代碼大模型」成 AI 新風口,aiXcoder 想讓所有企業搶先用上

為什麼 aiXcoder-7B 能在貼近真實企業開發場景的資料集上取得如此極緻的效果?

aiXcoder 團隊向極客公園透露,其從客戶需求中「長」出來的代碼模型技術,使得包括 7B-base 模型在内的 aiXcoder 系列模型都易部署、易定制、易組合,更貼合實際軟體開發任務,與企業應用場景深度融合,更适合落地。

去年初 ChatGPT 大火時,大家對大模型技術的期待相當高,通用人工智能似乎一步之遙。熱情回歸理性,大模型走向千行百業的落地應用過程中,有很多真實的需求就「冒」出來了,比如,在落地 AI 應用時的第一步,盡管排行榜上有很多 SOTA 大模型,但客戶首先一定是先根據自己的場景實地評測進行模型選型。同時,企業在評測這類代碼大模型時,尤其強調有效的個性化訓練,以確定模型能夠滿足企業的具體需求。

這裡的難點在于:大多數大模型都是基于開源資料集進行訓練的,當它們被應用到企業内部時,面對的是全新的業務邏輯和程式設計規範,這往往導緻模型性能下降。是以,如何做好個性化訓練,使模型能夠學習并适應企業特定的領域知識是關鍵。

在落地應用方面,aiXcoder 在大模型技術還沒有火出圈時,就始終貼合客戶需求,積澱了不少實用、獨到的技術方法論。就拿推理速度來說,這是代碼大模型與通用大模型在落地上最顯著的差異,代碼大模型需要提供更快的回報速度,在內建開發環境(IDE)中,實作「無感覺服務」,即在程式員編寫代碼時提供即時回報,而不會打斷他們的思路。在這個目标下,團隊從算法和部署的角度,積累了很多經驗。

在被問及十年來所看到的市場需求變化時,aiXcoder 團隊表示,「最明顯的趨勢在于,開發者對 AI 輔助軟體開發的态度,從最初的陌生和觀望,逐漸轉變為主動擁抱變革」。

對 AI 領域來說,通過代碼大模型實作軟體開發自動化出現了曙光。而對于 aiXcoder 團隊來說,軟體自動化的目标是軟體工程學科的出發點,終極目标是把人類從繁重的軟體開發勞動中解放出來。

談及代碼領域未來的産品形态,aiXcoder 團隊認為是智能化的內建開發環境,從對話式需求開始,多智能體協作進行軟體自動化開發。至于能在多大程度上實作端到端的程式自動化,團隊用「鐵鉗模型」闡述了其前景。「用『需求』和『測試』這兩側夾住整個軟體開發的過程,中間是大模型主導的自動化過程,這是軟體開發可以期待的未來」。

「沿着前輩指明的道路往前走一步,是一件幸運且幸福的事業」,「軟體自動化」的使命,并不是下一代的事情。

繼續閱讀