7B超越百億級,北大開源aiXcoder-7B最強代碼大模型,企業(yè)部署最佳選擇
當下,大語言模型集成至編程領(lǐng)域、完成代碼生成與補全任務(wù)成為重要趨勢。業(yè)界已經(jīng)出現(xiàn)了一批引人矚目的代碼大模型,比如 OpenAI 的 CodeX、谷歌 DeepMind 的 AlphaCode、HuggingFace 的 StarCoder,幫助程序員更迅捷、更準確、更高質(zhì)量地完成編碼任務(wù),大幅提升效率。
有這樣一支研發(fā)團隊,在 10 年前便開始了將深度學(xué)習用于軟件開發(fā)的探索,并在代碼理解和代碼生成領(lǐng)域雙雙全球領(lǐng)先。他們就是來自北京大學(xué)軟件工程研究所的 aiXcoder 團隊(簡稱 aiXcoder 團隊),此次為開發(fā)者帶來了新的高效編碼利器。
4 月 9 日,該團隊開源了全自研 aiXcoder 7B 代碼大模型,不僅在代碼生成和補全任務(wù)中大幅領(lǐng)先同量級甚至超越 15B、34B 參數(shù)量級的代碼大模型;還憑借其在個性化訓(xùn)練、私有化部署、定制化開發(fā)方面的獨有優(yōu)勢,成為最適合企業(yè)應(yīng)用、最能滿足個性化開發(fā)需求的代碼大模型。
aiXcoder 7B 的全部模型參數(shù)和推理代碼均已開源,可以通過 GitHub、Hugging Face、Gitee 和 GitLink 等平臺訪問。
「耳聽為虛眼見為實」,一切還是要用真實的測評數(shù)據(jù)和實際的任務(wù)效果說話。
越級體驗
能其他代碼大模型所不能
一個代碼大模型究竟好不好用, 當然要在對程序員最有幫助、用的最多的代碼生成與補全任務(wù)中來驗證。
先看代碼生成比較結(jié)果,在 OpenAI HumanEval(由 164 道 Python 編程問題組成)、谷歌 MBPP(由 974 個 Python 編程問題組成)和 HuggingFace MultiPL-E(包含了 18 種編程語言)等代碼生成效果評估測試集上,aiXcoder 7B 版的準確率遠超當前主流代碼大模型,成為十億乃至百億級參數(shù)中最強。
除了在 HumanEval 這樣偏向非真實開發(fā)場景的測試集上取得準確率新 SOTA,aiXcoder 7B 在代碼補全等真實開發(fā)場景中的表現(xiàn)更是可圈可點,比如寫好上文讓代碼大模型補下文或者跨文件引用已經(jīng)定義好的方法、函數(shù)、類等。
同樣用數(shù)據(jù)說話,在考慮上下文的單行補全測評集 SantaCoder 上,aiXcoder 7B Base 版在與 StarCoder 2、CodeLlama 7B/13B、DeepSeekCoder 7B 等主流同量級開源模型的較量中取得最佳效果,成為最適合實際編程場景的代碼補全基礎(chǔ)模型。具體如下表所示:
aiXcoder 7B Base 版的補全效果最好,不單單是準確率更高,還在實際運行中表現(xiàn)出了其他代碼大模型沒有或者遜于自己的能力。實現(xiàn)這些的背后是一系列針對代碼特性的創(chuàng)新訓(xùn)練方法,正是它們使得 aiXcoder 7B Base 版脫穎而出。
首先,aiXcoder 7B Base 版在預(yù)訓(xùn)練時提供了 32k 的上下文長度,這在現(xiàn)有 7B 參數(shù)量級代碼大模型中為最大,其他多為 16k。不僅如此,通過插值的方法可以直接在推理時將上下文長度擴展到 256k,并在理論上有能力擴展至更長。
在同量級模型中擁有最大預(yù)訓(xùn)練上下文長度,并可彈性擴展,成為提升 aiXcoder 7B Base 版代碼補全效果的重要基礎(chǔ)。
其次,aiXcoder 7B Base 版在代碼補全過程中「知道」用戶什么時候需要生成代碼,并在代碼內(nèi)容已經(jīng)完整不需要再生成時自動停止。這成為該模型比較獨特的功能,其他很多代碼大模型無法做到這一點。
aiXcoder 團隊表示,該功能在技術(shù)上的實現(xiàn)離不開結(jié)構(gòu)化 Span 技術(shù)。在模型訓(xùn)練中,通過結(jié)構(gòu)化 Span 技術(shù)來構(gòu)建訓(xùn)練數(shù)據(jù)和相關(guān)任務(wù),讓模型學(xué)習到用戶應(yīng)該在什么時候生成代碼或者補全的內(nèi)容在語法和語義結(jié)構(gòu)上是否完整。
這也就意味著 aiXcoder 7B Base 版能自動「知道」自己推理到了什么位置,而其他模型想要終止的話,需要人為設(shè)定終止條件。自動推理則少了這種麻煩,有助于提升工作效率。
此外,在 aiXcoder 擴展基準測試集(aiXcoder Bench)上,aiXcoder 7B Base 版表現(xiàn)出了相較于其他代碼大模型的又一大亮點,即傾向于使用較短代碼來完成用戶指定的任務(wù)。
詳細結(jié)果如下表所示,在針對 Java、C++、JavaScript 和 Python 編程語言的代碼補全測評時,aiXcoder 7B Base 不僅效果最好,四處紅框圈出的生成答案長度明顯短于其他競品模型,并且非常接近甚至有時比標準答案(Ref)還要短。
aiXcoder 團隊指出,這一后驗發(fā)現(xiàn)仍離不開結(jié)構(gòu)化 Span 技術(shù)。他們在整個訓(xùn)練過程中特別注重代碼結(jié)構(gòu),而結(jié)構(gòu)化 Span 按照代碼結(jié)構(gòu)對代碼進行拆分,這更有益于體現(xiàn)代碼的語義,最終促成了模型「短」答案的同時效果又占優(yōu)。
除了在以上單文件上下文代碼補全任務(wù)中的卓越表現(xiàn),aiXcoder 7B Base 版在跨多文件補全場景中的表現(xiàn)同樣更勝一籌,不僅針對多文件的編程效果提升最優(yōu),還在下表 CrossCodeEval 測評集上有了一個重要發(fā)現(xiàn)。
據(jù) aiXcoder 團隊介紹,該模型在只通過光標上文搜索到的結(jié)果作為 prompt(只看當前編寫的上文),同時其他模型拿 GroundTruth(把包含答案的文件給到這些模型)搜索到的結(jié)果作為 prompt,在這種條件下,前者的效果依然要強于后者。
如何做到的呢?對于其他模型來說,即使有更多的上下文信息,它們也搞不清楚哪些是最核心、最關(guān)鍵的。而 aiXcoder 7B Base 版能從上下文檔中揀出對當前編寫代碼最有效、最核心的上下文細節(jié),所以才有好的效果。
這里感知到哪些信息最有效最為關(guān)鍵,通過對上下文進一步信息處理,結(jié)合文件相關(guān)內(nèi)容的聚類、代碼 Calling Graph 來構(gòu)建多文件之間的相互注意力關(guān)系,進而獲取到對當前補全或生成任務(wù)最關(guān)鍵的信息。
所有這些創(chuàng)新性訓(xùn)練方法很大程度上決定了 aiXcoder 7B Base 版能夠在眾多代碼大模型的比拼中勝出。此外, 1.2T 的高質(zhì)量訓(xùn)練數(shù)據(jù)同樣功不可沒,這一量級不僅在同類型模型中最大,還是獨有 token 數(shù)據(jù)。
其中 600G 優(yōu)先放入的高質(zhì)量數(shù)據(jù)對模型效果起了重要作用,其他數(shù)據(jù)主要來自 GitHub,以及 Stack Overflow、Gitee 等,自然語言部分還包括了一部分 CSDN 數(shù)據(jù),并且全部數(shù)據(jù)進行了過濾處理。
Talk is cheap, Show me the code
顯然,aiXcoder 7B Base 版在測評數(shù)據(jù)上贏了其他代碼大模型,但究竟能不能高效地幫助開發(fā)者完成編碼任務(wù)?還是要看實戰(zhàn)效果。
先看生成能力,對于前端開發(fā),aiXcoder 7B Base 版可以通過注釋快速地生成對應(yīng)網(wǎng)頁:
還可以處理高難度算法題,比如經(jīng)典的分糖果問題,通過貪心的策略,以左右兩次遍歷的方式得到最少糖果數(shù)。
再來看 aiXcoder 7B Base 版更得心應(yīng)手的代碼補全場景,比如長上下文補全。這里用多個工具函數(shù)拼成 1500 多行的代碼,要求模型在文件末端進行注釋補全,模型識別到了文件頂部的相關(guān)函數(shù),并成功地結(jié)合函數(shù)信息補全了相關(guān)方法:
還有以下跨文件補全任務(wù),在樹結(jié)構(gòu)上應(yīng)用動態(tài)規(guī)劃來實現(xiàn)編輯距離搜索。模型補全的代碼識別到了編輯距離的計算與另一個文件中滾動數(shù)組內(nèi)部取最小值的計算之間的關(guān)系,并給出了正確的預(yù)測結(jié)果:
當然還可以智能化匹配輸出長度。當用戶調(diào)整自己的采納內(nèi)容時,模型能夠根據(jù)當前的采納情況自動調(diào)整補全長度:
一句話,有了 aiXcoder 7B Base 版代碼大模型,無論是代碼生成還是補全,程序員多了一個效率提升利器,節(jié)省時間,事半功倍。
拼效果,更拼應(yīng)用
用核心競爭力成為企業(yè)首選
我們已經(jīng)看到,aiXcoder 7B Base 版在代碼補全這樣的真實開發(fā)場景中充分展現(xiàn)了自身的硬實力。不過,對于企業(yè)客戶來說,代碼大模型只是效果好并不能完全打動他們。只有全方位滿足自身需求,企業(yè)客戶才會毫不猶豫地下手。
aiXcoder 7B Base 版正是奔著企業(yè)需要、解決他們的個性化需求來的。打造最適合企業(yè)應(yīng)用的代碼大模型,成為了 aiXcoder 7B Base 版的首要目標和有別于其他模型的又一核心優(yōu)勢。
當然,想要成為企業(yè)應(yīng)用的最佳選擇并不容易,必須圍繞著企業(yè)業(yè)務(wù)場景、需求、所能承擔的成本等實際情況做深文章。aiXcoder 模型不僅這樣做了,而且做到了極致。
簡而言之,為了實現(xiàn)企業(yè)級個性化的應(yīng)用落地,aiXcoder 模型在私有化部署、個性化訓(xùn)練和定制化開發(fā)三個方面齊發(fā)力,打造出了相較于其他代碼大模型的核心優(yōu)勢。
首先來看私有化部署。對于企業(yè)而言,代碼大模型在本地服務(wù)器的私有化部署和運行,首要考慮的是自身算力是否可以支撐。在這點上,aiXcoder 模型對企業(yè) GPU 資源要求少,應(yīng)用成本投入低,讓部署模型門檻大大降低。
此外,不同企業(yè)擁有的軟硬件各異,既會有國產(chǎn)芯片,也會有國外如英偉達顯卡?;诖?,aiXcoder 模型進行針對性硬件適配以及進一步模型訓(xùn)練和推理優(yōu)化,比如在信息處理層面采用高速緩存技術(shù),充分滿足多樣化部署要求。
其次也是 aiXcoder 模型著重強調(diào)的個性化訓(xùn)練。我們知道,企業(yè)的實際情況不能一概而論,而 aiXcoder 模型做到了見招拆招,提供了「一攬子」的個性化模型訓(xùn)練解決方案。
一方面構(gòu)建企業(yè)專屬數(shù)據(jù)集和測評集,其中數(shù)據(jù)集構(gòu)建基于企業(yè)代碼特征和員工編碼習慣,專門對代碼及相關(guān)文檔進行數(shù)據(jù)預(yù)處理;測評集構(gòu)建則以真實開發(fā)場景為準繩,模擬并評估模型在實際應(yīng)用中的預(yù)期效果。
另一方面,將企業(yè)代碼這一內(nèi)因與企業(yè)算力資源這一外因相結(jié)合,充分考慮到不同企業(yè)計算資源、代碼量的多寡,為他們提供靈活的個性化訓(xùn)練及優(yōu)化方案,最大化提升專屬代碼大模型的前期訓(xùn)練效果和后續(xù)應(yīng)用效果。
第三是定制化開發(fā)。aiXcoder 模型瞄準不同行業(yè)和企業(yè)的實際情況,結(jié)合企業(yè)個性化需求來為他們提供靈活的定制化服務(wù)。憑借豐富和成熟的定制開發(fā)經(jīng)驗,讓基于企業(yè)代碼和計算資源打造的模型高度契合實際需求,讓業(yè)務(wù)效率的提升看得見摸得著。目前,客戶已經(jīng)遍布銀行、證券、保險、軍工、運營商、能源、交通等多個行業(yè)。
可以看到,相較于其他代碼大模型,aiXcoder 能同時為企業(yè)提供個性化訓(xùn)練的產(chǎn)品和服務(wù),這在業(yè)內(nèi)是唯一一個。
背后團隊
十年深耕、厚積薄發(fā)
此次 aiXcoder 7B Base 版代碼大模型展現(xiàn)出來的編碼能力,讓我們更加好奇模型背后的團隊。
據(jù)了解,aiXcoder 團隊從 2013 年開始了基于深度學(xué)習的代碼分析研究,是全球最早將深度學(xué)習技術(shù)應(yīng)用于代碼生成與代碼理解領(lǐng)域的團隊。
十年來,團隊在 NeurIPS、ACL、IJCAI、ICSE、FSE、ASE 等頂會上發(fā)表相關(guān)論文 100 余篇,多篇論文被國際學(xué)者認為是「首創(chuàng)成果」并被廣泛引用,多次獲 ACM 杰出論文獎。
2017 年,aiXcoder 有了雛形,并在 2018 年正式發(fā)布 aiXcoder 1.0,提供代碼自動補全與搜索功能。
2021 年 4 月,團隊推出完全自主知識產(chǎn)權(quán)的十億級參數(shù)代碼大模型 aiXcoder L 版,支持代碼補全和自然語言推薦。這也是國內(nèi)?個基于「?模型」的智能編程商?產(chǎn)品。
而后,團隊持續(xù)攻堅,2022 年 6 月再次推出了國內(nèi)首個支持方法級代碼生成的模型 aiXcoder XL 版,同樣具有完全自主知識產(chǎn)權(quán)。
2023 年 8 月,聚焦企業(yè)適配的 aiXcoder Europa 上線,可以根據(jù)企業(yè)的數(shù)據(jù)安全和算力要求,為他們提供私有化部署和個性化訓(xùn)練服務(wù),有效降低代碼大模型的應(yīng)用門檻,提升開發(fā)效率。
到了此次,aiXcoder 團隊開源 aiXcoder 7B Base 版,將已經(jīng)住考驗的全新代碼大模型帶給大家。一方面,該模型以 7B 參數(shù)規(guī)模在代碼補全等真實開發(fā)場景中表現(xiàn)出的越級能力及其在企業(yè)適配方面的多項核心競爭力,有助于推動代碼大模型行業(yè)的整體進步。另一方面,該模型將對更廣泛的軟件開發(fā)自動化產(chǎn)生深遠的影響,在加速這一進程的同時為各行各業(yè)持續(xù)提升業(yè)務(wù)效率、變革生產(chǎn)方式保駕護航。
不僅如此,相較于同樣具備代碼能力的通用模型,aiXcoder 7B Base 版讓我們看到了專用代碼大模型更低訓(xùn)練和推理成本、企業(yè)部署成本以及在企業(yè)項目級代碼上更好、更穩(wěn)定效果的全方位優(yōu)勢。
目前,aiXcoder 已服務(wù)大量銀行、證券、保險、軍工、高科技、運營商、能源、交通等行業(yè)頭部客戶,深耕服務(wù)金融行業(yè),其中與某行業(yè)知名券商的「代碼大模型在證券行業(yè)的應(yīng)用實踐」項目榮獲 2023AIIA 人工智能十大潛力應(yīng)用案例、中國信通院 AI4SE 銀彈優(yōu)秀案例等殊榮。
同時,aiXcoder 也因其極具前瞻性的探索方向、踏踏實實的落地實踐,不斷受到資本市場的追捧,高瓴、清流、彬復(fù)等極具行業(yè)引領(lǐng)性的基金紛紛加注 aiXcoder 團隊,使其得以迅速成長!
顯然,在未來 AIGC 的這場較量中,aiXcoder 團隊已經(jīng)做好了準備。
aiXcoder 開源鏈接:
??https://github.com/aixcoder-plugin/aiXcoder-7B??
??https://gitee.com/aixcoder-model/aixcoder-7b??
??https://www.gitlink.org.cn/aixcoder/aixcoder-7b-model??
??https://wisemodel.cn/codes/aiXcoder/aiXcoder-7b??
?本文轉(zhuǎn)自 機器之心 ,作者:機器之心
