上海交大發(fā)布大模型雙語編程評估基準(zhǔn)CodeApex,機(jī)器真的開始挑戰(zhàn)人類寫代碼了嗎?
打造能自己寫代碼的機(jī)器,這是計(jì)算機(jī)科學(xué)和人工智能先鋒者一直在追尋的目標(biāo)。而隨著 GPT 類大模型的快速發(fā)展,這樣的目標(biāo)正在從遙不可及開始變得近在咫尺。
大語言模型 (Large Language Models) 的出現(xiàn),讓模型的編程能力越來越受到研究者的關(guān)注。在此態(tài)勢下,上海交通大學(xué) APEX 實(shí)驗(yàn)室推出了 CodeApex-- 一個專注于評估 LLMs 的編程理解和代碼生成能力的雙語基準(zhǔn)數(shù)據(jù)集。
在評估大語言模型的編程理解能力上,CodeApex 設(shè)計(jì)了三種類型的選擇題:概念理解、常識推理和多跳推理。此外,CodeApex 也利用算法問題和相應(yīng)的測試用例來評估 LLMs 的代碼生成能力。CodeApex 總共評估了 14 個大語言模型在代碼任務(wù)上的能力。其中 GPT3.5-turbo 表現(xiàn)出最好的編程能力,在這兩個任務(wù)上分別實(shí)現(xiàn)了大約 50% 和 56% 的精度。可以看到,大語言模型在編程任務(wù)上仍有很大的改進(jìn)空間,打造能自己寫代碼的機(jī)器,這樣的未來十分可期。

- 網(wǎng)站:https://apex.sjtu.edu.cn/codeapex/
- 代碼:https://github.com/APEXLAB/CodeApex.git
- 論文:https://apex.sjtu.edu.cn/codeapex/paper/
簡介
編程理解和代碼生成是軟件工程中的關(guān)鍵任務(wù),在提高開發(fā)人員生產(chǎn)力、增強(qiáng)代碼質(zhì)量和自動化軟件開發(fā)過程中起著關(guān)鍵作用。然而,由于代碼的復(fù)雜性和語義多樣性,這些任務(wù)對于大模型來說仍然具有挑戰(zhàn)性。與普通的自然語言處理相比,使用 LLMs 生成代碼需要更加強(qiáng)調(diào)語法、結(jié)構(gòu)、細(xì)節(jié)處理和上下文理解,對生成內(nèi)容的準(zhǔn)確度有著極高要求。傳統(tǒng)的方法包括基于語法規(guī)則的模型、基于模板的模型和基于規(guī)則的模型,它們通常依賴于人工設(shè)計(jì)的規(guī)則和啟發(fā)式算法,這些規(guī)則和算法在覆蓋范圍和準(zhǔn)確性方面受到限制。
近年來,隨著 CodeBERT 和 GPT3.5 等大規(guī)模預(yù)訓(xùn)練模型的出現(xiàn),研究人員開始探索這些模型在編程理解和代碼生成任務(wù)中的應(yīng)用。這些模型在訓(xùn)練期間集成了代碼生成任務(wù),使它們能夠理解并生成代碼。然而,由于缺乏標(biāo)準(zhǔn)的、公開可用的、高質(zhì)量的、多樣化的基準(zhǔn)數(shù)據(jù)集,對 LLMs 在代碼理解和生成方面的進(jìn)步進(jìn)行公平的評估是很困難的。因此,建立一個廣泛覆蓋代碼語義和結(jié)構(gòu)的基準(zhǔn)數(shù)據(jù)集對于促進(jìn)編程理解和代碼生成的研究至關(guān)重要。
現(xiàn)有的代碼基準(zhǔn)數(shù)據(jù)集在應(yīng)用于 LLMs 時(shí),存在著適用性和多樣性的問題。例如,部分?jǐn)?shù)據(jù)集更適用于評估 Bert 類型的、雙向語言建模的 LLMs。而現(xiàn)存的多語言代碼基準(zhǔn)數(shù)據(jù)集(例如 Human-Eval)包含的問題比較簡單、缺乏多樣性、只能實(shí)現(xiàn)一些基本的功能代碼。
為了彌補(bǔ)以上空白,上海交通大學(xué) APEX 數(shù)據(jù)與知識管理實(shí)驗(yàn)室構(gòu)建了一個新的大模型代碼理解與生成的評測基準(zhǔn) --CodeApex。作為一個開創(chuàng)性的雙語(英語,漢語)基準(zhǔn)數(shù)據(jù)集,CodeApex 專注于評估 LLMs 的編程理解和代碼生成能力。

