CodeGeeX論文發表:揭秘AI輔助程式設計工具背後的大模型

正在輸入程式碼……發表於2023-04-12

近日,CodeGeeX模型迭代v1.5版本上線,使用者反饋模型效果和使用效率較之前有大幅提升。

file

恰逢CodeGeeX團隊在arxiv上釋出了論文,詳細介紹了CodeGeeX AI程式設計輔助工具背後的程式碼生成大模型的架構、訓練過程及推理加速等工作。

file

今天我們對這篇論文的核心資訊進行解讀,讓更多的開發者瞭解CodeGeeX背後大模型的演進歷程,以便更好的使用CodeGeeX作為開發者新一代的生產力工具。

基於Transformer的技術展現程式碼生成潛力

機器是否能夠根據人類意圖的描述,例如“編寫一個階乘函式”,自動生成解決該需求的可執行程式?這就是自動程式編寫的問題,自20世紀60年代電腦科學的早期就開始了各種探索。

從「LISP-based pioneering deductive synthesis approaches」到「Modern Program Synthesis Systems」,再到透過深度神經網路進行探索,為了使機器能夠自動編寫正確的程式,研究者們一直在尋找正確的方向。

直到2020年,基於Transformer的技術開始展現出自動生成程式碼的潛力,這些生成的程式碼既有語法正確性又具有上下文的一致性。緊接著,大規模語言模型,遇到了大規模開原始碼資料,程式碼生成的進展再次得到了顯著的推動。

在這當中,非常值得我們注意的是:OpenAI的Codex模型,具有120億(12B)引數。在2021年,首次展示出了在數十億行公共程式碼上進行預訓練後,大型程式碼生成模型的潛力。透過使用生成式預訓練(GPT)策略,Codex以很高的機率解決Python入門級程式設計問題。此後,大型預訓練的程式碼模型,得到了廣泛發展。

CodeGeeX模型的3個重要特點

本文的主人公:CodeGeeX模型,是一個具有130億引數的多程式語言程式碼生成預訓練模型,完全使用國產平臺和框架實現,在20多種程式語言的程式碼語料庫歷時兩個月訓練而成。

CodeGeeX對程式碼自動生成的研究,在大語言模型正確的方向下,又與Codex有所不同,具備自己的特點:

file

首先,CodeGeeX本身以及如何預訓練這種規模的程式碼模型都是開源的,這有助於理解和推進預訓練程式碼生成模型的發展。CodeGeeX還支援在Ascend和NVIDIA GPU上進行跨平臺推理。

file

其次,除了像Codex和其他工具一樣支援程式碼生成和程式碼補全之外,CodeGeeX還支援程式碼解釋和多語言之間的程式碼翻譯任務。

第三,它在類似規模的知名多語言程式碼生成模型中,具有一致的效能優勢,這些知名模型包括 CodeGen-16B, GPT-NeoX-20B, InCode-6.7B, and GPT-J-6B 等。

file

CodeGeeX還在多個IDE中構建了免費的CodeGeeX外掛,包括Visual Studio Code、JetBrains IDEs和Tencent Cloud Studio(Web IDE)。

它支援幾種不同的模式——程式碼自動補全、函式級別生成、程式碼翻譯、程式碼解釋和可自定義提示,以幫助使用者實時完成程式設計任務。

file

釋出以來,每天都有數萬名活躍使用者,每個使用者平均每個工作日發起250多個API呼叫。截至本文撰寫時,CodeGeeX模型每週生成47億個token。我們的使用者調研表明,83.4%的使用者認為CodeGeeX提高了他們的程式設計效率。

file

CodeGeeX獲得HumanEval-X的充分驗證

除了CodeGeeX模型外,團隊還構建了多程式語言程式碼生成評價基準HumanEval-X。HumanEval-X是第一個支援功能正確性評測的多語言、多工的基準,包含820個人工編寫的高質量程式碼生成題目、測試用例與參考答案,覆蓋5種程式語言(Python、C++、Java、JavaScript、Go),支援程式碼生成與程式碼翻譯能力的評測。CodeGeeX模型的能力在HumanEval-X得到充分驗證。

file

論文全文見:https://arxiv.org/abs/2303.17568

點選閱讀原文,瞭解並試用基於CodeGeeX大模型的AI程式設計輔助工具(VS Code外掛,JetBrains IDEs外掛):https://codegeex.cn

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章