StarCoder LLM for code

介绍StarCoder

 

StarCoder 和 StarCoderBase 是针对代码的大型语言模型(代码 LLM),根据来自 GitHub 的许可数据进行训练,包括来自 80 多种编程语言、Git 提交、GitHub 问题和 Jupyter 笔记本。与 LLaMA 类似,我们为 1 万亿个代币训练了一个约 15B 的参数模型。我们针对 35B Python 令牌微调了 StarCoderBase 模型,产生了一个我们称之为 StarCoder 的新模型。

我们发现 StarCoderBase 在流行的编程基准测试中优于现有的开放代码 LLM,并且匹配或超过封闭模型,例如code-cushman-001来自 OpenAI(为 GitHub Copilot 的早期版本提供支持的原始 Codex 模型)。凭借超过 8,000 个标记的上下文长度,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代码,可能是因为这种类型的代码通常是练习的一部分。为了强制模型生成一个实际的解决方案,我们添加了提示solutions/solution_1.py\n# Here is the correct implementation of the code exercise. 这将 StarCoder 的 HumanEval 分数从 34% 显着提高到 40% 以上,为开放模型设置了一个新的最先进的结果。我们还针对 CodeGen 和 StarCoderBase 尝试了此提示,但没有发现太大差异。

模型 人类评估 MBPP
LLaMA-7B 10.5 17.7
LaMDA-137B 14.0 14.8
LLaMA-13B 15.8 22.0
CodeGen-16B-多 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
星码库 30.4 49.0
代码-cushman-001 33.5 45.9
星码机 33.6 52.7
StarCoder 提示 40.8 49.5

StarCoder 的一个有趣方面是它是多语言的,因此我们在将 HumanEval 扩展到许多其他语言的 MultiPL-E 上对其进行了评估。我们观察到 StarCodercode-cushman-001在许多语言上都匹配或优于许多语言。在称为 DS-1000 的数据科学基准测试中,它明显击败了它以及所有其他开放访问模型。但是让我们看看除了代码完成之外模型还能做什么!

技术助理

通过详尽的评估,我们发现 StarCoder 非常擅长编写代码。但我们也想测试它是否可以用作技术助手,毕竟它接受过大量文档和 GitHub 问题的培训。受 Anthropic 的HHH 提示的启发,我们构建了一个Tech Assistant Prompt。令人惊讶的是,仅凭提示,该模型就能够充当技术助手并回答与编程相关的请求!

StarCoder LLM for code_第1张图片

训练数据

该模型是在 The Stack 1.2 的一个子集上训练的。该数据集仅包含许可代码,并包括一个选择退出过程,以便代码贡献者可以从数据集中删除他们的数据(请参阅 The Stack 中的 Am I)。我们与Toloka合作,从培训数据中删除了个人身份信息,例如姓名、密码和电子邮件地址。

关于大代码

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

附加版本

除了模型,我们还发布了资源和演示列表:

  • 模型权重,包括具有 OpenRAIL 许可证的中间检查点
  • 使用 Apache 2.0 许可证进行数据预处理和培训的所有代码
  • 代码模型的综合评估工具
  • 用于训练和评估 PII 删除的新 PII 数据集
  • 用于训练的完全预处理的数据集
  • 用于在数据集中查找生成代码的代码归属工具

链接

楷模

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

工具与演示

  • StarCoder 聊天:与 StarCoder 聊天!
  • VSCode 扩展:使用 StarCoder 编码!
  • StarCoder 游乐场:用 StarCoder 写作!
  • StarCoder 编辑器:使用 StarCoder 进行编辑!

数据与治理

  • StarCoderData : StarCoder 的预训练数据集。
  • 技术助手提示:通过此提示,您可以将 StarCoder 变成技术助手。
  • 治理卡:概述模型治理的卡片。
  • StarCoder 许可协议:该模型根据 BigCode OpenRAIL-M v1 许可协议获得许可。
  • StarCoder Search:预训练数据集中的全文搜索代码。
  • StarCoder 成员资格测试:预训练数据集中是否存在代码的快速测试。

您可以在huggingface.co/bigcode找到所有资源和链接!

你可能感兴趣的:(ai)