最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

掘力計(jì)劃第21期 - CodeGeeX:從代碼生成模型到AI編程助手

2023-08-16 18:28 作者:掘金技術(shù)社區(qū)  | 我要投稿

8月12日,在掘力計(jì)劃系列第21場(chǎng)《解析大語言模型的訓(xùn)練和應(yīng)用》活動(dòng)中,智譜AI的薛宇飛博士應(yīng)邀作了題為《CodeGeeX:從代碼生成模型到AI編程助手》的技術(shù)分享。

薛宇飛博士是智譜AI大模型事業(yè)部的副總裁,他擁有清華大學(xué)計(jì)算機(jī)系的博士學(xué)位和博士后經(jīng)歷,在人工智能領(lǐng)域有多年的研究和產(chǎn)品經(jīng)驗(yàn),曾任職于多家頂級(jí)科技公司。這次薛博士以自身團(tuán)隊(duì)在代碼生成模型方面的研究為切入點(diǎn),詳細(xì)介紹了從訓(xùn)練一個(gè)大規(guī)模的通用代碼生成模型,到落地產(chǎn)品化并開發(fā)IDE插件,最終使廣大開發(fā)者能夠享受到AI編程助手帶來的便利。

背景:編程向更簡(jiǎn)單方向發(fā)展

從計(jì)算機(jī)誕生以來,編程工作就在不斷朝著更簡(jiǎn)單、更符合人的思維邏輯方向發(fā)展。早期的機(jī)器語言極為復(fù)雜難懂,匯編語言相比機(jī)器語言提高了可讀性和生產(chǎn)效率,然后出現(xiàn)了面向過程和面向?qū)ο蟮母呒?jí)語言,進(jìn)一步降低了編程的門檻。近年來,低代碼平臺(tái)的興起使不專業(yè)的開發(fā)者也能參與軟件開發(fā),AI輔助代碼生成技術(shù)更是讓自動(dòng)編程成為可能。

自動(dòng)生成代碼的想法隨著人工智能技術(shù)的進(jìn)步也在逐步實(shí)現(xiàn)。早期主要采用基于規(guī)則的方法,2015年第一次有研究將深度學(xué)習(xí)應(yīng)用于代碼生成,取得了一定進(jìn)展。2020年, Transformer 架構(gòu)不僅通過 GPT-3 模型展示它在自然語言生成方面的驚人能力,也開始被應(yīng)用到了代碼生成領(lǐng)域。2021年,OpenAI 推出了規(guī)模達(dá)到百億參數(shù)的 Codex 代碼生成模型,使自動(dòng)代碼生成真正具備實(shí)用性。此后,業(yè)界紛紛推出自己的代碼生成模型和編程助手產(chǎn)品。

CodeGeeX 模型訓(xùn)練

CodeGeeX 項(xiàng)目于2022年1月啟動(dòng),4月開始正式訓(xùn)練,6月訓(xùn)練完成。訓(xùn)練數(shù)據(jù)主要來源于公開數(shù)據(jù)集和 GitHub 高質(zhì)量代碼。公開數(shù)據(jù)集提供初始訓(xùn)練語料,GitHub 代碼經(jīng)篩選后確保質(zhì)量。第一版 CodeGeeX 支持23種編程語言,其中 Python、C++、Java 的訓(xùn)練代碼量最大。大模型可以從不同語言中學(xué)習(xí)通用邏輯,不需要語言完全均衡。

原始代碼數(shù)據(jù)需要進(jìn)行預(yù)處理。首先對(duì)代碼進(jìn)行分詞,然后將每個(gè)詞轉(zhuǎn)換成對(duì)應(yīng)的ID,得到模型可直接識(shí)別的格式。此外,每個(gè)代碼片段前加語言標(biāo)識(shí),讓模型更好地學(xué)習(xí)到不同語言的特性。

