7B超越百億級(jí),北大開(kāi)源aiXcoder-7B最強(qiáng)代碼大模型,企業(yè)部署最佳選擇
當(dāng)下,大語(yǔ)言模型集成至編程領(lǐng)域、完成代碼生成與補(bǔ)全任務(wù)成為重要趨勢(shì)。業(yè)界已經(jīng)出現(xiàn)了一批引人矚目的代碼大模型,比如 OpenAI 的 CodeX、谷歌 DeepMind 的 AlphaCode、HuggingFace 的 StarCoder,幫助程序員更迅捷、更準(zhǔn)確、更高質(zhì)量地完成編碼任務(wù),大幅提升效率。
有這樣一支研發(fā)團(tuán)隊(duì),在 10 年前便開(kāi)始了將深度學(xué)習(xí)用于軟件開(kāi)發(fā)的探索,并在代碼理解和代碼生成領(lǐng)域雙雙全球領(lǐng)先。他們就是來(lái)自北京大學(xué)軟件工程研究所的 aiXcoder 團(tuán)隊(duì)(簡(jiǎn)稱(chēng) aiXcoder 團(tuán)隊(duì)),此次為開(kāi)發(fā)者帶來(lái)了新的高效編碼利器。
4 月 9 日,該團(tuán)隊(duì)開(kāi)源了全自研 aiXcoder 7B 代碼大模型,不僅在代碼生成和補(bǔ)全任務(wù)中大幅領(lǐng)先同量級(jí)甚至超越 15B、34B 參數(shù)量級(jí)的代碼大模型;還憑借其在個(gè)性化訓(xùn)練、私有化部署、定制化開(kāi)發(fā)方面的獨(dú)有優(yōu)勢(shì),成為最適合企業(yè)應(yīng)用、最能滿足個(gè)性化開(kāi)發(fā)需求的代碼大模型。
aiXcoder 7B 的全部模型參數(shù)和推理代碼均已開(kāi)源,可以通過(guò) GitHub、Hugging Face、Gitee 和 GitLink 等平臺(tái)訪問(wèn)。
「耳聽(tīng)為虛眼見(jiàn)為實(shí)」,一切還是要用真實(shí)的測(cè)評(píng)數(shù)據(jù)和實(shí)際的任務(wù)效果說(shuō)話。
越級(jí)體驗(yàn)
能其他代碼大模型所不能
一個(gè)代碼大模型究竟好不好用, 當(dāng)然要在對(duì)程序員最有幫助、用的最多的代碼生成與補(bǔ)全任務(wù)中來(lái)驗(yàn)證。
先看代碼生成比較結(jié)果,在 OpenAI HumanEval(由 164 道 Python 編程問(wèn)題組成)、谷歌 MBPP(由 974 個(gè) Python 編程問(wèn)題組成)和 HuggingFace MultiPL-E(包含了 18 種編程語(yǔ)言)等代碼生成效果評(píng)估測(cè)試集上,aiXcoder 7B 版的準(zhǔn)確率遠(yuǎn)超當(dāng)前主流代碼大模型,成為十億乃至百億級(jí)參數(shù)中最強(qiáng)。

除了在 HumanEval 這樣偏向非真實(shí)開(kāi)發(fā)場(chǎng)景的測(cè)試集上取得準(zhǔn)確率新 SOTA,aiXcoder 7B 在代碼補(bǔ)全等真實(shí)開(kāi)發(fā)場(chǎng)景中的表現(xiàn)更是可圈可點(diǎn),比如寫(xiě)好上文讓代碼大模型補(bǔ)下文或者跨文件引用已經(jīng)定義好的方法、函數(shù)、類(lèi)等。
同樣用數(shù)據(jù)說(shuō)話,在考慮上下文的單行補(bǔ)全測(cè)評(píng)集 SantaCoder 上,aiXcoder 7B Base 版在與 StarCoder 2、CodeLlama 7B/13B、DeepSeekCoder 7B 等主流同量級(jí)開(kāi)源模型的較量中取得最佳效果,成為最適合實(shí)際編程場(chǎng)景的代碼補(bǔ)全基礎(chǔ)模型。具體如下表所示:

