【#區(qū)塊鏈# #微軟祭出代碼大模型WaveCoder!4項(xiàng)代碼任務(wù)2萬個(gè)實(shí)例數(shù)據(jù)集,讓LLM泛化能力飆升#】
原文來源:新智元
圖片來源:由無界 AI生成
指令調(diào)優(yōu)或許是讓大模型性能提升最有潛力的方法。
用高質(zhì)量數(shù)據(jù)集進(jìn)行指令調(diào)優(yōu),能讓大模型性能快速提升。
對此,微軟研究團(tuán)隊(duì)訓(xùn)練了一個(gè)CodeOcean數(shù)據(jù)集,包含了2萬個(gè)指令實(shí)例的數(shù)據(jù)集,以及4個(gè)通用代碼相關(guān)任務(wù)。
與此同時(shí),研究人員微調(diào)了一個(gè)代碼大模型WaveCoder。
論文地址:https://arxiv.org/abs/2312.14187
實(shí)驗(yàn)結(jié)果表明,Wavecoder優(yōu)于其他開源模型,在以前的代碼生成任務(wù)中表現(xiàn)出色。
過去的一年,GPT-4、Gemini、Llama等大模型在一系列復(fù)雜NLP任務(wù)中取得了前所未有的性能。
這些LLM利用自監(jiān)督預(yù)訓(xùn)練的過程,以及隨后的微調(diào),展示了強(qiáng)大的零/少樣本的能力,能夠有效遵循人類指示完成不同的任務(wù)。
然而,若想訓(xùn)練微調(diào)這樣一個(gè)大模型,其成本非常巨大。
因此,一些相對較小的LLM,特別是代碼大語言模型(Code LLM),因其在廣泛的代碼相關(guān)任務(wù)上的卓越的性能,而引起了許多研究者的關(guān)注。
鑒于LLM可以通過預(yù)訓(xùn)練獲得豐富的專業(yè)知識(shí),因此在代碼語料庫上進(jìn)行高效的預(yù)訓(xùn)練,對代碼大模型至關(guān)重要。
包括Codex、CodeGen、StarCoder和CodeLLaMa在內(nèi)的多項(xiàng)研究已經(jīng)成功證明,預(yù)訓(xùn)練過程可以顯著提高大模型處理代碼相關(guān)問題的能力。
此外,指令調(diào)優(yōu)的多項(xiàng)研究(FLAN、ExT5)表明,指令調(diào)優(yōu)后的模型在各種任務(wù)中的表現(xiàn)符合人類預(yù)期。
這些研究將數(shù)千個(gè)任務(wù)納入訓(xùn)練管道,以提高預(yù)訓(xùn)練模型對下游任務(wù)的泛化能力。
比如,InstructGPT通過整合人類標(biāo)注者編寫的高質(zhì)量指令數(shù)據(jù),有效地調(diào)整了用戶輸入,推進(jìn)指令調(diào)優(yōu)的進(jìn)一步探索。
斯坦福的Alpaca利用ChatGPT通過Self-Instruct的方法,自己生成指令數(shù)據(jù),進(jìn)而用于指令調(diào)優(yōu)的過程。
WizardLM和WizardCoder則應(yīng)用了evol-instruct的方法,進(jìn)一步提高了預(yù)訓(xùn)練模型的有效性。
這些近來的研究都體現(xiàn)了,指令調(diào)優(yōu)在提高大模型性能方面,展現(xiàn)出強(qiáng)大的潛力。
基于這些工作,研究人員的直覺是,指令調(diào)優(yōu)可以激活大模型的潛力,然后將預(yù)訓(xùn)練模型微調(diào)到出色的智能水平。
對此,他們總結(jié)了指令調(diào)優(yōu)的主要功能:
- 泛化
指令調(diào)優(yōu)最初是為了增強(qiáng)大模型的跨任務(wù)泛化能力而提出的,當(dāng)使用不同的NLP任務(wù)指令進(jìn)行微調(diào)時(shí),指令調(diào)優(yōu)可提高模型在大量未見任務(wù)中的性能。
- 對齊
預(yù)訓(xùn)練模型從大量token和句子層面的自監(jiān)督任務(wù)中學(xué)習(xí),已經(jīng)具備了理解文本輸入的能力。指令調(diào)優(yōu)為這些預(yù)訓(xùn)練模型提供了指令級(jí)任務(wù),讓它們能夠從指令中提取原始文本語義之外的更多信息。這些額外的信息是用戶的意圖,能增強(qiáng)它們與人類用戶的交互能力,從而有助于對齊。
為了通過指令調(diào)優(yōu)提高代碼大模型的性能,目前已有許多設(shè)計(jì)好的生成指令數(shù)據(jù)的方法,主要集中在兩個(gè)方面。
例如,self-instructe、vol-instruct利用teacher LLM的零/少樣本的能力來生成指令數(shù)據(jù),這為教學(xué)數(shù)據(jù)的生成提供了一種神奇的方法。
然而,這些生成方法過于依賴于teacher LLM的性能,有時(shí)會(huì)產(chǎn)生大量的重復(fù)數(shù)據(jù),便會(huì)降低微調(diào)的效率。
為了解決這些問題,如圖2所示,研究人員提出了一種可以充分利用源代碼,并明確控制生成數(shù)據(jù)質(zhì)量的方法。
由于指令調(diào)優(yōu)是為了使預(yù)訓(xùn)練模型與指令遵循訓(xùn)練集保持一致,研究人員提出了一個(gè)用于指令數(shù)據(jù)生成的LLM Generator-Disciminator(大模型生成器-判別器)框架。
通過使用生成器和判別器,最新方法可以使數(shù)據(jù)生成過程,更可定制和更可控。
該方法以原始代碼作為輸入,選擇核心數(shù)據(jù)集,通過調(diào)整原始代碼的分布,可以穩(wěn)定地生成更真實(shí)的指令數(shù)據(jù),控制數(shù)據(jù)的多樣性。
針對上述挑戰(zhàn),研究人員將指令實(shí)例分類為4個(gè)通用的代碼相關(guān)任務(wù):代碼匯總、代碼生成、代碼翻譯、代碼修復(fù)。
同時(shí),使用數(shù)據(jù)生成策略為4個(gè)代碼相關(guān)的任務(wù)生成一個(gè)由20000個(gè)指令實(shí)例的數(shù)據(jù)集,稱為CodeOcean。
為了驗(yàn)證最新的方法,研究人員將StarCoder、CodeLLaMa、DeepseekCoder作為基礎(chǔ)模型,根據(jù)最新的數(shù)據(jù)生成策略,微調(diào)出全新的WaveCoder模型。
與此同時(shí),研究人員在 HumanEval、MBPP、HumanEvalPack對模型進(jìn)行了評估,結(jié)果表明,WaveCoder在小規(guī)模指令調(diào)優(yōu)的基準(zhǔn)上擁有出色的性能。
代碼數(shù)據(jù)生成
如上所述,研究人員選擇了4個(gè)具有代表性的編碼任務(wù),并從開源數(shù)據(jù)集中收集原始代碼。
以下具體介紹了訓(xùn)練數(shù)據(jù)生成過程。
在本節(jié)中,我們將介紹我們探索的方法細(xì)節(jié)。我們首先選擇4個(gè)代表性的編碼任務(wù),并從開源數(shù)據(jù)集中收集原始代碼。
對于每個(gè)任務(wù),作者使用GPT-3.5-turbo生成指令數(shù)據(jù)進(jìn)行微調(diào)。生成提示如表2所示。
如下,是LLM Generator-Disciminator整體架構(gòu),也是數(shù)據(jù)生成的完整過程。
Codesearchnet是一個(gè)包含來自 GitHub 上托管的開源庫的200萬對(注釋、代碼)的數(shù)據(jù)集。它包括6種編程語言的代碼和文檔。我們選擇 CodeSearchNet 作為我們的基礎(chǔ)數(shù)據(jù)集,并應(yīng)用基于 coreset 的選擇方法KCenterGreedy來最大化原始代碼的多樣性。
具體來說,生成器根據(jù)輸入(a)生成指令數(shù)據(jù)。隨后,判別器接受輸出并生成分析結(jié)果,輸出(b)包括四個(gè)鍵,研究人員將這些信息作為指令調(diào)優(yōu)的輸入和輸出。
分析(c)包括每條規(guī)則的詳細(xì)原因和總體答案,以檢查樣本是否滿足所有要求。
代碼生成任務(wù)評估
表3顯示了兩個(gè)基準(zhǔn)上不同大模型的pass@1得分。從結(jié)果來看,我們有以下觀察結(jié)果:
WaveCoder大大優(yōu)于使用少于20k指令調(diào)優(yōu)數(shù)據(jù)(InsT Data)的指令模型訓(xùn)練。
經(jīng)過微調(diào)過程,與基礎(chǔ)模型和開源模型的選擇相比,最新模型的性能顯示出實(shí)質(zhì)性的改善,但它仍然落后于專有模型的指導(dǎo)模型訓(xùn)練超過70k的訓(xùn)練數(shù)據(jù)。
研究人員還用HumanEvalPack上最先進(jìn)的Code LLM對WaveCoder進(jìn)行評分,如表4。
表5列出了WaveCoder在代碼匯總?cè)蝿?wù)方面的結(jié)果,突出顯示了以下顯著的觀察結(jié)果:
參考資料:
https://arxiv.org/abs/2312.14187
小編推薦下載
LYS代碼印刷機(jī) 學(xué)習(xí)工具
SMD元件代碼查詢 辦公效率
微信卡死代碼 娛樂消遣
微信死機(jī)代碼 娛樂消遣
C語言編程代碼 學(xué)習(xí)工具
android代碼閱讀器 學(xué)習(xí)工具
組合模型2 動(dòng)作冒險(xiǎn)
電梯故障代碼查詢系統(tǒng) 辦公效率
相關(guān)推薦
相關(guān)文章
更多>>資訊排行
同類軟件下載
熱門標(biāo)簽