日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1. 概述

基于預訓練模型的生成技術在自然語言處理領域獲得了極大的成功。近年來,包括OpenAI GPT-3、華為PanGu-Alpha等在內的文本生成模型展示出了驚人的創造力,生成能力遠超以往的技術,逐漸成為序列生成的一種基本范式,并顯示出了巨大的商業潛力。在這種范式的引導下,研究人員開始嘗試將語言生成模型引入到軟件工程領域,并在代碼生成與補全等任務中取得了突破性進展。其中,最廣為人知的當屬微軟發布的AI輔助編程工具Copilot。

近日,華為諾亞方舟實驗室語音語義實驗室聯合華為云PaaS技術創新實驗室基于PanGu-Alpha研制出了當前業界最新的模型PanGu-Coder [1]。與業界標桿Copilot 背后的Codex[2]以及谷歌的AlphaCode等[3][4]相比,PanGu-Coder在代碼生成的一次通過率(PASS@1)指標上不僅大幅超越同等規模的模型,甚至超越了參數量規模更大的模型。在支持的語言上,除英文外,PanGu-Coder在中文上同樣有出色的表現,在未來也可以更好地服務使用中文的開發者。在內測中還發現:PanGu-Coder不但熟悉常見算法,還能熟練地使用各種API,甚至可以求解高等數學問題。相信經過不斷打磨,PanGu-Coder將逐步成為編程人員的聰明助手。

2. 訓練數據

PanGu-Coder使用了380GB的原始Python/ target=_blank class=infotextkey>Python文件,通過MD5校驗,限制文件大小、代碼長度以及AST解析等方式對原始文件進行了清洗、去重等工作,最終得到了147GB的數據用作模型訓練階段的輸入。

為了提升函數級代碼生成的效果,每個Python文件中的代碼語料均按照函數級的方式進行了重新組織。例如:如果某個函數的定義之后緊接著對于函數的自然語言注釋,該注釋將被放置到函數定義之前,形成自然語言到代碼的配對數據,并用以構建訓練數據集。

3. 訓練方法

PanGu-Coder將訓練分為了兩個階段:第一階段使用了全量的代碼數據進行訓練;第二階段選擇了更符合目標任務的自然語言和代碼對作為訓練數據對模型進行調優。

3.1 模型架構

圖1 PanGu-Coder的模型結構

由于PanGu-Alpha所采用的的自回歸Transformer架構所具備強大的文本生成能力,在PanGu-Coder的訓練中也沿用了此模型架構用于代碼生成任務,其架構如圖1所示。同時,PanGu-Coder也沿用了PanGu-Alpha的中英文多語詞表,從而同時具備支持中英文輸入的能力。

3.2 訓練方法

受課程學習(Currilum Learning)啟發,PanGu-Coder采用了兩階段訓練的方式進行訓練:1)在原始語料上,采用傳統的自回歸語言建模(Causal language modeling,CLM)進行訓練;2)在經過篩選的語料上,僅對<自然語言,代碼>平行句對樣本,采用創新的代碼自回歸語言建模(Code-CLM)進行訓練。

圖2 PanGu-Coder的兩階段樣本構成方式

PanGu-Coder的兩階段樣本示例如圖2所示。圖2(左)為第一階段訓練樣本,圖2(右)為第二階段樣本。在第一階段的訓練中,PanGu-Coder具備了自然語言和代碼交錯的語言模型的能力,而第二階段樣本則幫助PanGu-Coder在通過自然語言進行代碼生成的任務上得到了更好的適配。

圖3 PanGu- Coder: Code-CLM 損失函數

在第二階段的訓練中,PanGu-Coder采用了專門為代碼生成而設計的Code-CLM作為其損失函數。如圖3所示。在訓練過程中,Code-CLM僅保留代碼部分的Loss計算結果,同時忽略了自然語言部分的Loss。Code-CLM損失函數的采用,讓PanGu-Coder更專注于學習生成代碼序列的同時減少了自然語言序列帶來的干擾,使得PanGu-Coder的第二階段訓練數據與訓練目標都更接近代碼生成任務的真實場景。

4. 實驗結果

4.1 模型生成的通過率

模型的一次生成通過率(PASS@1)是代碼語言生成模型最重要的能力衡量指標。PanGu-Coder采用了OpenAI發布的HumanEval以及谷歌發布的MBPP兩個函數級代碼生成任務的數據集作為評測目標。表1給出了HumanEval中一個非常簡單的例子。PanGu-Coder生成的代碼需要通過單元測試(Unit Tests)才被認為生成正確。

表1 HumanEval 示例