CodeApex 的整體實(shí)驗(yàn)場景如上圖所示。
第一個任務(wù)編程理解包括 250 道單項(xiàng)選擇題,分為概念理解、常識推理和多跳推理。用于測試的題目選自高校的不同課程 (編程、數(shù)據(jù)結(jié)構(gòu)、算法) 的期末考試題目,大大降低了數(shù)據(jù)已經(jīng)在 LLMs 訓(xùn)練語料庫中的風(fēng)險(xiǎn)。CodeApex 在 0-shot、2-shot、5-shot 三種場景下測試了 LLMs 的代碼理解能力,并同時(shí)測試了 Answer-Only 和 Chain-of-Thought 兩種模式對于 LLMs 能力的影響。
第二個任務(wù)代碼生成包括 476 個基于 C++ 的算法問題,涵蓋了常見的算法知識點(diǎn),如二分搜索、深度優(yōu)先搜索等。CodeApex 給出了問題的描述和實(shí)現(xiàn)問題的函數(shù)原型,并要求 LLMs 完成函數(shù)的主要部分。CodeApex 還提供了 function-only 和 function-with-context 兩種場景,它們的區(qū)別是:前者只有目標(biāo)函數(shù)的描述,而后者除了目標(biāo)函數(shù)的描述之外,還被提供了目標(biāo)函數(shù)的調(diào)用代碼、時(shí)間空間限制、輸入輸出描述。
實(shí)驗(yàn)結(jié)果表明,不同模型在代碼相關(guān)任務(wù)中的表現(xiàn)不同,GPT3.5-turbo 表現(xiàn)出卓越的競爭力和明顯的優(yōu)勢。此外,CodeApex 比較了 LLMs 在雙語場景下的表現(xiàn),揭示了不同的結(jié)果。總體而言,在 CodeApex 排行榜中,LLMs 的準(zhǔn)確性仍有很大的提高空間,這表明 LLMs 在代碼相關(guān)任務(wù)中的潛力尚未被完全開發(fā)。
代碼理解
要將大語言模型完全集成到實(shí)際代碼生產(chǎn)場景中,編程理解是必不可少的。編程理解需要從各個方面理解代碼的能力,例如對語法的掌握、對代碼執(zhí)行流程的理解以及對執(zhí)行算法的理解。
CodeApex 從高校期末考試題目中抽取了 250 道選擇題作為測試數(shù)據(jù),這些測試數(shù)據(jù)被分成了三類:概念理解、常識推理、多跳推理。

測試模式包括兩類:Answer-Only 和 Chain-of-Thought。

實(shí)驗(yàn)結(jié)果與結(jié)論
CodeApex 在代碼理解任務(wù)上的中英評測結(jié)果如以下兩表所示。(表現(xiàn)最好的模型加粗顯示;表現(xiàn)次好的模型用下劃線標(biāo)注。)


