SelfCodeAlign:用於程式碼生成的自我對齊
Author
Venue
NeurIPS 2024
Abstract
指令微調是一種監督式微調方法,能顯著提升大型語言模型(LLMs)遵循人類指令的能力。 我們提出 SelfCodeAlign,這是首個完全透明且開放的管道,可讓程式碼大型語言模型(LLMs)在無需大量人工標註或知識蒸餾的情況下進行自我對齊。SelfCodeAlign 在整個資料生成過程中,始終採用相同的基礎模型進行推論。它首先從高品質的種子程式碼片段中提取多樣化的編碼概念以生成新任務,接著針對每個任務採樣多個回應,將其與測試案例配對,並在沙盒環境中進行驗證。 最後,選取通過驗證的範例進行指令微調。在主要實驗中,我們將 SelfCodeAlign 與 CodeQwen1.5-7B 結合,生成包含 74,000 組指令-回應對的資料集。以此資料集進行微調後,所獲得的模型在 HumanEval+ 上的 pass@1 達 67.1%,儘管模型規模僅為 CodeLlama-70B-Instruct 的十分之一,表現仍更勝一籌。 在所有基準測試中,此微調模型始終優於使用 OctoPack 訓練的原始版本——該方法曾是無需人類標註或知識蒸餾的指令微調領域中,最先進的技術。此外,我們證明 SelfCodeAlign 適用於從 30 億到 330 億詞彙量的各種大型語言模型(LLMs),且基礎模型能透過與自身資料分佈的對齊而獲得更大效益。 我們進一步驗證了管道中各組件的有效性,結果顯示 SelfCodeAlign 的表現優於直接從 GPT-4o 進行的蒸餾,以及基於 GPT-3.5 的領先蒸餾方法(如 OSS-Instruct 和 Evol-Instruct)。 SelfCodeAlign 亦促成了 StarCoder2-Instruct 的誕生,這是首個完全透明、採用開放授權且具備自我對齊能力的程式碼大型語言模型,並達到了最先進的編碼表現。
