成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微軟原WizardLM團隊:代碼大模型WarriorCoder,性能新SOTA

人工智能 新聞
一些方法設計了各種數據飛輪來生成 instruction 數據,如 Self-Instruct,Evol-Instruct 等。這些方法通過多種數據增強手段來構建 instruction 數據,在這些數據上進行訓練可以有效提升模型的代碼生成能力。

  • 論文標題:WarriorCoder: Learning from Expert Battles to Augment Code Large Language Models
  • 論文鏈接:https://arxiv.org/pdf/2412.17395

01 背景

近年來,大型語言模型(LLMs)在代碼相關的任務上展現了驚人的表現,各種代碼大模型層出不窮。這些成功的案例表明,在大規模代碼數據上進行預訓練可以顯著提升模型的核心編程能力。除了預訓練外,一些通過 instruction 數據對 LLM 進行 post-training 的方法,也使得模型在對指令的理解和回答的質量等方面取得了顯著提高。然而,post-training 的效果在很大程度上依賴于可用的高質量數據,但是數據的收集和注釋存在著不小的挑戰。

為了解決上述挑戰,一些方法設計了各種數據飛輪來生成 instruction 數據,如 Self-Instruct,Evol-Instruct 等。這些方法通過多種數據增強手段來構建 instruction 數據,在這些數據上進行訓練可以有效提升模型的代碼生成能力。然而,如圖 1 所示,這些方法仍然依賴于對現存數據集進行擴展并需要調用私有 LLM(如 GPT-3.5、GPT-4 等),使得數據收集成本較高。此外,有限的數據來源和用于注釋的 LLM 也限制了數據的多樣性,并繼承了有限的私有 LLM 本身固有的系統偏見。

圖 1

本文提出了 WarriorCoder,一種全新的代碼大模型的數據飛輪訓練范式,模型通過學習專家對抗的方式來集成各個代碼專家大模型的優點。如圖 1 所示,各個代碼專家大模型兩兩對戰,攻擊者在其自身的專業領域內挑戰對手,目標模型則向這些對戰中的勝者學習。與之前的方法不同,之前的方法大多都依賴現有開源數據集,將這些數據集做為種子數據去合成和增強,而 warriorCoder 是從 0 到 1 的生成數據不需要種子數據,并且該方法可以融合多個代碼專家大模型的優勢,而不是僅僅蒸餾個別模型的優勢。此外,本文提出的方法消除了在數據收集過程中對人工參與和私有 LLM 的依賴,可以以極低成本收集高質量、多樣化的訓練數據。實驗結果表明,warriorCoder 不僅僅是在代碼生成任務中達到了當前的 SOTA,還在 code reasoning 和 libraries using 等 benchmark 上也取得了卓越的成績,可謂是代碼六邊形戰士。

02 方法

本文構建了一個代碼大模型的競技場。在這里,最先進的代碼專家大模型相互對抗,每個模型利用其已經掌握的知識挑戰其他模型,而其余模型則擔任裁判評估對抗結果。目標模型隨后從這些對抗中的勝者學習,逐步整合所有競爭者的優勢。本文將參賽者(代碼專家大模型)視為一個組,通過組內相對優勢答案來優化模型,這一點與 GRPO 有著異曲同工之妙。

圖 2

2.1 Competitors Setting

參賽者的能力決定了 WarriorCoder 的最終表現。理論上,從更大、更強的參賽者池中獲得的訓練數據多樣性更強、質量更高,最終訓練出來的模型的性能也就越好。在每一輪競技場中,只有一對代碼專家被選為競爭者,其他的則作為裁判。本文從 BigCodeBench 排行榜中選取了五個 75B 以內的先進大模型 ——Athene-V2-Chat、DeepSeek-Coder-V2-Lite-Instruct、Llama-3.3-70B-Instruct、Qwen2.5-72B-Instruct 和 QwQ-32B-Preview。值得注意的是,這五個大模型均為開源大模型,WarriorCoder 僅基于這些開源大模型的對抗就得到了優異的性能。當然,WarriorCoder 也能夠從強大的私有大模型中學習。

2.2 Instruction Mining from Scratch