aiXcoder 7B Base 版的補(bǔ)全效果最好,不單單是準(zhǔn)確率更高,還在實(shí)際運(yùn)行中表現(xiàn)出了其他代碼大模型沒(méi)有或者遜于自己的能力。實(shí)現(xiàn)這些的背后是一系列針對(duì)代碼特性的創(chuàng)新訓(xùn)練方法,正是它們使得 aiXcoder 7B Base 版脫穎而出。
首先,aiXcoder 7B Base 版在預(yù)訓(xùn)練時(shí)提供了 32k 的上下文長(zhǎng)度,這在現(xiàn)有 7B 參數(shù)量級(jí)代碼大模型中為最大,其他多為 16k。不僅如此,通過(guò)插值的方法可以直接在推理時(shí)將上下文長(zhǎng)度擴(kuò)展到 256k,并在理論上有能力擴(kuò)展至更長(zhǎng)。
在同量級(jí)模型中擁有最大預(yù)訓(xùn)練上下文長(zhǎng)度,并可彈性擴(kuò)展,成為提升 aiXcoder 7B Base 版代碼補(bǔ)全效果的重要基礎(chǔ)。
其次,aiXcoder 7B Base 版在代碼補(bǔ)全過(guò)程中「知道」用戶什么時(shí)候需要生成代碼,并在代碼內(nèi)容已經(jīng)完整不需要再生成時(shí)自動(dòng)停止。這成為該模型比較獨(dú)特的功能,其他很多代碼大模型無(wú)法做到這一點(diǎn)。
aiXcoder 團(tuán)隊(duì)表示,該功能在技術(shù)上的實(shí)現(xiàn)離不開(kāi)結(jié)構(gòu)化 Span 技術(shù)。在模型訓(xùn)練中,通過(guò)結(jié)構(gòu)化 Span 技術(shù)來(lái)構(gòu)建訓(xùn)練數(shù)據(jù)和相關(guān)任務(wù),讓模型學(xué)習(xí)到用戶應(yīng)該在什么時(shí)候生成代碼或者補(bǔ)全的內(nèi)容在語(yǔ)法和語(yǔ)義結(jié)構(gòu)上是否完整。
這也就意味著 aiXcoder 7B Base 版能自動(dòng)「知道」自己推理到了什么位置,而其他模型想要終止的話,需要人為設(shè)定終止條件。自動(dòng)推理則少了這種麻煩,有助于提升工作效率。
此外,在 aiXcoder 擴(kuò)展基準(zhǔn)測(cè)試集(aiXcoder Bench)上,aiXcoder 7B Base 版表現(xiàn)出了相較于其他代碼大模型的又一大亮點(diǎn),即傾向于使用較短代碼來(lái)完成用戶指定的任務(wù)。
詳細(xì)結(jié)果如下表所示,在針對(duì) Java、C++、JavaScript 和 Python 編程語(yǔ)言的代碼補(bǔ)全測(cè)評(píng)時(shí),aiXcoder 7B Base 不僅效果最好,四處紅框圈出的生成答案長(zhǎng)度明顯短于其他競(jìng)品模型,并且非常接近甚至有時(shí)比標(biāo)準(zhǔn)答案(Ref)還要短。

aiXcoder 團(tuán)隊(duì)指出,這一后驗(yàn)發(fā)現(xiàn)仍離不開(kāi)結(jié)構(gòu)化 Span 技術(shù)。他們?cè)谡麄€(gè)訓(xùn)練過(guò)程中特別注重代碼結(jié)構(gòu),而結(jié)構(gòu)化 Span 按照代碼結(jié)構(gòu)對(duì)代碼進(jìn)行拆分,這更有益于體現(xiàn)代碼的語(yǔ)義,最終促成了模型「短」答案的同時(shí)效果又占優(yōu)。
除了在以上單文件上下文代碼補(bǔ)全任務(wù)中的卓越表現(xiàn),aiXcoder 7B Base 版在跨多文件補(bǔ)全場(chǎng)景中的表現(xiàn)同樣更勝一籌,不僅針對(duì)多文件的編程效果提升最優(yōu),還在下表 CrossCodeEval 測(cè)評(píng)集上有了一個(gè)重要發(fā)現(xiàn)。
據(jù) aiXcoder 團(tuán)隊(duì)介紹,該模型在只通過(guò)光標(biāo)上文搜索到的結(jié)果作為 prompt(只看當(dāng)前編寫(xiě)的上文),同時(shí)其他模型拿 GroundTruth(把包含答案的文件給到這些模型)搜索到的結(jié)果作為 prompt,在這種條件下,前者的效果依然要強(qiáng)于后者。
如何做到的呢?對(duì)于其他模型來(lái)說(shuō),即使有更多的上下文信息,它們也搞不清楚哪些是最核心、最關(guān)鍵的。而 aiXcoder 7B Base 版能從上下文檔中揀出對(duì)當(dāng)前編寫(xiě)代碼最有效、最核心的上下文細(xì)節(jié),所以才有好的效果。
這里感知到哪些信息最有效最為關(guān)鍵,通過(guò)對(duì)上下文進(jìn)一步信息處理,結(jié)合文件相關(guān)內(nèi)容的聚類(lèi)、代碼 Calling Graph 來(lái)構(gòu)建多文件之間的相互注意力關(guān)系,進(jìn)而獲取到對(duì)當(dāng)前補(bǔ)全或生成任務(wù)最關(guān)鍵的信息。

