隨著人工智能技術的不斷發展,大模型在各個領域都有了廣泛的應用。在軟件工程領域,大模型也被用于輔助代碼生成。大模型代碼生成工具可以從自然語言提示或部分代碼輸入中生成代碼,極大地提高了軟件開發的效率和質量。
目前,已經有許多研究人員和機構開展了大模型代碼生成能力的評估研究。這些評估研究為了解大模型代碼生成工具的現狀和發展趨勢提供了重要參考。
本文中,將介紹大模型代碼生成最新排行,以及能力評估的常用評估指標和數據集。
大模型代碼生成能力的評估指標
"Papers with Code" 是一個知名的研究論文和代碼共享平臺,為學者們提供了一個展示和對比研究成果的平臺。其中,HumanEval Benchmark (Code Generation) 部分列出了代碼生成領域的最新模型排名。為了深入理解這些排名,我們需要了解其背后的評估指標。
數據集介紹
HumanEval是由AI target=_blank class=infotextkey>OpenAI開發的廣泛使用的代碼生成基準測試。它涵蓋了從簡單的字符串操作到復雜的算法設計的多種編程任務。
如上圖所示,每個任務都包括一個函數簽名、注釋、主體和幾個單元測試。為了確保評估的公正性,這些任務都是手工編寫的。在模型訓練過程中,模型沒有接觸過這些具體任務。模型接收的提示以白色背景顯示,而模型成功生成的代碼部分以黃色背景顯示。這樣的設計旨在為評估提供一個公正的基準,確保模型在實際應用中的性能與在數據集上的表現是一致的。
數據集特點
1.多樣性:HumanEval涵蓋了從基礎到高級的各種編程任務,確保了模型在各種情境下都能得到充分的評估。
2.實際應用導向:該基準測試的設計考慮了實際的編程需求,從而確保了模型的實用性和實際應用價值。
3.動態更新:隨著編程領域的不斷進步,HumanEval也會定期更新,加入新的編程任務和挑戰,確保其始終保持與時俱進。
評估方法
1.直接生成:評估模型在沒有任何先驗知識或提示的情況下,直接生成代碼的能力。
2.多次嘗試:評估模型在多次嘗試和修正后的代碼生成性能。
3.代碼質量:除了代碼的正確性,還會評估生成代碼的效率、可讀性和維護性。
4.算法設計:評估模型在設計和實現復雜算法時的性能。
5.數據結構操作:測試模型在操作如數組、鏈表、樹等常見數據結構時的能力。
6.實際編程場景模擬:模擬真實的編程任務,如數據庫操作、網絡編程等,來評估模型的實際應用能力。
評估指標
其中,Pass@k是一個核心指標。它衡量的是模型在生成k個樣本后至少有一個樣本是正確的概率。例如,Pass@1表示模型第一次嘗試生成代碼時的正確率;Pass@10表示模型在前10次嘗試中至少有一次生成了正確的代碼;而Pass@100則表示在前100次嘗試中,模型至少有一次生成了正確的代碼。
大模型代碼生成能力的最新排行
基于上述數據集,指標與實驗方法,下方列出了代碼生成任務的最新模型排名:
第一名介紹:
圖中根據Pass@1分數從高到低排序,GPT系列位居前列:
Reflexion (GPT-4): 目前在HumanEval上的最佳模型,其Pass@1得分為91.0。其背后的研究成果為"Reflexion: Language Agents with Verbal Reinforcement Learning"。這篇于2023年發布的論文探討了如何通過語言反饋來強化語言代理,而不是通過更新權重。具體來說,Reflexion代理的工作方式是,當完成一個任務并接收到反饋后,它會生成一段關于該反饋的描述或分析。這段反思文本隨后被存儲在一個特定的“情景記憶緩沖區”中。當代理在后續的任務中遇到類似的情境時,它會回顧這個緩沖區中的反思文本,從而幫助其做出更好的決策。這種獨特的方法使Reflexion在多種任務上獲得了顯著的改進,例如,在HumanEval編碼基準測試上達到了91%的pass@1準確率,超過了之前的最新技術GPT-4的80%。
第二名介紹:
GPT-4: 排名第二,其Pass@1得分為86.6。相關論文為"OctoPack: Instruction Tuning Code Large Language Models",發布于2023年,文中探討了如何通過指令調優來提高大型語言模型(LLMs)在自然語言任務上的性能。研究者采用了一種獨特的方法,利用Git提交(commits)的自然結構,將代碼更改與人類指令配對,進行指令調優。
為此,他們編譯了名為"CommitPack"的數據集,包含了4TB的Git提交數據,涵蓋了350種編程語言。他們將CommitPack與其他自然和合成的代碼指令(如xP3x、Self-Instruct、OASST)進行了基準測試,并在16B參數的StarCoder模型上取得了卓越的性能。在HumanEval Python/ target=_blank class=infotextkey>Python基準測試上,該模型達到了46.2%的pass@1準確率。
此外,研究者還引入了"HumanEvalPack",將HumanEval基準測試擴展到了3種編碼任務(代碼修復、代碼解釋、代碼合成)和6種語言(Python、JAVAScript、Java、Go、C++、Rust)。他們的模型,OctoCoder和OctoGeeX,在HumanEvalPack中的所有模型中表現最佳,證明了CommitPack在泛化到更廣泛的語言集和自然編碼任務上的優勢。
第三名介紹:
Parsel (GPT-4 + CodeT): 排名第三,其Pass@1得分為85.1,發布于2022年。相關論文為:"Parsel: Algorithmic Reasoning with Language Models by Composing Decompositions"
文中詳細探討了"Parsel",一個專為增強大型語言模型(LLMs)在代碼生成和層次化多步推理任務中的能力而設計的框架。為了更好地生成復雜的程序代碼,Parsel采用了一種獨特的方法:它首先自動將算法任務分解為層次化的自然語言函數描述,然后利用測試來尋找可能的函數實現方式。這種方法不僅適用于代碼生成,還可以廣泛應用于其他需要層次化推理的領域,如機器人規劃。實驗結果證明,Parsel在代碼生成任務上,特別是在解決高難度的競賽級問題時,相較于傳統的直接生成方法,展現出了更為出色的性能。
第八名介紹
值得關注的是,中國的模型在這個排行榜上也有顯著的表現。
例如,PanGu-Coder2 15B,其Pass@1得分為61.64,而Pass@100得分高達91.76分。排名第八,緊隨GPT系列,相關論文為” PanGu-Coder2: Boosting Large Language Models for Code with Ranking Feedback”:
文中探討了關于OpenAI發布了Codex之后,許多其他的代碼生成模型如AlphaCode、PaLM-Coder和PanGu-Coder相繼發布。但是,大多數代碼LLM在性能上仍然落后于最新的商業模型,如OpenAI的GPT-3.5和GPT-4。
提出了RRTF框架:為了解決現有基于強化學習的方法的問題,并進一步挖掘Code LLM的潛力,作者提出了RRTF框架。與之前的工作如CodeRL和RLTF不同,RRTF采用了與InstructGPT/ChatGPT相似的RLHF(Reinforcement Learning from Human Feedback)的思想,但采用了一種更簡單且高效的訓練方法,使用排名響應作為反饋而不是獎勵模型的絕對值。
通過廣泛的評估,PanGu-Coder2在多個基準測試上都取得了最佳性能,盡管與如GPT系列的通用模型仍有一定差距,但是超越了之前所有發布的Code LLMs。
第29名介紹
清華大學開源的CodeGeeX-13B ,其Pass@1得分為22.9分,排名29
相關論文為:”CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X”,介紹了CodeGeeX,用于代碼生成的多語言模型,擁有130億參數。CodeGeeX在2022年6月之前的23種編程語言上預訓練了8500億個TOKENS。廣泛的實驗表明,CodeGeeX在HumanEval-X上的代碼生成和翻譯任務上均超越了類似規模的多語言代碼模型。此外,清華團隊還在Visual Studio Code、JetBrains和Cloud Studio上構建了基于CodeGeeX的擴展,每周為數萬活躍用戶生成47億TOKENS。用戶研究顯示,83.4%的用戶認為CodeGeeX可以幫助提高編碼效率。并且開源了其代碼、模型權重、API、擴展和HumanEval-X。
而后面緊跟的CodeGeeX2-6B,Pass@1得分為35.9分,能力大幅加強,提升了12名
按照Pass@1分數(35.9)排序,位列17名左右,在開源CODE LLM中有相當的競爭力。
總結
總的來說,大型語言模型在代碼生成領域的進展是顯而易見的,各大研究團隊都在不斷推動技術的邊界,努力提高模型的性能和實用性。特別是中國的模型,如PanGu-Coder2和CodeGeeX,不僅在排行榜上取得了驕人的成績,更展現了中國在人工智能研究領域的實力和潛力。隨著技術的不斷進步,我們有理由相信,未來的語言模型將為編程和軟件開發帶來更多的便利和創新。
參照文獻:
Large Language Model Evaluation in 2023: 5 Methods (aimultiple.com)
https://arxiv.org/pdf/2304.10778.pdf
HumanEval Benchmark (Code Generation) | Papers With Code
https://arxiv.org/pdf/2107.03374.pdf
THUDM/CodeGeeX2: CodeGeeX2: A More Powerful Multilingual Code Generation Model (Github.com)