對于一對對手 ——A 和 B(其中 A 為攻擊者,B 為防守者),對抗的第一步是在 A 擅長的領域挑戰 B,這就需要了解 A 在訓練過程中學到了什么。然而,幾乎當前所有的開源大模型都未公布其核心訓練數據,這使得攻擊者擅長的知識變得極為困難。受 Magpie 的啟發,本文設計了一種基于對話補全的方式來挖掘大模型已掌握的能力。以 Qwen2.5 為例,如果要其生成一個快速排序算法,則完整的 prompt 格式如圖 3 所示。Prompt 應包括 system content、user content 以及與格式有關的特殊 token,如 “<|im_start|>”、“<|im_end|>” 等。

圖 3

而如果僅將前綴部分(本身無任何具體意義,如圖 4 所示)輸入模型,利用模型的補全能力就可以得到用戶指令(user content)。

圖 4

通過這種方式,在不同的生成參數配置下(例如不同的溫度值和 top-p 值)就可以收集到模型已經學習到的 instruction 數據。與傳統的數據合成不同,本文收集的 instruction 數據不是由模型合成的,而是直接從模型的分布中進行采樣得到的,這避免了模式過擬合、輸出分布偏移等問題。然而,這些指令可能會重復、有歧義、不清晰或過于簡單。為了解決這些問題,我們對數據進行去重,并采用裁判模型來評估其難度。本文將難度分為四個等級:Excellent、Good、Average、Poor。最終僅使用 Excellent 和 Good 兩個等級的指令,并使用 KcenterGreedy 算法對 instruction 數據進行進一步的壓縮。

2.3 Win-Loss Decision

挑戰者和防御者都要根據 instruction 數據生成回答,并由裁判(剩余的模型)投票決定輸贏:

然而,僅依賴于 \textit {局部得分} 來選擇獲勝者可能會帶來偶然性問題。由于投票會受到隨機性或評審者偏見等因素的影響,在某些指令下較弱的模型可能會比較強的模型獲得更多的投票,即便其回答并沒有真正比較強的模型更好。

為了解決這一問題,本文在決策過程中同時考慮局部偶然性和全局一致性。本文引入了全局得分的概念 ——Elo 評級。它能更全面地反映模型相對表現的變化,涵蓋不同時間和多次評估中的表現。通過引入 Elo 評級,可以在評估過程中同時考慮模型在單場比賽中的局部表現和在多輪比賽中的全局表現,從而提供一個更為穩健和準確的模型綜合能力度量,這有助于降低較弱模型由于偶然的、不具代表性的投票而獲勝的風險。

最后的 response 分數由 Elo 評級和裁判投票加權得到:

每一個 response 都要和所有對手的 response 比較,因此該分數代表了當前 response 的組內相對優勢。

2.4 Final Training

本文得到的數據格式為 instruction、來自于各個參賽者的 response、各 response 對應的分數。這種數據格式可以支持多種 post-training 方法,比如 SFT、DPO、KTO 等等。本文采用 SFT,將組內分數最高的 response 作為 gold output,使得 WarriorCoder 在訓練中可以融合各個參賽者的優勢,集百家之長。

03 實驗

3.1 主要結果

表 1 顯示了 WarriorCoder 在 code generation benchmark 上的表現。與同類工作相比,WarriorCoder 在 HumanEval、HumanEval+、MBPP 和 MBPP + 上取得了 SOTA。值得注意的是,WarriorCoder 完全不需要私有大模型(如 GPT-4 等)就取得了驚艷的效果。

表 1

此外在 code reasoning benchmark 和 libraries using benchmark 上,WarriorCoder 也取得了卓越的成績。如表 2 和表 3 所示,WarriorCoder 在絕大多數指標上表現最優,甚至超越了 15B 和 34B 等更大量級的模型。這也證明了本文提出的方法具有良好的泛化性,可以讓模型從多個代碼專家大模型處獲得多種不同的能力。

表 2

表 3

3.2 數據分析

本文還對所構造的訓練數據進行了分析,從 Dependence、Diversity、Difficulty 三個角度進行研究。

Dependence