從中可以得到以下結(jié)論:
- 雙語能力比較。中文版的得分高于英文版。主要有兩個原因:(1)源題描述來源于中國高校的期末考試,因此試題最初是用中文呈現(xiàn)的。即使翻譯成英文,它們?nèi)匀话艘恍┲袊颂赜械恼Z言習(xí)慣。因此,當(dāng)將這些帶有偏差的英語問題輸入到 LLMs 中時(shí),可能會在模型的編碼結(jié)果中引入一些噪聲。(2)大多數(shù)被評估的模型主要是在中文數(shù)據(jù)上進(jìn)行訓(xùn)練的,這導(dǎo)致了較差的結(jié)果。
- 不同題型的能力比較。在這三個問題類別中,大約有一半的模型在概念理解方面表現(xiàn)最好,這表明它們在被訓(xùn)練期間可能包含了編程概念的知識。與多跳推理相比,大多數(shù)模型在常識推理方面得分更高,這表明 LLMs 的能力隨著推理步驟的增加而顯著降低。
- CoT 思維鏈模式的作用。大多數(shù)模型在 CoT 模式下的準(zhǔn)確度接近或低于 Answer-Only 模式。出現(xiàn)這種現(xiàn)象的原因有兩個方面:(1)評估的模型規(guī)模沒有達(dá)到具有 CoT 涌現(xiàn)能力的模型尺寸。此前的研究認(rèn)為,CoT 的出現(xiàn)要求 LLMs 至少具有 60B 個參數(shù)。當(dāng)參數(shù)數(shù)量不夠時(shí),CoT 設(shè)置可能會引入額外的噪聲,LLMs 生成的響應(yīng)不穩(wěn)定。而 GPT3.5-turbo 已經(jīng)達(dá)到了涌現(xiàn)能力出現(xiàn)點(diǎn),在 CoT 設(shè)置上可以達(dá)到更高的精度。(2)在回答概念理解和常識性推理問題時(shí),不太需要多步推理。因此,LLMs 的 CoT 能力并不能為這類問題提供幫助。然而,對于多跳推理問題,某些模型 (如 ChatGLM2、educhat 和 GPT3.5-turbo) 在 CoT 場景中的準(zhǔn)確性有明顯提高。(由于 CodeT5 無法通過思維鏈生成響應(yīng),CodeApex 將其排除在 CoT 設(shè)置之外。)
代碼生成
訓(xùn)練大語言模型生成準(zhǔn)確且可執(zhí)行的代碼是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。CodeApex 主要評估 LLMs 基于給定描述生成算法的能力,并通過單元測試自動評估生成代碼的正確性。
CodeApex 的代碼生成任務(wù)包括 476 個基于 C++ 的算法問題,涵蓋了常見的算法知識點(diǎn),如二分搜索和圖算法等。CodeApex 給出了問題的描述和實(shí)現(xiàn)問題的函數(shù)原型,并要求 LLMs 完成函數(shù)的主要部分。

CodeApex 提供了 Function-only 和 Function-with-context 兩種場景。Function-only 場景只提供了目標(biāo)函數(shù)的描述,而 Function-with-context 場景不僅提供了目標(biāo)函數(shù)描述,還提供了目標(biāo)函數(shù)的調(diào)用代碼、 時(shí)間空間限制、輸入輸出描述。

實(shí)驗(yàn)結(jié)果與結(jié)論
每種語言版本都采用了兩種 Prompt 策略 (Function-Only 和 Function-with-Context)。為了和人類代碼測試場景對齊,評估指標(biāo)包括了 AC@1, AC@all 和 AC 率。



各模型的代碼生成任務(wù)結(jié)果如以下兩張表格所示。(表現(xiàn)最好:加粗;表現(xiàn)次好:下劃線。)


可以得到以下結(jié)論:
- GPT3.5-turbo 表現(xiàn)優(yōu)于其他 11 個 LLMs,平均得分超過 50%。
- WizardCoder 和 StarCoder 排名第二和第三,突出了通過基于代碼的微調(diào)在代碼生成能力方面的顯著改進(jìn)。
- 在代碼生成任務(wù)上,目前測試的模型在中英文題型上無明顯性能差異。
此外,CodeApex 還提供了每種場景中可編譯代碼的比例。在將生成函數(shù)和主函數(shù)連接起來之后,可編譯的代碼再去通過測試用例進(jìn)行檢查。

