StarCoder 發行說明
Hugging Face 與 ServiceNow 的 BigCode 合作已發布 StarCoder 與 StarCoderBase,這兩款用於程式碼的 大型語言模型 (LLM)。這些 15B 參數的模型以 1 兆個寬鬆授權的 token 訓練,提供高效能的開放式替代方案,對抗如 OpenAI 的 code-cushman-001 等封閉模型。
模型架構與訓練
StarCoderBase 是基礎模型,使用包含 80 多種程式語言、Git 提交、GitHub 問題與 Jupyter Notebook 的資料集進行訓練。StarCoder 是 StarCoderBase 的專門化版本,進一步在 35B Python token 上微調。
- 參數數量: 約 15B。
- 訓練量: 1 兆個 token。
- 上下文長度: 超過 8,000 個 token,超出當時其他開放式程式碼 LLM 的輸入容量。
效能基準測試
StarCoder 與 StarCoderBase 在多項基準測試中展現出相較於各種開放與封閉模型的卓越效能。
Python 能力(HumanEval 與 MBPP)
在 HumanEval 基準測試中,該測試根據函式簽名與 docstring 進行函式完成,StarCoder 與 StarCoderBase 超過了 PaLM、LaMDA 與 LLaMA 等模型。使用特定提示以繞過模型產生佔位註解的傾向(例如 # Solution here),"StarCoder-Prompted" 版本在 HumanEval 上取得 40.8% 的開放模型最佳成績。
| 模型 | HumanEval | MBPP |
|---|---|---|
| LLaMA-65B | 23.7 | 37.7 |
| PaLM-540B | 26.2 | 36.8 |
| StarCoderBase | 30.4 | 49.0 |
| code-cushman-001 | 33.5 | 45.9 |
| StarCoder | 33.6 | 52.7 |
| StarCoder-Prompted | 40.8 | 49.5 |
多語言與資料科學能力
StarCoder 在 MultiPL-E 基準測試中於多種語言上匹配或超越 code-cushman-001。此外,StarCoder 在 DS-1000 資料科學基準測試中超過所有其他開放式模型。
技術能力與應用
除了簡單的程式碼補全,StarCoder 模型還支援多種進階開發者工作流程:
- 技術協助: 透過使用技術助理提示,模型能回應程式相關請求並充當技術助理。
- 程式碼修改: 模型可根據自然語言指示修改現有程式碼。
- 程式碼說明: 模型能以自然語言說明程式碼片段。
- 自動完成: 模型提供標準的程式碼自動補全功能。
資料治理與安全
StarCoder 以「The Stack 1.2」的子集進行訓練,該子集僅包含寬鬆授權的程式碼。BigCode 專案實施了多項安全與治理措施:
- 個人資訊刪除: 與 Toloka 合作,將姓名、密碼、電子郵件地址等個人可識別資訊 (PII) 從訓練資料中移除。
- 退出機制: 程式碼貢獻者可透過專屬的退出流程將其資料從資料集中移除。
- 歸屬工具: 提供程式碼歸屬工具,以在訓練資料集中尋找產生的程式碼。
- 授權條款: 模型以改進版的 OpenRAIL 授權釋出,簡化企業產品的整合。
生態系統與可用資源
BigCode 同時釋出了完整的工具套件與模型權重:
- 模型: StarCoder(Python 微調版)、StarCoderBase(多語言版)、StarEncoder(編碼器模型)與 StarPii(PII 偵測器)。
- 工具: VSCode 擴充套件、StarCoder Chat、線上玩耍平台與專屬程式碼編輯器。
- 資料集: 完整的前處理訓練資料集,以及用於訓練與評估 PII 移除的新 PII 資料集。