自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

代碼模型自我進(jìn)化超越GPT-4o蒸餾!UIUC伯克利等提出自對(duì)齊方法 | NIPS 2024

人工智能 新聞
近日,來(lái)自UIUC、伯克利等機(jī)構(gòu)的研究人員提出了SelfCodeAlign。

LLM作為智能的基座,可以衍生出各種能力。

代碼能力就是其中一種:程序補(bǔ)全、注釋、優(yōu)化、修bug、測(cè)試等等。

而想要充分發(fā)揮LLM的巨大潛力,指令調(diào)優(yōu)(Instruction Tuning)是至關(guān)重要的一步。

圖片

當(dāng)前,高質(zhì)量指令數(shù)據(jù)主要有兩個(gè)來(lái)源:人工注釋和蒸餾。

前者很貴,后者則受到限制。于是,人們開(kāi)始另辟蹊徑。

近日,來(lái)自UIUC、伯克利等機(jī)構(gòu)的研究人員提出了SelfCodeAlign。

這篇工作首次證明了,可以通過(guò)自對(duì)齊(Self-Alignment)來(lái)獲得強(qiáng)大的代碼模型,不需要人工注釋或者蒸餾,而且效果更好!

圖片

論文地址:https://arxiv.org/pdf/2410.24198

SelfCodeAlign在整個(gè)數(shù)據(jù)生成過(guò)程中,使用相同的基礎(chǔ)模型進(jìn)行推理,分為三步:

首先,從高質(zhì)量的種子片段中提取不同的編碼概念,以生成新任務(wù)。

然后,對(duì)每個(gè)任務(wù)的多個(gè)響應(yīng)進(jìn)行采樣,將每個(gè)響應(yīng)與測(cè)試用例配對(duì),并在沙盒環(huán)境中對(duì)其進(jìn)行驗(yàn)證。

最后,選擇驗(yàn)證通過(guò)的示例來(lái)進(jìn)行指令調(diào)優(yōu)。

圖片

SelfCodeAlign是第一個(gè)完全透明的pipeline,使用純自生成的指令數(shù)據(jù)對(duì)基礎(chǔ)代碼模型進(jìn)行自對(duì)齊。

實(shí)驗(yàn)表明,使用SelfCodeAlign對(duì)CodeQwen1.5-7B進(jìn)行指令微調(diào),在HumanEval+上實(shí)現(xiàn)了67.1 pass@1,超過(guò)了參數(shù)量大10倍的CodeLlama-70B-Instruct。

圖片

在全部的三項(xiàng)基準(zhǔn)測(cè)試(代碼生成、數(shù)據(jù)科學(xué)編程、代碼編輯)中,SelfCodeAlign都戰(zhàn)勝了之前最先進(jìn)的指令微調(diào)方法OctoPack。

此外,在HumanEval+上,SelfCodeAlign的性能超越了基于GPT-3.5-Turbo的蒸餾方法(包括 OSS-Instruct(61.6)和Evol-Instruct(59.1)),甚至打敗了GPT-4o的直接輸出蒸餾(65.9)!

圖片

這意味著,從模型自己的數(shù)據(jù)分布對(duì)齊中學(xué)習(xí),可能勝于使用強(qiáng)大的teacher模型。

SelfCodeAlign適用于各種規(guī)模(從3B到33B)的LLM,比如StarCoder2-Struct就是以此為基礎(chǔ)創(chuàng)建的(base model為StarCoder2-15B)。

圖片

自對(duì)齊代碼生成

下圖以StarCoder2-15B的指令調(diào)優(yōu)過(guò)程為例,展示了SelfCodeAlign的流程:

圖片

種子選擇

SelfCodeAlign首先從The Stack V1中收集一組種子代碼片段。

此步驟中,確保種子片段多樣化且高質(zhì)量至關(guān)重要,它們將用作生成說(shuō)明和響應(yīng)的起點(diǎn)。

為了收集種子片段,研究人員從The Stack V1中提取所有帶有文檔字符串的Python函數(shù),然后應(yīng)用一系列過(guò)濾規(guī)則來(lái)確保種子片段的質(zhì)量。

通過(guò)運(yùn)行Pyright類型檢查器、刪除基準(zhǔn)項(xiàng)、過(guò)濾掉文檔質(zhì)量差的函數(shù),以及刪除幾乎重復(fù)的函數(shù),總共從5M個(gè)函數(shù)中過(guò)濾出250k個(gè)Python函數(shù)。

概念生成

