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