當(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)源了全自研 aiXcoder7B 代碼大模型,不僅在代碼生成和補(bǔ)全任務(wù)中大幅領(lǐng)先同量級(jí)甚至超越15B、34B 參數(shù)量級(jí)的代碼大模型;還憑借其在個(gè)性化訓(xùn)練、私有化部署、定制化開(kāi)發(fā)方面的獨(dú)有優(yōu)勢(shì),成為最適合企業(yè)應(yīng)用、最能滿(mǎn)足個(gè)性化開(kāi)發(fā)需求的代碼大模型。
aiXcoder7B 的全部模型參數(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è)試集上,aiXcoder7B 版的準(zhǔn)確率遠(yuǎn)超當(dāng)前主流代碼大模型,成為十億乃至百億級(jí)參數(shù)中最強(qiáng)。
除了在 HumanEval 這樣偏向非真實(shí)開(kāi)發(fā)場(chǎng)景的測(cè)試集上取得準(zhǔn)確率新 SOTA,aiXcoder7B在代碼補(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 上,aiXcoder7B Base 版在與 StarCoder2、CodeLlama7B/13B、DeepSeekCoder7B 等主流同量級(jí)開(kāi)源模型的較量中取得最佳效果,成為最適合實(shí)際編程場(chǎng)景的代碼補(bǔ)全基礎(chǔ)模型。具體如下表所示:
aiXcoder7B Base 版的補(bǔ)全效果最好,不單單是準(zhǔn)確率更高,還在實(shí)際運(yùn)行中表現(xiàn)出了其他代碼大模型沒(méi)有或者遜于自己的能力。實(shí)現(xiàn)這些的背后是一系列針對(duì)代碼特性的創(chuàng)新訓(xùn)練方法,正是它們使得 aiXcoder7B Base 版脫穎而出。
首先,aiXcoder7B 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ò)展,成為提升 aiXcoder7B Base 版代碼補(bǔ)全效果的重要基礎(chǔ)。
其次,aiXcoder7B Base 版在代碼補(bǔ)全過(guò)程中「知道」用戶(hù)什么時(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í)到用戶(hù)應(yīng)該在什么時(shí)候生成代碼或者補(bǔ)全的內(nèi)容在語(yǔ)法和語(yǔ)義結(jié)構(gòu)上是否完整。
這也就意味著 aiXcoder7B Base 版能自動(dòng)「知道」自己推理到了什么位置,而其他模型想要終止的話,需要人為設(shè)定終止條件。自動(dòng)推理則少了這種麻煩,有助于提升工作效率。
此外,在 aiXcoder 擴(kuò)展基準(zhǔn)測(cè)試集(aiXcoder Bench)上,aiXcoder7B Base 版表現(xiàn)出了相較于其他代碼大模型的又一大亮點(diǎn),即傾向于使用較短代碼來(lái)完成用戶(hù)指定的任務(wù)。
詳細(xì)結(jié)果如下表所示,在針對(duì) Java、C++、JavaScript 和 Python 編程語(yǔ)言的代碼補(bǔ)全測(cè)評(píng)時(shí),aiXcoder7B 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),aiXcoder7B 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)鍵的。而 aiXcoder7B 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)練方法很大程度上決定了 aiXcoder7B 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
顯然,aiXcoder7B Base 版在測(cè)評(píng)數(shù)據(jù)上贏了其他代碼大模型,但究竟能不能高效地幫助開(kāi)發(fā)者完成編碼任務(wù)?還是要看實(shí)戰(zhàn)效果。
先看生成能力,對(duì)于前端開(kāi)發(fā),aiXcoder7B Base 版可以通過(guò)注釋快速地生成對(duì)應(yīng)網(wǎng)頁(yè):
還可以處理高難度算法題,比如經(jīng)典的分糖果問(wèn)題,通過(guò)貪心的策略,以左右兩次遍歷的方式得到最少糖果數(shù)。
再來(lái)看 aiXcoder7B 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)用戶(hù)調(diào)整自己的采納內(nèi)容時(shí),模型能夠根據(jù)當(dāng)前的采納情況自動(dòng)調(diào)整補(bǔ)全長(zhǎng)度:
一句話,有了 aiXcoder7B Base 版代碼大模型,無(wú)論是代碼生成還是補(bǔ)全,程序員多了一個(gè)效率提升利器,節(jié)省時(shí)間,事半功倍。
拼效果,更拼應(yīng)用
用核心競(jìng)爭(zhēng)力成為企業(yè)首選
我們已經(jīng)看到,aiXcoder7B Base 版在代碼補(bǔ)全這樣的真實(shí)開(kāi)發(fā)場(chǎng)景中充分展現(xiàn)了自身的硬實(shí)力。不過(guò),對(duì)于企業(yè)客戶(hù)來(lái)說(shuō),代碼大模型只是效果好并不能完全打動(dòng)他們。只有全方位滿(mǎn)足自身需求,企業(yè)客戶(hù)才會(huì)毫不猶豫地下手。
aiXcoder7B Base 版正是奔著企業(yè)需要、解決他們的個(gè)性化需求來(lái)的。打造最適合企業(yè)應(yīng)用的代碼大模型,成為了 aiXcoder7B 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ù),充分滿(mǎn)足多樣化部署要求。
其次也是 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)摸得著。目前,客戶(hù)已經(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ā)
此次 aiXcoder7B 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ā)布 aiXcoder1.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)源 aiXcoder7B 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ù)航。
不僅如此,相較于同樣具備代碼能力的通用模型,aiXcoder7B Base 版讓我們看到了專(zhuān)用代碼大模型更低訓(xùn)練和推理成本、企業(yè)部署成本以及在企業(yè)項(xiàng)目級(jí)代碼上更好、更穩(wěn)定效果的全方位優(yōu)勢(shì)。
目前,aiXcoder 已服務(wù)大量銀行、證券、保險(xiǎn)、軍工、高科技、運(yùn)營(yíng)商、能源、交通等行業(yè)頭部客戶(hù),深耕服務(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)備。
文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請(qǐng)謹(jǐn)慎對(duì)待。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。
2024年的Adobe MAX 2024發(fā)布會(huì)上,Adobe推出了最新版本的Adobe Creative Cloud。
奧維云網(wǎng)(AVC)推總數(shù)據(jù)顯示,2024年1-9月明火炊具線上零售額94.2億元,同比增加3.1%,其中抖音渠道表現(xiàn)優(yōu)異,同比有14%的漲幅,傳統(tǒng)電商略有下滑,同比降低2.3%。
“以前都要去窗口辦,一套流程下來(lái)都要半個(gè)月了,現(xiàn)在方便多了!”打開(kāi)“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶(hù)就打進(jìn)了21600元。
華碩ProArt創(chuàng)藝27 Pro PA279CRV顯示器,憑借其優(yōu)秀的性能配置和精準(zhǔn)的色彩呈現(xiàn)能力,為您的創(chuàng)作工作帶來(lái)實(shí)質(zhì)性的幫助,雙十一期間低至2799元,性?xún)r(jià)比很高,簡(jiǎn)直是創(chuàng)作者們的首選。
9月14日,2024全球工業(yè)互聯(lián)網(wǎng)大會(huì)——工業(yè)互聯(lián)網(wǎng)標(biāo)識(shí)解析專(zhuān)題論壇在沈陽(yáng)成功舉辦。