所有這些創(chuàng)新性訓(xùn)練方法很大程度上決定了 aiXcoder 7B Base 版能夠在眾多代碼大模型的比拼中勝出。此外, 1.2T 的高質(zhì)量訓(xùn)練數(shù)據(jù)同樣功不可沒(méi),這一量級(jí)不僅在同類(lèi)型模型中最大,還是獨(dú)有 token 數(shù)據(jù)。
其中 600G 優(yōu)先放入的高質(zhì)量數(shù)據(jù)對(duì)模型效果起了重要作用,其他數(shù)據(jù)主要來(lái)自 GitHub,以及 Stack Overflow、Gitee 等,自然語(yǔ)言部分還包括了一部分 CSDN 數(shù)據(jù),并且全部數(shù)據(jù)進(jìn)行了過(guò)濾處理。
Talk is cheap, Show me the code
顯然,aiXcoder 7B Base 版在測(cè)評(píng)數(shù)據(jù)上贏了其他代碼大模型,但究竟能不能高效地幫助開(kāi)發(fā)者完成編碼任務(wù)?還是要看實(shí)戰(zhàn)效果。
先看生成能力,對(duì)于前端開(kāi)發(fā),aiXcoder 7B Base 版可以通過(guò)注釋快速地生成對(duì)應(yīng)網(wǎng)頁(yè):

還可以處理高難度算法題,比如經(jīng)典的分糖果問(wèn)題,通過(guò)貪心的策略,以左右兩次遍歷的方式得到最少糖果數(shù)。

再來(lái)看 aiXcoder 7B Base 版更得心應(yīng)手的代碼補(bǔ)全場(chǎng)景,比如長(zhǎng)上下文補(bǔ)全。這里用多個(gè)工具函數(shù)拼成 1500 多行的代碼,要求模型在文件末端進(jìn)行注釋補(bǔ)全,模型識(shí)別到了文件頂部的相關(guān)函數(shù),并成功地結(jié)合函數(shù)信息補(bǔ)全了相關(guān)方法:

還有以下跨文件補(bǔ)全任務(wù),在樹(shù)結(jié)構(gòu)上應(yīng)用動(dòng)態(tài)規(guī)劃來(lái)實(shí)現(xiàn)編輯距離搜索。模型補(bǔ)全的代碼識(shí)別到了編輯距離的計(jì)算與另一個(gè)文件中滾動(dòng)數(shù)組內(nèi)部取最小值的計(jì)算之間的關(guān)系,并給出了正確的預(yù)測(cè)結(jié)果:

當(dāng)然還可以智能化匹配輸出長(zhǎng)度。當(dāng)用戶調(diào)整自己的采納內(nèi)容時(shí),模型能夠根據(jù)當(dāng)前的采納情況自動(dòng)調(diào)整補(bǔ)全長(zhǎng)度:

一句話,有了 aiXcoder 7B Base 版代碼大模型,無(wú)論是代碼生成還是補(bǔ)全,程序員多了一個(gè)效率提升利器,節(jié)省時(shí)間,事半功倍。
拼效果,更拼應(yīng)用
用核心競(jìng)爭(zhēng)力成為企業(yè)首選
我們已經(jīng)看到,aiXcoder 7B Base 版在代碼補(bǔ)全這樣的真實(shí)開(kāi)發(fā)場(chǎng)景中充分展現(xiàn)了自身的硬實(shí)力。不過(guò),對(duì)于企業(yè)客戶來(lái)說(shuō),代碼大模型只是效果好并不能完全打動(dòng)他們。只有全方位滿足自身需求,企業(yè)客戶才會(huì)毫不猶豫地下手。
aiXcoder 7B Base 版正是奔著企業(yè)需要、解決他們的個(gè)性化需求來(lái)的。打造最適合企業(yè)應(yīng)用的代碼大模型,成為了 aiXcoder 7B Base 版的首要目標(biāo)和有別于其他模型的又一核心優(yōu)勢(shì)。
當(dāng)然,想要成為企業(yè)應(yīng)用的最佳選擇并不容易,必須圍繞著企業(yè)業(yè)務(wù)場(chǎng)景、需求、所能承擔(dān)的成本等實(shí)際情況做深文章。aiXcoder 模型不僅這樣做了,而且做到了極致。
簡(jiǎn)而言之,為了實(shí)現(xiàn)企業(yè)級(jí)個(gè)性化的應(yīng)用落地,aiXcoder 模型在私有化部署、個(gè)性化訓(xùn)練和定制化開(kāi)發(fā)三個(gè)方面齊發(fā)力,打造出了相較于其他代碼大模型的核心優(yōu)勢(shì)。
首先來(lái)看私有化部署。對(duì)于企業(yè)而言,代碼大模型在本地服務(wù)器的私有化部署和運(yùn)行,首要考慮的是自身算力是否可以支撐。在這點(diǎn)上,aiXcoder 模型對(duì)企業(yè) GPU 資源要求少,應(yīng)用成本投入低,讓部署模型門(mén)檻大大降低。
此外,不同企業(yè)擁有的軟硬件各異,既會(huì)有國(guó)產(chǎn)芯片,也會(huì)有國(guó)外如英偉達(dá)顯卡。基于此,aiXcoder 模型進(jìn)行針對(duì)性硬件適配以及進(jìn)一步模型訓(xùn)練和推理優(yōu)化,比如在信息處理層面采用高速緩存技術(shù),充分滿足多樣化部署要求。
其次也是 aiXcoder 模型著重強(qiáng)調(diào)的個(gè)性化訓(xùn)練。我們知道,企業(yè)的實(shí)際情況不能一概而論,而 aiXcoder 模型做到了見(jiàn)招拆招,提供了「一攬子」的個(gè)性化模型訓(xùn)練解決方案。
一方面構(gòu)建企業(yè)專(zhuān)屬數(shù)據(jù)集和測(cè)評(píng)集,其中數(shù)據(jù)集構(gòu)建基于企業(yè)代碼特征和員工編碼習(xí)慣,專(zhuān)門(mén)對(duì)代碼及相關(guān)文檔進(jìn)行數(shù)據(jù)預(yù)處理;測(cè)評(píng)集構(gòu)建則以真實(shí)開(kāi)發(fā)場(chǎng)景為準(zhǔn)繩,模擬并評(píng)估模型在實(shí)際應(yīng)用中的預(yù)期效果。
另一方面,將企業(yè)代碼這一內(nèi)因與企業(yè)算力資源這一外因相結(jié)合,充分考慮到不同企業(yè)計(jì)算資源、代碼量的多寡,為他們提供靈活的個(gè)性化訓(xùn)練及優(yōu)化方案,最大化提升專(zhuān)屬代碼大模型的前期訓(xùn)練效果和后續(xù)應(yīng)用效果。
第三是定制化開(kāi)發(fā)。aiXcoder 模型瞄準(zhǔn)不同行業(yè)和企業(yè)的實(shí)際情況,結(jié)合企業(yè)個(gè)性化需求來(lái)為他們提供靈活的定制化服務(wù)。憑借豐富和成熟的定制開(kāi)發(fā)經(jīng)驗(yàn),讓基于企業(yè)代碼和計(jì)算資源打造的模型高度契合實(shí)際需求,讓業(yè)務(wù)效率的提升看得見(jiàn)摸得著。目前,客戶已經(jīng)遍布銀行、證券、保險(xiǎn)、軍工、運(yùn)營(yíng)商、能源、交通等多個(gè)行業(yè)。
可以看到,相較于其他代碼大模型,aiXcoder 能同時(shí)為企業(yè)提供個(gè)性化訓(xùn)練的產(chǎn)品和服務(wù),這在業(yè)內(nèi)是唯一一個(gè)。
背后團(tuán)隊(duì)
十年深耕、厚積薄發(fā)
此次 aiXcoder 7B Base 版代碼大模型展現(xiàn)出來(lái)的編碼能力,讓我們更加好奇模型背后的團(tuán)隊(duì)。
據(jù)了解,aiXcoder 團(tuán)隊(duì)從 2013 年開(kāi)始了基于深度學(xué)習(xí)的代碼分析研究,是全球最早將深度學(xué)習(xí)技術(shù)應(yīng)用于代碼生成與代碼理解領(lǐng)域的團(tuán)隊(duì)。
十年來(lái),團(tuán)隊(duì)在 NeurIPS、ACL、IJCAI、ICSE、FSE、ASE 等頂會(huì)上發(fā)表相關(guān)論文 100 余篇,多篇論文被國(guó)際學(xué)者認(rèn)為是「首創(chuàng)成果」并被廣泛引用,多次獲 ACM 杰出論文獎(jiǎng)。
2017 年,aiXcoder 有了雛形,并在 2018 年正式發(fā)布 aiXcoder 1.0,提供代碼自動(dòng)補(bǔ)全與搜索功能。