在HumanEval數據集上,與業界標桿Codex(OpenAI)以及包括AlphaCode(google Deep Mind)、CodeGen(Saleforce)、 INCoder(Meta)等模型相比,PanGu-Coder在3億和26億模型上的一次通過率PASS@1均達到最優。值得一提的是,3億參數的PanGu-Coder模型(PASS@1=17.07%)超越了Codex (PASS@1=16.22%)接近7億參數的模型結果,基本持平了谷歌10億的模型(表2)。在MBPP數據集上, 26億參數的模型超越了META INCoder 接近70億參數的模型效果(表3)。另外,在訓練的充分程度上,PanGu-Coder是所有模型中所用數據量以及計算量最小(train tokens)的模型。這一結果充分說明了PanGu-Coder數據集構建策略和分階段訓練設計的合理性,并展示了采用這種方式能夠在函數級代碼生成這一最重要場景上達到業界最優。

表2 PanGu-Coder在HumanEval上的一次通過率以及十次通過率

表3 PanGu-Coder在MBPP上的一次通過率以及十次通過率

為進一步提升模型函數級代碼生成的能力,PanGu-Coder收集了包括CodeContest、CodeSearc.NET、AppS在內的業界已公開的大規模函數級數據集對模型進行微調(Fine-tune),得到了PanGu-Coder-FT。實驗結果表明,微調模型在MBPP以及HumanEval上的表現到了明顯提升(表4)。

表4 PanGu-Coder: 3億模型Fine-tune結果

實際編碼過程中,通常在實現一個函數之前,會預先設計若干測試用例來測試函數實現結果。在HumanEval 164個函數描述中,有130個問題描述中包含了預設的測試用例。為驗證基于測試用例的代碼生成的有效性,PanGu-Coder在進行多次生成(200次)的情況下使用這些測試用例對生成的代碼進行了過濾,并統計了過濾后代碼的通過率。從最終結果可以看出,利用測試用例對生成的代碼進行過濾可以極大地提升通過率,其中3億的模型可以達到41.52%。

表5 PanGu-Coder: 3億模型測試用例過濾結果

4.2 工具內測

PanGu-Coder模型已集成到了華為云的代碼開發輔助工具中,可以在IDE中使用自然語言描述生成函數級的Python代碼,或者根據上下文進行補全。

如下是內測過程中產生的幾個實際的例子。

(1)常見的數據結構算法

Input: 使用冒泡排序的方法對數組進行排序。

OutPut:

(2)SQL查詢功能

Input: 使用MySQL, 從表 “AI research” 的所有記錄, 選擇address為"Hong Kong Science Park" 的記錄,并顯示結果.

OutPut:

(3)使用機器學習工具創建文本分類器

Input: create a text binary sentiment classifier .

Output:

(4)高等數學題1: 求微分

Input: Using sympy find the derivative of the function using the definition of the derivative.f(x)= (x**2-1)/(2*x-3).

Output:

(5)高等數學題2,求概率分布

Input: One generates a number x from a uniform distribution on the interval [0, θ].One decides to test H0 : θ = 2 against HA : θ = 2 by rejecting H0 if x ≤ 0.1 or x ≥ 1.9.Using simulations, compute the probability of a type I error.

Output:

5. 展望

PanGu-Coder是基于華為的預訓練語言模型PanGu-Alpha演進而來的代碼生成模型,在模型訓練的高效性以及函數級生成與補全性能上均達到業界領先的水平。目前PanGu-Coder已經集成在華為云的代碼開發輔助工具中進行內測。同時PanGu-Coder也在不斷的迭代與演進,以支持更多的編程語言、提供更好、更快的生成能力。

文章來自 PaaS技術創新Lab,PaaS技術創新Lab隸屬于華為云,致力于綜合利用軟件分析、數據挖掘、機器學習等技術,為軟件研發人員提供下一代智能研發工具服務的核心引擎和智慧大腦。我們將聚焦軟件工程領域硬核能力,不斷構筑研發利器,持續交付高價值商業特性!加入我們,一起開創研發新“境界”!

PaaS技術創新Lab主頁鏈接:https://www.huaweicloud.com/lab/paas/home.html

參考文獻:

[1] Christopoulou, Fenia, et al. "PanGu-Coder: Program Synthesis with Function-Level Language Modeling." arXiv preprint arXiv:2207.11280 (2022).

[2] Chen, Mark, et al. "Evaluating large language models trained on code." arXiv preprint arXiv:2107.03374 (2021).

[3] Li, Yujia, et al. "Competition-level code generation with AlphaCode." arXiv preprint arXiv:2203.07814 (2022).

[4] Nijkamp, Erik, et al. "A conversational paradigm for program synthesis." arXiv preprint arXiv:2203.13474 (2022).

分享到:
標簽:PanGu Coder
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定