此前的工作往往會基于一些現有的代碼數據集(如)進行擴展、數據增強,而本文則是完全從零開始構造全新的數據。如圖 5 所示,作者計算了訓練數據與兩個常用代碼數據集的重疊程度(rouge 指標),絕大多數指令與 codealpaca 和 codeultrafeedback 的 ROUGE 得分低于 0.3,表明它們與現有數據集中的指令在內容上存在較大差異。值得注意的是,挖掘出的指令中沒有任何一項 ROUGE 指標超過 0.6,這進一步證明了這些指令來源于專家大模型的內部分布,而非現有訓練數據的簡單復制或擴展。因此,這些指令更新穎、具有更高的獨立性,這對于訓練尤為寶貴。

圖 5

Diversity

表 4 展示了訓練數據的構成,涵蓋了 7 種不同的 code 任務,這也是為什么 WarriorCoder 能夠在多個 benchmark 上表現優異的原因。值得注意的是 code reasoning 僅占比 2.9% 就使得 WarriorCoder 在相關 benchmark 上具有驚人表現,這說明了本文提出的方法具有很大潛力,如果針對模型的弱點定向挖掘數據可以讓模型能力更上一層樓。此外,圖 6 的熱力圖也展示了參賽者對抗結果,即便是再強的模型也終究有表現不好的時候,而 WarriorCoder 僅向當前指令下分數最高的 winner response 學習。

表 4

圖 6

Difficulty

圖 7 展示了不同模型產生的指令的難度比例。大多數指令的難度處于 good 等級,得分在 6 到 8 之間。被評為 excellent(得分 9-10)的指令僅占數據集的一小部分,表明高度復雜或高級的任務相對較為稀少。作者將得分低于 6 的指令被排除在訓練集之外,因為它們往往要么過于簡單,要么過于模糊,這樣的指令會對訓練階段有害,甚至可能削弱模型的性能和泛化能力。

圖 7

04 相關資源

雖然作者當前并未開源模型,但是我們發現已經有人復現了作者的工作,地址如下:

項目鏈接:https://huggingface.co/HuggingMicah/warriorcoder_reproduce

責任編輯:張燕妮 來源: 機器之心
相關推薦

2023-07-27 13:58:19

2024-03-25 12:40:19

訓練模型

2024-04-11 07:10:59

大語言模型AI人工智能

2024-08-19 08:45:00

開源模型

2023-09-27 14:04:42

2021-08-30 15:41:23

代碼開源微軟

2025-05-27 15:35:02

大模型技術AI

2024-04-02 09:17:50

AI數據開源

2024-04-23 13:37:00

數據訓練

2024-11-25 07:10:00

NumPro視頻大模型AI

2024-06-04 14:09:00

2025-01-22 10:15:00

2023-05-11 15:24:41

代碼模型

2025-04-16 09:20:00

虛擬模型數字

2023-11-20 22:02:54

開源模型

2025-06-17 09:07:24

2012-04-13 16:10:02

微軟

2025-06-18 09:06:00

2025-01-26 11:00:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 自拍偷拍一区二区三区 | 黄色亚洲网站 | 日本三级在线 | 中文字幕精品视频 | 黄色一级大片在线观看 | 国产在线观看一区二区三区 | 久久久激情 | 欧美日韩久久 | 午夜日韩视频 | 日本一区二区三区在线观看 | 日韩精品在线播放 | 波多野结衣电影一区 | 古装人性做爰av网站 | 99精品视频在线观看免费播放 | 一区二区三区在线 | 欧美精品久久久久久久久久 | 一区二区三区四区电影 | 亚洲国产一区二区三区在线观看 | 久久精品无码一区二区三区 | 欧美成人一级视频 | 久久成人国产精品 | 自拍偷拍3p | 久久高清 | 男人天堂国产 | 免费久久网 | 色婷婷国产精品综合在线观看 | 亚洲国产精品久久 | 国产一级一级毛片 | 91在线精品秘密一区二区 | 久久久久亚洲 | 91动漫在线观看 | 国产精品波多野结衣 | 亚洲精品一区二区另类图片 | 欧美日韩亚洲一区 | 成人免费看电影 | 日韩一区二区av | 色爱综合网 | 欧美一区日韩一区 | 欧美福利影院 | 亚洲高清视频在线 | 狠狠干五月天 |