收集種子函數(shù)后,開(kāi)始執(zhí)行Self-OSS-Instruct,對(duì)OSS-Instruct的自對(duì)齊進(jìn)行修改,以生成不同的指令。

具體來(lái)說(shuō),這里采用上下文學(xué)習(xí)(In-context learning)讓基礎(chǔ)模型從給定的種子代碼片段中自行生成指令。

### System : I - > R 
You are an extremely intelligent AI coding assistant . Please provide an accurate and reliable response to each user instruction . After delivering your response , verify its consistency and correctness by writing a series of executable tests . 
### System : C - > I 
Create a series of independent coding tasks that are original , distinct , diverse , and high - quality , fostering logical thinking . Each task must adhere to specified properties : 
- category : the type of task ( e . g . , function implementation , class implementation , or program implementation ) 
- language : the programming language to be used 
- difficulty : the complexity level of the task ( e . g . , easy , medium , or hard ) 
- concepts : fundamental principles and techniques the task is designed to incorporate , which developers must understand to effectively solve the task 
Design the tasks so that the relevant concepts emerge naturally as the most appropriate solutions , without explicitly mentioning that a particular concept should be used .

作者使用了21個(gè)精心設(shè)計(jì)的示例來(lái)教模型如何工作:

圖片

指令生成過(guò)程分為以下兩個(gè)步驟:

概念提?。簩?duì)于每個(gè)種子函數(shù),提示基本模型生成函數(shù)中存在的代碼概念列表。代碼概念是指編程中使用的基本原則和技術(shù),例如模式匹配和數(shù)據(jù)類型轉(zhuǎn)換。

指令生成:提示基本模型根據(jù)已識(shí)別的代碼概念和兩個(gè)附加屬性(難度和類別)自生成編碼任務(wù),隨機(jī)抽樣以豐富生成指令的多樣性。

執(zhí)行篩選

根據(jù)Self-OSS-Struct生成的指令,下一步是將每條指令與高質(zhì)量teacher模型(比如GPT-4)相匹配。

不過(guò),很多強(qiáng)大的商業(yè)模型不允許用蒸餾來(lái)做這種事,而且,teacher模型也不一定就更加厲害,畢竟老師也會(huì)犯錯(cuò)誤,這時(shí)就會(huì)起到負(fù)作用。

作者建議,明確指示模型在產(chǎn)生與自然語(yǔ)言交錯(cuò)的響應(yīng)后,生成用于自我驗(yàn)證的測(cè)試來(lái)自對(duì)齊基本模型。

具體來(lái)說(shuō),對(duì)于每個(gè)指令,基本模型對(duì)格式的多個(gè)輸出(響應(yīng)、測(cè)試)進(jìn)行采樣,然后過(guò)濾掉那些在沙箱環(huán)境中測(cè)試失敗的響應(yīng)。然后,為每個(gè)指令隨機(jī)選擇一個(gè)驗(yàn)證通過(guò)的響應(yīng),應(yīng)用于最終的指令微調(diào)數(shù)據(jù)集。

實(shí)驗(yàn)評(píng)估

本文全面評(píng)估了SelfCodeAlign在各種編碼任務(wù)中的表現(xiàn),包括:

函數(shù)生成:給定自然語(yǔ)言描述,要求LLM生成一個(gè)自包含函數(shù),并測(cè)試函數(shù)的正確性和效率。


類生成:給定一個(gè)包含類級(jí)和方法級(jí)信息的代碼框架,要求LLM生成類及其方法。


數(shù)據(jù)科學(xué)編程:給定數(shù)據(jù)科學(xué)任務(wù)的描述和部分代碼片段,要求LLM完成代碼片段以通過(guò)相應(yīng)的測(cè)試。


文件級(jí)代碼編輯:提供文件內(nèi)容后,要求模型按照自然語(yǔ)言指令編輯程序。

函數(shù)級(jí)代碼生成

公平起見(jiàn),比較對(duì)象為類似規(guī)模的最先進(jìn)的開(kāi)源模型,基準(zhǔn)測(cè)試選擇LiveCodeBench。

LiveCodeBench是無(wú)污染評(píng)估的基準(zhǔn),包含2023年5月至2024年2月期間的400項(xiàng)最新Python算法挑戰(zhàn)。這些任務(wù)來(lái)自Codeforce和LeetCode等網(wǎng)站,每個(gè)網(wǎng)站平均有20多個(gè)測(cè)試用例。

圖片

