StarCoder2 與 The Stack v2 發布
BigCode 已發布 StarCoder2,這是一個針對程式碼的開源大型語言模型(LLM)家族,同時推出 The Stack v2,一個大幅擴充的程式碼預訓練資料集。此發布為社群提供透明訓練的模型以及底層資料與處理程式碼,以推動開源程式碼智慧。
StarCoder2 模型家族與規格
StarCoder2 提供三種參數規模,每種規模皆在 The Stack v2 的不同子集上訓練,並由不同合作夥伴支援:
- StarCoder2-3B:由 ServiceNow 訓練,使用超過 3 兆個 token,涵蓋 17 種程式語言。
- StarCoder2-7B:由 Hugging Face 訓練,使用超過 3.5 兆個 token,涵蓋 17 種程式語言。
- StarCoder2-15B:由 NVIDIA 使用 NVIDIA NeMo 於 NVIDIA 加速基礎設施上訓練。此旗艦模型使用超過 4 兆個 token,涵蓋超過 600 種程式語言。
家族中的所有模型皆共享相同的架構,具備 Grouped Query Attention(GQA)、16,384 token 的上下文視窗,以及 4,096 token 的滑動視窗注意力。它們皆使用 Fill-in-the-Middle(FIM)目標進行訓練,以提升程式碼補全能力。
效能基準
StarCoder2-15B 被定位為同尺寸類別中最佳的模型,在多項評估上可匹配 33B 以上參數模型的效能。此外,StarCoder2-3B 的效能與前一代 StarCoder1-15B 相當。
The Stack v2 資料集
The Stack v2 是目前最大規模的開源程式碼資料集,專為 LLM 預訓練而設計,來源於 Software Heritage 存檔——一項由 Inria 與 UNESCO 推動的非營利計畫,旨在保存所有公開可取得的軟體原始碼。
相較於前一版,The Stack v2 在規模與品質上都有顯著提升:
| 指標 | The Stack v1 | The Stack v2 |
|---|---|---|
| 完整大小 | 6.4TB | 67.5TB |
| 去重後大小 | 2.9TB | 32.1TB |
| 訓練資料集 | ~200B tokens | ~900B tokens |
v2 的技術改進包括加強的語言與授權檢測流程、更佳的過濾啟發式規則,以及以倉庫為單位分組資料的結構。後者使模型能以倉庫層級的上下文進行訓練,提升對整個專案相依性的理解。
治理與可及性
StarCoder2 及其相關資料集皆依據 BigCode OpenRAIL-M v1 授權協議發布。為確保透明度與資料治理,BigCode 提供了多項工具:
- StarCoder2 Search:一個用於在預訓練資料集中搜尋程式碼的全文檢索工具。
- StarCoder2 Membership Test:一個高速工具,用於檢查特定程式碼是否出現在預訓練資料中。
BigCode 是由 Hugging Face 與 ServiceNow 領導的科學合作計畫,致力於負責任地開發開源程式碼 LLM。
Sources
- OriginalStarCoder2 and The Stack v2