StarCoder2-15B-Instruct-v0.1 發行說明 / 新功能

Hugging Face 已發布 StarCoder2-15B-Instruct-v0.1,這是首個使用全透明且寬鬆管線完全自我對齊的程式碼大型語言模型(LLM)。此模型證明,高效能的程式碼生成可以在不依賴人工標註資料或從 GPT-4 等專有教師模型蒸餾的情況下實現。

效能基準

StarCoder2-15B-Instruct-v0.1 獲得 72.6 的 HumanEval 分數,超過 CodeLlama-70B-Instruct 的 72.0 分。根據在 EvalPlus 基準上的評估,它是同規模中表現最佳的寬鬆 LLM,優於 Grok-1、Command-R+、DBRX,且與 Snowflake Arctic 480B 與 Mixtral-8x22B-Instruct 相當接近。

在 LiveCodeBench(使用 2023 年 9 月 1 日之後創建的程式題目)上的進一步評估顯示,StarCoder2-15B-Instruct-v0.1 持續優於 OpenCodeInterpreter-SC2-15B,後者是以從 GPT-4 蒸餾的資料訓練的模型。這暗示 LLM 可能從自身分佈內的資料學習得更有效,而非來自教師模型提供的偏移分佈。

自我對齊管線

StarCoder2-15B-Instruct-v0.1 的訓練管線包含三個主要階段:種子收集、指令生成與回應驗證。

1. 收集種子程式碼片段

為確保多樣化的程式設計原則,團隊從 The Stack v1 中抽取帶有 docstring 的 Python 函式。最終得到的 25 萬 Python 函式資料集是從最初的 500 萬函式中,透過以下過濾條件取得的:

  • Type Checking: 使用 Pyright 啟發式型別檢查器移除具有靜態錯誤的函式。
  • Decontamination: 使用精確字串匹配將基準項目從訓練集移除。
  • Docstring Quality: 由 StarCoder2-15B 擔任評審,過濾掉文件品質不佳的函式。
  • Near-Deduplication: 使用 MinHash 與局部敏感雜湊(Jaccard 相似度閾值 0.5)移除重複項目。

2. Self-OSS-Instruct

透過使用 16 個 few-shot 範例的情境內學習,基礎的 StarCoder2-15B 模型自行生成指令,採用兩步驟流程:

  • Concepts Extraction: 模型在種子函式中辨識出基礎程式設計原則(例如模式匹配、資料型別轉換)。
  • Instruction Generation: 模型根據這些辨識出的概念生成程式任務。

此流程產生了 23.8 萬條指令。

3. 回應自我驗證

StarCoder2-15B 並未從教師模型蒸餾回應,而是被指示同時產生回應與相應的測試以進行自我驗證。

對於每條指令,模型產生 10 個樣本。這些樣本在沙盒環境中執行,僅保留通過執行測試的樣本。從 240 萬個產生的回應中,有 50 萬通過了執行測試。經過去重後,最終形成包含 5 萬條指令的 SFT(監督式微調)資料集,每條指令皆配有隨機通過測試的回應。

透明度與開源資源

與許多缺乏訓練資料與管線透明度的寬鬆模型不同,StarCoder2-15B-Instruct-v0.1 完全公開透明。Hugging Face 已開源以下資源:

Sources