TellWorldAI 世界档案
问档案English

首页›动态›发布

发布生成式 AI 普及

BigCode 发布开放代码模型 StarCoder

2023 年 5 月 4 日,BigCode 项目发布开放许可的代码模型 StarCoder 与 StarCoderBase,参数量约 155 亿,训练数据来自 GitHub。

背景

代码模型是一类主要用源代码训练的语言模型,能补全函数、写测试、帮着排查报错。训练这样一个模型需要极大规模的代码语料,而这在建模之外还带来两个实际问题:哪些代码可以合法使用,以及代码仓库里混进去的个人信息该怎么处理。由 Hugging Face 与 ServiceNow 主导的 BigCode 项目同时处理了这两件事,并把模型公开释放出来,而不是留在内部[1]。

发布了什么

2023 年 5 月 4 日,BigCode 发布 StarCoder 与 StarCoderBase 两个模型[1]。两者参数量约为 155 亿,上下文窗口为 8000 个 token,这意味着提示里可以塞进相当长的一段代码,同时仍给模型的回答留出空间[2]。这一系列模型的上下文长度被描述为超过 8000 个 token[3]。

怎么训练的

StarCoderBase 用约 1 万亿个 token 训练,语料取自 The Stack 中 80 多种编程语言[1]。底层数据来自宽松许可的 GitHub 内容,除了普通源文件之外,还包括 Git 提交记录、GitHub 议题(issue)和 Jupyter 笔记本[3]。提交记录和议题是对话式的文本,笔记本则把代码、说明文字和保存下来的输出混在一起,这样的搭配让模型不只停留在「补全一个孤立函数」上。

StarCoder 本身是 StarCoderBase 在 350 亿个 Python token 上微调得到的版本[3]。把基础模型和微调版本分开,等于在通用的底座之外,再给一门在训练数据和真实请求中都占大头的语言做专门加强。

评测结果

两个模型在 HumanEval 上做了评测。这个基准要求模型根据函数的文档字符串写出实现,再用单元测试检验答案是否正确。StarCoder 在 HumanEval 上的 pass@1 为 33.6%[1]。pass@1 只统计第一次尝试,因此这个数字反映的是模型首答的正确率,而不是多次尝试后能否做对。改用技术助手式的提示(technical-assistant prompt),也就是把请求包装成向一个编程助手提问的形式,分数升到 40.8%[1]。两个数字之间的差距说明,基准成绩不只取决于模型本身,也取决于它是被怎么问的。

许可与数据处理

StarCoder 与 StarCoderBase 以 BigCode OpenRAIL-M v1 许可发布,项目同时设置了退出机制(opt-out),代码作者可以申请把自己的代码排除在外[1]。训练数据还做了个人信息(PII)抹除[1],发布时附带了改进后的 PII 抹除流程,以及一个新的归因追踪工具(attribution tracing)[3]。归因追踪对代码模型尤其要紧:生成的代码如果与训练集中的某一段高度接近,就会牵出署名和许可的问题,而一般的文本生成很少面对这类追问。

为什么重要

这次发布把一个 155 亿参数的代码模型以明确命名的许可交到公众手里,同时交代了训练数据里有什么、做过哪些清理[1][2][3]。能力、许可条款、作者退出通道和追溯输出来源的手段放在一起,使这个项目成为此后讨论「代码模型应当怎样构建和发布」时经常被引用的一个例子。HumanEval 上的成绩也给后续工作提供了一个可以对照的具体数字[1]。

来源

  1. 1
  2. 2
  3. 3

引用本页: BigCode 发布开放代码模型 StarCoder. TellWorld, https://www.tellworld.net/zh/news/starcoder-2023. 更新于 2026-11-08

相关动态