2023-07-28 17:23:48來源:機(jī)器之心
隨著大模型成為 AI 開發(fā)新范式,將大語言模型集成至編程領(lǐng)域、完成代碼生成與補(bǔ)全任務(wù)成為重要趨勢(shì)之一。業(yè)界出現(xiàn)了一些引人矚目的代碼大模型,比如 OpenAI 的 CodeX、谷歌 DeepMind 的 AlphaCode、HuggingFace 的 StarCoder 等等。
在國內(nèi),去年 7 月底,華為諾亞方舟實(shí)驗(yàn)室語音語義實(shí)驗(yàn)室聯(lián)合華為云 PaaS 技術(shù)創(chuàng)新實(shí)驗(yàn)室推出了其代碼大模型 PanGu-Coder。與 Codex 和 AlphaCode 相比,該模型在代碼生成的一次通過率(PASS@1)指標(biāo)上大幅超越同等參數(shù)規(guī)模的模型,甚至優(yōu)于規(guī)模更大的模型。除了英文外,PanGu-Coder 在中文上表現(xiàn)出色。
(資料圖)
PanGu-Coder 模型大小和配置。
根據(jù)對(duì) PanGu-Coder 的相關(guān)內(nèi)測(cè)表現(xiàn),它不僅熟悉常見算法,而且能熟練地使用各種 API,求解高等數(shù)學(xué)問題也不在話下。
一年過去了,PanGu-Coder2 終于來了,論文已在 arXiv 上提交。此次華為云、中國科學(xué)院和北京大學(xué)的研究者聯(lián)合帶來了更強(qiáng)大的代碼生成大模型。
論文地址:https://arxiv.org/pdf/2307.14936.pdf
為了增強(qiáng)預(yù)訓(xùn)練代碼大模型的生成性能,各種各樣的方法被提出并應(yīng)用,比如監(jiān)督微調(diào)、指令調(diào)整、增強(qiáng)學(xué)習(xí)(RL)等。在本文中,針對(duì)現(xiàn)有基于 RL 方法所存在的問題并進(jìn)一步挖掘代碼大模型的潛力,研究者提出了一種全新的 RRTF 框架,它的全稱為 Rank Responses to align Test&Teacher Feedback,成功地在代碼大模型上應(yīng)用自然語言 LLM 對(duì)齊技術(shù)。
就其思路而言,RRTF 框架有別于以往的 CodeRL 和 RLTF,而是遵循了 RLHF(基于人類反饋的強(qiáng)化學(xué)習(xí))的思路,使用排序響應(yīng)(代替獎(jiǎng)勵(lì)模型的絕對(duì)值)作為反饋,實(shí)現(xiàn)了更簡(jiǎn)單和高效的訓(xùn)練方法。
研究者將 RRTF 應(yīng)用于開源的 StarCoder 15B 上,并推出了一個(gè)在所有已發(fā)布代碼大模型中實(shí)現(xiàn)最佳性能的 PanGu-Coder2。該模型在 OpenAI HumanEval 基準(zhǔn)上實(shí)現(xiàn)了 62.20% 的 pass@1 指標(biāo),相較 PanGu-Coder 3億參數(shù)版本的 17.07% 有了顯著提升。
不僅如此,在 CoderEval 和 LeetCode 基準(zhǔn)上的廣泛評(píng)估結(jié)果表明,PanGu-Coder2 超越了以往所有的代碼大模型。
方法概覽RRTF 框架
研究者們提出了一個(gè)更簡(jiǎn)單但是功能強(qiáng)大的框架 RRTF,它將幾種前沿技術(shù)無縫結(jié)合,包括指令調(diào)優(yōu)、Evol-Instruct 方法以及強(qiáng)化學(xué)習(xí)。本次方法的核心理念是:利用測(cè)試信號(hào)和人類偏好共同作為反饋,對(duì)響應(yīng)進(jìn)行排序,從而引導(dǎo)模型生成更高質(zhì)量的代碼。
因此,受最近大型自然語言模型與指令微調(diào)取得的進(jìn)展啟發(fā),研究者提出了這一新的訓(xùn)練范式,即 RRTF 框架??蚣芨庞[如下圖所示。
RRTF 包括以下三個(gè)步驟:采樣、排序和訓(xùn)練。
采樣階段:通過 Evol-Instruct 生成的 prompt 對(duì)響應(yīng)性進(jìn)行采樣。排序階段:根據(jù)單元測(cè)試和啟發(fā)式偏好對(duì)不同來源的響應(yīng)進(jìn)行排序。訓(xùn)練階段:使用 prompt 三元組和被選用 / 被拒絕響應(yīng)的相應(yīng)分?jǐn)?shù)來訓(xùn)練代碼大模型。模型架構(gòu)
基于具有 Multi-Query-AttentionShazeer 的 decoder-only Transformer,研究者訓(xùn)練出一個(gè)15B 參數(shù)的 PanGu-Coder2。同時(shí)利用 FlashAttention 來減少計(jì)算量和內(nèi)存占用。因此,該模型的最大長度可以擴(kuò)展到 8192。下表 1 顯示了該模型的詳細(xì)超參數(shù)。
訓(xùn)練語料庫
由于手動(dòng)收集高質(zhì)量語料庫耗時(shí)耗力,研究者遵循 Evol-Instruct 技術(shù)來構(gòu)建其訓(xùn)練語料庫。具體來講,他們基于 Alpaca 20K 數(shù)據(jù)集,并迭代進(jìn)化該數(shù)據(jù)集中的編程問題,從而獲得新的編程問題。prompt 如下圖 2 所示。
針對(duì)這些問題,研究者從不同模型中采樣了答案??偟膩碚f,他們收集了一個(gè)包含 100K 個(gè)有答案編程問題的原始語料庫,并把它稱為指令和解答方案對(duì)(instruction and solution pairs)。然后利用一些手動(dòng)定義的規(guī)則在原始語料庫上進(jìn)行數(shù)據(jù)預(yù)處理,將其規(guī)??s小至 68K。
更重要的,為了防止數(shù)據(jù)泄露,研究者花大力氣調(diào)查了其 68K 數(shù)據(jù)集與 HumanEval 基準(zhǔn)之間的潛在重疊。經(jīng)過細(xì)致的調(diào)查,他們確信其實(shí)驗(yàn)中無數(shù)據(jù)泄露,進(jìn)一步驗(yàn)證了 PanGu-Coder2 的有效性。
實(shí)現(xiàn)細(xì)節(jié)
研究者選擇 StarCoder 15B 作為基礎(chǔ)模型,并以 512 的全局批大小對(duì)其進(jìn)行 6 epoch 訓(xùn)練。圖 3 展示了單個(gè)訓(xùn)練樣本的格式。除了在 prompt 中添加一對(duì)三引號(hào)外,研究者只使用從響應(yīng)中提取的代碼片段進(jìn)行訓(xùn)練。
實(shí)驗(yàn)及評(píng)估研究團(tuán)隊(duì)進(jìn)行了一系列的實(shí)驗(yàn)來評(píng)估 PanGu-Coder2 的性能。
性能
該研究將 PanGu-Coder2 與現(xiàn)有的代碼大模型在 Python 代碼生成方面進(jìn)行了性能比較。下表 2 顯示了在 HumanEval 基準(zhǔn)上的比較結(jié)果。
在所有閉源模型中,PanGu-Coder2 排名第二。與 PaLM-Coder 和 LaMDA 等大模型相比,PanGu-Coder2 雖然規(guī)模較小,但性能卻更好。值得注意的是,PanGu-Coder2 的表現(xiàn)優(yōu)于 OpenAI 的 GPT-3.5,但與 GPT-4 仍有差距。
表 3 展示了貪婪解碼的比較結(jié)果。在所有基準(zhǔn)測(cè)試中,PanGuCoder2 都取得了最好的成績(jī)。值得注意的是,PanGu-Coder2 不僅在 HumanEval 上超過了 WizardCoder 和 StarCoder,而且在 CoderEval 和 LeetCode 上也超過了這兩個(gè)模型。
表 2 和表 3 的實(shí)驗(yàn)結(jié)果可以得出以下結(jié)論:
在開源模型中,PanGu-Coder2 在 HumanEval 上以 61.64% pass@1 達(dá)到了 SOTA。盡管 PanGu-Coder2 的規(guī)模較小,但其性能卻優(yōu)于 PaLM-Coder 和 LaMDA 等更大規(guī)模的模型。PanGu-Coder2 是實(shí)驗(yàn)中唯一同時(shí)在 HumanEval、CoderEval 和 LeetCode 上都達(dá)到最佳性能的模型。如下圖 4 所示,整體準(zhǔn)確率隨著數(shù)據(jù)集大小的增加而增加:
在訓(xùn)練計(jì)算量方面,無論數(shù)據(jù)集大小如何,準(zhǔn)確率可能會(huì)在訓(xùn)練開始時(shí)急劇下降或持平。大約 2 個(gè) epoch 后,訓(xùn)練曲線變得更加穩(wěn)定,準(zhǔn)確率隨著損失的減少而持續(xù)上升。3 個(gè) epoch 后,準(zhǔn)確率達(dá)到最佳,而 4 個(gè) epoch 后,準(zhǔn)確率變得更加穩(wěn)定,顯示出收斂的跡象。這表明,PanGu-Coder2 模型大約需要 3-4 個(gè) epoch 才能完全捕捉到數(shù)據(jù)集中的知識(shí),而之后的訓(xùn)練步驟對(duì)提高模型能力的幫助可能微乎其微。
用例研究
為了對(duì)模型進(jìn)行實(shí)證研究并分析未來的工作方向,該研究比較和分析了三個(gè)模型的成功和失敗案例:基礎(chǔ)模型 StarCoder、指令調(diào)整模型 WizardCoder 和 PanGu-Coder2 模型。下圖 5 顯示了三種模型在貪婪解碼(greedy decoding)和核采樣(nucleus sampling)方面的異同:
圖 5 還表明 PanGu-Coder2 和 WizardCoder 可以互補(bǔ):雖然 PanGu-Coder2 解決了大部分問題,并且其中一些問題是 WizardCoder 無法解決的,但也有一些問題只能通過 WizardCoder 解決。此外,還有一些問題即使采樣 200 次,這三個(gè)模型也都無法解決。
該研究選擇 StarCoder、WizardCoder 和 PanGu-Coder2 生成的幾個(gè)具有代表性的示例代碼作為案例進(jìn)行研究,以對(duì) PanGu-Coder2 的優(yōu)缺點(diǎn)進(jìn)行評(píng)估。
如下圖 6 所示,PanGu-Coder2 能夠熟練地理解編程問題的邏輯,而 WizardCoder 和 StarCoder 在這方面有所欠缺。這一觀察結(jié)果表明,PanGu-Coder2 通過該研究提出的排名反饋,有效地在編程問題陳述和代碼解決方案之間建立了細(xì)致的映射。
如下圖 7 所示,在某些情況下,PanGu-Coder2 和 StarCoder 的性能差于 WizardCoder,WizardCoder 可能受益于使用大量豐富注釋代碼指令進(jìn)行訓(xùn)練。在某種程度上,這一觀察表明,引入注釋數(shù)據(jù)可能會(huì)在訓(xùn)練過程中產(chǎn)生積極效果。
此外,下圖 8 給出了一個(gè)復(fù)雜的編程挑戰(zhàn),StarCoder、WizardCoder 和 PanGu-Coder2 都給出了錯(cuò)誤的代碼解決方案。這一觀察結(jié)果表明,目前代碼大模型在處理復(fù)雜編程要求方面仍達(dá)不到人類的熟練程度,還有一些改進(jìn)的空間。
推理優(yōu)化
GPU 內(nèi)存消耗和推理速度是模型實(shí)際部署和使用的關(guān)鍵因素,因此該研究使用 CTranslate2 和 GPTQ 兩種量化技術(shù)來進(jìn)行實(shí)驗(yàn),研究模型推理的優(yōu)化策略。下表 4 展示了使用不同量化技術(shù)優(yōu)化的模型的 GPU 內(nèi)存消耗、推理速度和 HumanEval 性能。
關(guān)鍵詞:
隨著大模型成為AI開發(fā)新范式,將大語言模型集成至編程領(lǐng)域、完成代碼生
【星源卓鎂:公司暫未向小鵬汽車供貨】財(cái)聯(lián)社7月28日電,星源卓鎂在互
日前,2023年江蘇省青少年足球精英聯(lián)賽在南京市順利完賽,鹽城市松江路
頂點(diǎn)軟件漲停
中國質(zhì)量新聞網(wǎng)訊近日從浙江省舟山市普陀區(qū)人民政府網(wǎng)站獲悉,舟山市市
數(shù)據(jù)中心因浪費(fèi)水資源而備受關(guān)注。隨著我們?cè)絹碓揭蕾嚁?shù)據(jù)中心服務(wù),可
人造板泛指利用原木或“三剩物”,以及竹材、農(nóng)作物秸稈等非木材植物生
由工業(yè)和信息化部、浙江省人民政府共同主辦的2023全國專精特新中小企業(yè)
“阡陌交通,雞犬相聞。”這是東晉陶淵明在《桃花源記》一文中,對(duì)悠然
近期,指令微調(diào)(IFT)已經(jīng)被作為預(yù)訓(xùn)練大語言模型(LLMs)獲得指令遵
根據(jù)Statista的數(shù)據(jù)顯示,到2026年,全球在數(shù)字化轉(zhuǎn)型技術(shù)和服務(wù)上的支
每日忙于取數(shù)、缺少領(lǐng)導(dǎo)指導(dǎo)、對(duì)業(yè)務(wù)不熟悉,是阻礙數(shù)據(jù)分析師成長的三
在Vue js中有一種使用eventemitters通過父組件在兩個(gè)子組件之間進(jìn)行通
縱觀過去一百多年全球城市的興衰浮沉,作者認(rèn)為影響一個(gè)城市發(fā)展的因素
云平臺(tái)可在快速發(fā)展的物聯(lián)網(wǎng)(IoT)領(lǐng)域?qū)崿F(xiàn)無縫連接、數(shù)據(jù)管理和分析。