跳到正文
原文
Hugging Face Blog·· 2023-05-04精选AI 评分71

BigCode 发布 StarCoder:面向代码的开源 LLM,HumanEval 达 40.8%

StarCoder: A State-of-the-Art LLM for Code

AI 导读

BigCode(Hugging Face 与 ServiceNow 联合)发布 StarCoder 和 StarCoderBase 代码大模型,基于 GitHub 宽松许可数据训练,覆盖 80+ 编程语言,约 15B 参数、训练 1 万亿 token。

推荐理由

StarCoder 是 BigCode 推出的开源代码大模型,约 15B 参数、上下文 8k,在 HumanEval 上以 40.8% 超过 CodeGen-16B-Mono 和 OpenAI code-cushman-001,并公开权重与数据集。

正文 · AI 翻译

推出 StarCoder

StarCoder 和 StarCoderBase 是用于代码的大型语言模型(Code LLMs),基于 GitHub 上许可宽松的数据训练,涵盖 80 多种编程语言、Git 提交、GitHub 问题和 Jupyter 笔记本。与 LLaMA 类似,我们训练了一个约 15B 参数的模型,使用了 1 万亿个 token。我们对 StarCoderBase 模型针对 35B 个 Python token 进行了微调,从而得到了一个我们称之为 StarCoder 的新模型。

我们发现 StarCoderBase 在流行的编程基准测试中优于现有的开源代码 LLMs,并且能够匹敌或超越一些闭源模型,如 OpenAI 的 code-cushman-001(最初为 GitHub Copilot 早期版本提供支持的 Codex 模型)。凭借超过 8,000 个 token 的上下文长度,StarCoder 模型能处理的输入量超过任何其他开源 LLM,从而能够实现一系列广泛的有趣应用。例如,通过用一系列对话提示 StarCoder 模型,我们使其能够充当技术助手。此外,这些模型还可用于代码自动补全、通过指令修改代码,以及用自然语言解释代码片段。 我们采取了多项重要措施,朝着安全开放模型发布迈进,包括改进的 PII 脱敏流程、一种新颖的归属追踪工具,并在改进版 OpenRAIL 许可证下公开发布 StarCoder。更新后的许可证简化了公司将模型集成到其产品中的流程。我们相信,凭借其强大的性能,StarCoder 模型将成为社区使用并适配其用例和产品的坚实基础。

评估

我们对 StarCoder 和几个类似模型以及各种基准测试进行了全面评估。一个流行的 Python 基准测试是 HumanEval,它测试模型能否根据函数签名和文档字符串补全函数。我们发现,StarCoder 和 StarCoderBase 在性能上都超过了最大的模型,包括 PaLM、LaMDA 和 LLaMA,尽管它们的规模要小得多。它们也优于 CodeGen-16B-Mono 和 OpenAI 的 code-cushman-001(12B)模型。我们还注意到,模型的一个失败案例是它会生成 # Solution here 代码,这可能是因为这类代码通常是练习题的一部分。为了迫使模型生成实际的解决方案,我们添加了提示 <filename>solutions/solution_1.py\n# Here is the correct implementation of the code exercise。这显著地将 StarCoder 的 HumanEval 分数从 34% 提高到 40% 以上,为开源模型树立了新的最先进成果。我们也对 CodeGen 和 StarCoderBase 尝试了这个提示,但没有观察到太大差异。

模型 HumanEval MBPP
LLaMA-7B 10.5 17.7
LaMDA-137B 14.0 14.8
LLaMA-13B 15.8 22.0
CodeGen-16B-Multi 18.3 20.9
LLaMA-33B 21.7 30.2
CodeGeeX 22.9 24.4
LLaMA-65B 23.7 37.7
PaLM-540B 26.2 36.8
CodeGen-16B-Mono 29.3 35.3
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 上对其进行了评估,该基准将 HumanEval 扩展到许多其他语言。我们观察到 StarCoder 在许多语言上与 code-cushman-001 持平或表现更优。在一个名为 DS-1000 的数据科学基准测试中,它明显击败了它以及所有其他开放获取模型。但让我们看看除了代码补全之外,这个模型还能做什么!

技术助手

经过详尽的评估,我们发现 StarCoder 在编写代码方面非常出色。但我们还想测试它是否能作为技术助手使用,毕竟它在大量的文档和 GitHub 问题数据上进行了训练。受 Anthropic 的 HHH 提示启发,我们构建了一个技术助手提示。令人惊讶的是,仅凭这个提示,模型就能够扮演技术助手角色,回答与编程相关的问题!

ChatExamples

训练数据

该模型是在 The Stack 1.2 的一个子集上训练的。该数据集仅包含许可宽松的代码,并包含退出流程,使代码贡献者可以从数据集中移除其数据(参见“我是否在 The Stack 中”)。我们与 Toloka 合作,从训练数据中移除了姓名、密码和电子邮件地址等个人身份信息。

关于 BigCode

BigCode 是由 HF Mirror 和 ServiceNow 共同领导的开放科学合作项目,致力于负责任地开发用于代码的大型语言模型。

其他发布

随模型一起,我们还发布了一系列资源和演示:

  • 模型权重,包括采用 OpenRAIL 许可证的中间检查点
  • 数据预处理和训练的所有代码,采用 Apache 2.0 许可证
  • 一套全面的代码模型评估工具
  • 一个用于训练和评估 PII 移除的新 PII 数据集
  • 用于训练的完全预处理数据集
  • 一个用于在数据集中查找生成代码的代码归属工具

链接

模型

  • 论文:关于 StarCoder 的技术报告。
  • GitHub:关于使用或微调 StarCoder 你需要了解的一切。
  • StarCoder:在 Python 上进一步训练的 StarCoderBase。
  • StarCoderBase:在 The Stack 中的 80 多种语言上训练。
  • StarEncoder:在 TheStack 上训练的编码器模型。
  • StarPii:基于 StarEncoder 的 PII 检测器。

工具与演示

数据与治理

你可以在 hf-mirror.com/bigcode 找到所有资源和链接!

来源:Hugging Face Blog · hf-mirror.com