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 数据集。

Sources