StarCoder 发布说明
Hugging Face 与 ServiceNow 的 BigCode 合作发布了 StarCoder 和 StarCoderBase,两款用于代码的 大语言模型(LLM)。这两个 15B 参数的模型在 1 万亿个许可宽松的数据令牌上进行训练,提供了高性能、开放的替代方案,以对抗诸如 OpenAI 的 code-cushman-001 等闭源模型。
模型架构与训练
StarCoderBase 是基础模型,训练数据集包括 80 多种编程语言、Git 提交、GitHub issue 和 Jupyter notebook。StarCoder 是在 StarCoderBase 基础上进一步微调的专门版本,使用了 35B 的 Python 令牌。
关键技术规格包括:
- **参数数量:**约 150 亿。
- **训练规模:**1 万亿个令牌。
- **上下文长度:**超过 8,000 个令牌,超过了发布时其他开放代码 LLM 的输入容量。
性能基准
StarCoder 和 StarCoderBase 在多个基准上相较于各种开放和闭源模型表现出更优的性能。
Python 能力(HumanEval 与 MBPP)
在 HumanEval 基准(基于函数签名和文档字符串进行函数完成测试)上,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 系列模型还支持多种高级开发者工作流:
- **技术助理:**通过使用 Tech Assistant Prompt,模型可以回答编程相关请求并充当技术助理。
- **代码修改:**模型能够根据自然语言指令修改现有代码。
- **代码解释:**模型可以用自然语言解释代码片段。
- **自动完成:**模型提供标准的代码自动补全功能。
数据治理与安全性
StarCoder 使用了 "The Stack 1.2" 的子集进行训练,该子集仅包含许可宽松的代码。BigCode 项目实施了多项安全与治理措施:
- **PII 删除:**与 Toloka 合作,删除了训练数据中的个人身份信息(PII),如姓名、密码和电子邮件地址。
- **退出机制:**代码贡献者可通过专门的退出流程将其代码从数据集中移除。
- **归属工具:**提供代码归属工具,以在训练数据集中查找生成的代码。
- **许可协议:**模型在改进版 OpenRAIL 许可证下发布,以简化企业产品的集成。
生态系统与可用资源
BigCode 随模型权重一起发布了一整套工具:
- **模型:**StarCoder(Python 微调版)、StarCoderBase(多语言版)、StarEncoder(编码器模型)和 StarPii(PII 检测器)。
- **工具:**VSCode 扩展、StarCoder Chat、交互式 Playground 和专用代码编辑器。
- **数据集:**完整的预处理训练数据集以及用于训练和评估 PII 删除的新 PII 数据集。