上表報(bào)告了在3個(gè)特定開(kāi)始日期之后創(chuàng)建的問(wèn)題的測(cè)試結(jié)果(pass@1)。SelfCodeAlign-CQ-7B的性能始終優(yōu)于大多數(shù)基線模型。

此外,將開(kāi)始日期向前移動(dòng)對(duì)SelfCodeAlign-CQ-7B的影響很小,這表明模型不太可能受到污染。

類級(jí)代碼生成

這里使用ClassEval評(píng)估類級(jí)代碼生成的能力,ClassEval是100個(gè)類級(jí)Python代碼生成任務(wù)的集合,涵蓋100個(gè)類和410個(gè)方法,平均每個(gè)類33個(gè)測(cè)試,每個(gè)方法有8個(gè)測(cè)試。

作者將最大上下文大小設(shè)置為2048個(gè)token,測(cè)試了三種生成策略中每個(gè)模型的最佳類級(jí)pass@1(以及相應(yīng)的方法級(jí)pass@1):

1. 整體生成:在給定類框架的情況下生成整個(gè)類;

2. 增量生成:將早期生成的方法放在提示符中來(lái)迭代生成類方法;

3. 組合生成:獨(dú)立生成每個(gè)類方法,不查看其他方法。

圖片

上表中的類級(jí)pass@1需要同時(shí)生成正確的類和方法,而方法級(jí)pass@1僅檢查生成的方法是否能通過(guò)方法級(jí)測(cè)試。

上表的結(jié)果顯示,就類級(jí)性能而言,SelfCodeAlign-CQ-7B是表現(xiàn)最好的,不論是相比于開(kāi)源指令微調(diào)模型,還是使用未知或?qū)S兄噶钗⒄{(diào)數(shù)據(jù)的模型。

數(shù)據(jù)科學(xué)

DS-1000包含7個(gè)流行的Python數(shù)據(jù)科學(xué)庫(kù)中1000個(gè)現(xiàn)實(shí)數(shù)據(jù)科學(xué)挑戰(zhàn)。在這個(gè)基準(zhǔn)測(cè)試中,模型必須完成部分代碼片段才能解決問(wèn)題。

圖片

上表顯示,盡管SelfCodeAlign-CQ-7B只使用了有限的數(shù)據(jù)科學(xué)代碼進(jìn)行訓(xùn)練,但在與一眾模型的比較中仍然表現(xiàn)出色。

代碼編輯

代碼編輯任務(wù)選用CanItEdit作為基準(zhǔn)測(cè)試,該基準(zhǔn)測(cè)試由三種類型的210個(gè)代碼編輯任務(wù)(每種類型70個(gè)任務(wù))組成:糾正(修復(fù)錯(cuò)誤)、自適應(yīng)(添加新功能)和完善(改進(jìn)現(xiàn)有功能)。

對(duì)于每個(gè)任務(wù),模型需要以原始代碼片段和描述所需代碼更改的自然語(yǔ)言指令作為輸入,生成滿足指令的代碼片段。遵循原始基準(zhǔn)測(cè)試中的設(shè)置,在0.2的溫度下為每個(gè)任務(wù)進(jìn)行20次測(cè)試。

圖片

上表報(bào)告了每種類型的pass@1以及所有任務(wù)的平均成績(jī)。盡管沒(méi)有專門針對(duì)代碼編輯進(jìn)行調(diào)優(yōu),但SelfCodeAlign-CQ-7B在CanItEdit上表現(xiàn)出強(qiáng)大的性能,實(shí)現(xiàn)了39.0%的pass@1,優(yōu)于除CodeQwen1.5-Chat以外的所有模型。

責(zé)任編輯:張燕妮 來(lái)源: 新智元
相關(guān)推薦

2025-01-08 09:00:00

訓(xùn)練數(shù)據(jù)研究

2023-05-31 16:15:51

模型圖像

2024-07-31 15:38:00

2025-01-22 15:21:00

2024-11-26 13:40:00

2025-01-20 13:08:25

2024-08-19 14:05:00

2023-05-19 13:34:02

2024-09-06 13:00:29

2018-10-09 14:00:41

SQL深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2024-08-14 14:30:00

AI訓(xùn)練

2024-04-07 00:45:00

開(kāi)源模型

2024-12-30 15:15:07

2024-12-02 08:20:00

2025-04-23 09:10:00

AI系統(tǒng)模型

2024-03-25 08:30:00

AI數(shù)據(jù)

2023-08-14 08:37:54

2024-05-17 17:25:44

2022-12-12 11:31:39

數(shù)據(jù)學(xué)習(xí)

2024-05-21 12:23:17

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)