2021 年 4 月,團(tuán)隊(duì)推出完全自主知識(shí)產(chǎn)權(quán)的十億級(jí)參數(shù)代碼大模型 aiXcoder L 版,支持代碼補(bǔ)全和自然語(yǔ)言推薦。這也是國(guó)內(nèi)?個(gè)基于「?模型」的智能編程商?產(chǎn)品。
而后,團(tuán)隊(duì)持續(xù)攻堅(jiān),2022 年 6 月再次推出了國(guó)內(nèi)首個(gè)支持方法級(jí)代碼生成的模型 aiXcoder XL 版,同樣具有完全自主知識(shí)產(chǎn)權(quán)。
2023 年 8 月,聚焦企業(yè)適配的 aiXcoder Europa 上線,可以根據(jù)企業(yè)的數(shù)據(jù)安全和算力要求,為他們提供私有化部署和個(gè)性化訓(xùn)練服務(wù),有效降低代碼大模型的應(yīng)用門(mén)檻,提升開(kāi)發(fā)效率。
到了此次,aiXcoder 團(tuán)隊(duì)開(kāi)源 aiXcoder 7B Base 版,將已經(jīng)住考驗(yàn)的全新代碼大模型帶給大家。一方面,該模型以 7B 參數(shù)規(guī)模在代碼補(bǔ)全等真實(shí)開(kāi)發(fā)場(chǎng)景中表現(xiàn)出的越級(jí)能力及其在企業(yè)適配方面的多項(xiàng)核心競(jìng)爭(zhēng)力,有助于推動(dòng)代碼大模型行業(yè)的整體進(jìn)步。另一方面,該模型將對(duì)更廣泛的軟件開(kāi)發(fā)自動(dòng)化產(chǎn)生深遠(yuǎn)的影響,在加速這一進(jìn)程的同時(shí)為各行各業(yè)持續(xù)提升業(yè)務(wù)效率、變革生產(chǎn)方式保駕護(hù)航。
不僅如此,相較于同樣具備代碼能力的通用模型,aiXcoder 7B Base 版讓我們看到了專(zhuān)用代碼大模型更低訓(xùn)練和推理成本、企業(yè)部署成本以及在企業(yè)項(xiàng)目級(jí)代碼上更好、更穩(wěn)定效果的全方位優(yōu)勢(shì)。
目前,aiXcoder 已服務(wù)大量銀行、證券、保險(xiǎn)、軍工、高科技、運(yùn)營(yíng)商、能源、交通等行業(yè)頭部客戶,深耕服務(wù)金融行業(yè),其中與某行業(yè)知名券商的「代碼大模型在證券行業(yè)的應(yīng)用實(shí)踐」項(xiàng)目榮獲 2023AIIA 人工智能十大潛力應(yīng)用案例、中國(guó)信通院 AI4SE 銀彈優(yōu)秀案例等殊榮。
同時(shí),aiXcoder 也因其極具前瞻性的探索方向、踏踏實(shí)實(shí)的落地實(shí)踐,不斷受到資本市場(chǎng)的追捧,高瓴、清流、彬復(fù)等極具行業(yè)引領(lǐng)性的基金紛紛加注 aiXcoder 團(tuán)隊(duì),使其得以迅速成長(zhǎng)!
顯然,在未來(lái) AIGC 的這場(chǎng)較量中,aiXcoder 團(tuán)隊(duì)已經(jīng)做好了準(zhǔn)備。
aiXcoder 開(kāi)源鏈接:
??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)自 機(jī)器之心 ,作者:機(jī)器之心

