CodeGeeX 采用GPT結(jié)構(gòu),包含40個(gè) Transformer 層,參數(shù)總量達(dá)到130億?;贕PT的生成方式是順序生成,每次根據(jù)前文預(yù)測(cè)下一個(gè)詞。訓(xùn)練過程中團(tuán)隊(duì)與華為合作,在華為昇騰910 AI處理器上完成。使用FP16精度、數(shù)據(jù)并行和模型并行訓(xùn)練技術(shù),經(jīng)過兩個(gè)月完成訓(xùn)練。

訓(xùn)練過程中,CodeGeeX團(tuán)隊(duì)還與華為昇思 MindSpore 團(tuán)隊(duì)的工程師一起對(duì)訓(xùn)練框架進(jìn)行了優(yōu)化。如通過算子融合等技術(shù),將訓(xùn)練速度提升了2.5倍;加入流水線并行后,整體效率可提升3倍之多。這些成果為后續(xù)國(guó)產(chǎn)芯片的大模型訓(xùn)練帶來借鑒。

模型評(píng)測(cè)與優(yōu)化

訓(xùn)練完成后,對(duì)模型進(jìn)行評(píng)測(cè)與優(yōu)化才能使其投入實(shí)際使用。由于之前針對(duì)多語言代碼生成模型缺乏科學(xué)的評(píng)測(cè)基準(zhǔn),團(tuán)隊(duì)基于HumanEval構(gòu)建了HumanEval-X評(píng)測(cè)基準(zhǔn),將其從只支持 Python 擴(kuò)展到 C++、Java、JavaScript 和 Go 五種語言,可以更全面地評(píng)估模型的多語言生成能力。

評(píng)測(cè)結(jié)果顯示,CodeGeeX 在 Python 和 Java 上的 Pass@1 指標(biāo)明顯優(yōu)于對(duì)手模型,其他語言也有出色表現(xiàn),是當(dāng)時(shí)綜合表現(xiàn)最優(yōu)的開源多語言代碼生成模型。

為減小模型大小便于實(shí)際部署,團(tuán)隊(duì)使用量化與推理優(yōu)化技術(shù)。最終模型從 27GB 降低到 15GB,推理速度也提升2倍多?;谏鲜龉ぷ?,CodeGeeX 能夠在普通 GPU 上流暢運(yùn)行。

AI編程助手應(yīng)用

代碼生成模型完成之后,團(tuán)隊(duì)著手開發(fā) IDE 插件,將模型應(yīng)用到實(shí)際編程過程中。CodeGeeX 插件支持 VS Code 和JetBrains 等主流 IDE。用戶可以利用代碼補(bǔ)全、生成注釋等功能,也可以通過自然語言聊天提問。

代碼補(bǔ)全可以智能提示后續(xù)代碼,語義代碼注釋可自動(dòng)添加詳細(xì)注釋,代碼翻譯可以在多種語言之間轉(zhuǎn)換。這些功能都基于 CodeGeeX 模型或在其基礎(chǔ)上進(jìn)行微調(diào)得到。用戶可以選擇中文或英文注釋。新版模型支持更多語言,如 Kotlin、Vue 等。

CodeGeeX 插件可以自動(dòng)生成復(fù)雜SQL查詢語句,通過公開SQL練習(xí)平臺(tái)的題目,前20題全部正確,最后10題也有很多正確,達(dá)到可助力編程的標(biāo)準(zhǔn)。該插件已經(jīng)累積15萬用戶,日活躍2.5萬,獲得廣大開發(fā)者認(rèn)可。

CodeGeeX二代模型升級(jí)

今年7月團(tuán)隊(duì)推出了第二代模型CodeGeeX2-6B。它 使用 ChatGLM2-6B 作為基底模型,在此基礎(chǔ)上使用代碼數(shù)據(jù)進(jìn)行微調(diào)。這樣一來,新模型規(guī)模減小到6B,但效果顯著提升,如 Python Pass@1 提升57%,已超過參數(shù)規(guī)模更大的 StarCoder 模型。