可以看到:
- 大多數(shù)模型能夠生成超過 50% 的可編譯代碼,這證明了 LLMs 理解函數(shù)原型的能力。
- 通常,提供有關(guān)函數(shù)的上下文信息可以幫助 LLMs 生成可編譯代碼。
結(jié)論
CodeApex 作為一個關(guān)注 LLMs 編程能力的雙語基準(zhǔn),評估了大語言模型的編程理解和代碼生成能力。在編程理解上,CodeApex 在三類選擇題中評估了不同模型的能力。在代碼生成上,CodeApex 利用測試代碼用例的通過率來評估模型的能力。對于這兩個任務(wù),CodeApex 精心設(shè)計(jì)了 Prompt 策略,并在不同的場景下進(jìn)行了比較。CodeApex 在 14 個 LLMs 上進(jìn)行了實(shí)驗(yàn)評估,包括通用 LLMs 和基于代碼微調(diào)的專用 LLMs 模型。
目前,GPT3.5 在編程能力方面達(dá)到了比較良好的水平,在編程理解和代碼生成任務(wù)上分別實(shí)現(xiàn)了大約 50% 和 56% 的精度。CodeApex 顯示,大語言模型在編程任務(wù)上的潛力尚未被完全開發(fā)。我們期待在不久的將來,利用大型語言模型生成代碼將徹底改變軟件開發(fā)領(lǐng)域。隨著自然語言處理和機(jī)器學(xué)習(xí)的進(jìn)步,這些模型在理解和生成代碼片段方面將變得更加強(qiáng)大和熟練。開發(fā)人員將發(fā)現(xiàn)他們在編碼工作中擁有了一個前所未有的盟友,因?yàn)樗麄兛梢砸揽窟@些模型來自動化繁瑣的任務(wù),提高他們的生產(chǎn)力,并提高軟件質(zhì)量。
在未來,CodeApex 將發(fā)布更多用于測試大語言模型代碼能力的測試(例如代碼校正),CodeApex 的測試數(shù)據(jù)也會持續(xù)更新,加入更多元的代碼問題。同時(shí),CodeApex 榜單也會加入人類實(shí)驗(yàn),將大語言模型的代碼能力和人類水平做對比。CodeApex 為大語言模型編程能力的研究提供了基準(zhǔn)與參考,將促進(jìn)大語言模型在代碼領(lǐng)域的發(fā)展與繁榮。
APEX 實(shí)驗(yàn)室簡介
上海交大 APEX 數(shù)據(jù)與知識管理實(shí)驗(yàn)室成立于 1996 年,其創(chuàng)辦人為 ACM 班總教頭俞勇教授。實(shí)驗(yàn)室致力于探索將數(shù)據(jù)有效挖掘和管理并總結(jié)出知識的人工智能技術(shù),發(fā)表 500 篇以上國際學(xué)術(shù)論文,并追求在實(shí)際場景中的落地應(yīng)用。27 年來,APEX 實(shí)驗(yàn)室在多次世界技術(shù)浪潮中成為全球范圍內(nèi)的先鋒者,實(shí)驗(yàn)室于 2000 年開始研究語義網(wǎng)(現(xiàn)稱知識圖譜)核心技術(shù),于 2003 年開始研究個性化搜索引擎和推薦系統(tǒng)技術(shù),于 2006 年開始研究遷移學(xué)習(xí)理論與算法,于 2009 年開始探索深度學(xué)習(xí)技術(shù)并基于 GPU 開發(fā)神經(jīng)網(wǎng)絡(luò)訓(xùn)練庫。產(chǎn)出豐碩的科研和落地成果的同時(shí),APEX 實(shí)驗(yàn)室也鍛煉出了一支功底扎實(shí)的數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)研究團(tuán)隊(duì),走出了包括薛貴榮、張雷、林晨曦、劉光燦、王昊奮、李磊、戴文淵、黎珍輝、陳天奇、張偉楠、楊笛一等人工智能領(lǐng)域杰出校友。
