HumanEval (Pass@1,10,100)

ModelPass@1Pass@10Pass@100CodeGen-16B-multi19.234.655.2CodeGeeX-13B22.939.660.9Codex-12B28.846.872.3CodeT5Plus-16B-mono30.951.676.7Code-Cushman-00133.554.377.4LLaMA-65B23.7-79.3LLaMA2-70B29.9--CodeGen2.5-7B-mono33.458.482.7StarCoder-15B33.26184.7CodeGeeX2-6B35.962.688.3

HumanEval-X (Pass@1)

ModelPythonC++JavaJavaScriptGoRustOverallCodeGen-16B-multi19.218.11518.4131.814.2CodeGeeX-13B22.917.12017.614.44.316Replit-code-v1-3B2220.120.120.112.28.617.2CodeGen2.5-7B-multi30.624.32927.518.920.125.1StarCoder-15B35.528.231.533.221.317.827.9CodeGeeX2-6B35.929.330.832.222.518.128.1

CodeGeeX2 繼承了 ChatGLM2 的中英文語言理解能力,支持更長(zhǎng)的文本序列。此外,支持語言種類從23種提升到上百種。新版模型權(quán)重對(duì)學(xué)術(shù)研究完全開放,可在GitHub或Hugging Face上獲取權(quán)重的下載及使用方式。

結(jié)語

綜上所述,CodeGeeX 從一個(gè)編程語言生成模型發(fā)展成一個(gè)可供廣大開發(fā)者使用的AI編程助手,已經(jīng)走過兩年時(shí)間。期間團(tuán)隊(duì)進(jìn)行了模型設(shè)計(jì)、訓(xùn)練、評(píng)估、優(yōu)化、產(chǎn)品化等一系列創(chuàng)新性的工作。先使用 GPT 結(jié)構(gòu)訓(xùn)練出百億參數(shù)規(guī)模的通用模型,然后以 ChatGLM 為基礎(chǔ)進(jìn)行調(diào)優(yōu),使新版模型效果更優(yōu)。在 IDE 插件中集成代碼生成等功能,真正將AI的力量帶入到開發(fā)的日常之中。

當(dāng)前 CodeGeeX 插件已經(jīng)積累大量用戶,也獲得他們的認(rèn)可。團(tuán)隊(duì)將繼續(xù)改進(jìn)產(chǎn)品,以期讓編程對(duì)所有人來說都更簡(jiǎn)單、更有效率。大模型編程助手正在成為編程發(fā)展的新方向,相信未來必將惠及更多開發(fā)者,提升軟件開發(fā)的生產(chǎn)力。

關(guān)于掘力計(jì)劃

掘力計(jì)劃由稀土掘金技術(shù)社區(qū)發(fā)起,致力于打造一個(gè)高品質(zhì)的技術(shù)分享和交流的系列品牌。聚集國(guó)內(nèi)外頂尖的技術(shù)專家、開發(fā)者和實(shí)踐者,通過線下沙龍、閉門會(huì)、公開課等多種形式分享最前沿的技術(shù)動(dòng)態(tài)。


掘力計(jì)劃第21期 - CodeGeeX:從代碼生成模型到AI編程助手的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
万山特区| 兖州市| 周口市| 湛江市| 九台市| 方城县| 纳雍县| 巧家县| 呼伦贝尔市| 汉寿县| 中牟县| 阜阳市| 理塘县| 从江县| 栖霞市| 甘孜县| 铁力市| 灌阳县| 玉龙| 鹤峰县| 内江市| 县级市| 绵阳市| 小金县| 宜兰县| 平湖市| 洛扎县| 和顺县| 迁安市| 罗山县| 沈丘县| 广平县| 日照市| 成都市| 土默特左旗| 黄浦区| 乐平市| 汾西县| 罗源县| 丹凤县| 淮南市|