StarCoder: 最先进的代码大模型
关于 BigCode
BigCode 是由 Hugging Face 和 ServiceNow 共同领导的开放式科学合作项目,该项目致力于开发负责任的代码大模型。
StarCoder 简介
StarCoder 和 StarCoderBase 是针对代码的大语言模型 (代码 LLM),模型基于 GitHub 上的许可数据训练而得,训练数据中包括 80 多种编程语言、Git 提交、GitHub 问题和 Jupyter notebook。与 LLaMA 类似,我们基于 1 万亿个词元训练了一个约 15B 参数的模型。此外,我们还针对一个 35B 词元的 Python 数据集对 StarCoderBase 模型进行了微调,从而获得了一个我们称之为 StarCoder 的新模型。
我们发现 StarCoderBase 在流行的编程基准测试中表现优于现有其他开源的代码 LLM,同时与闭源模型相比,如来自 OpenAI 的 code-cushman-001
(早期版本的 GitHub Copilot 背后的原始 Codex 模型),其表现也相当甚至超过了闭源模型的表现。凭借超过 8,000 个词元的上下文长度,StarCoder 模型可以处理比任何其他开源 LLM 更多的输入,从而可以赋能更广泛的有趣应用。例如,通过用多轮对话来提示 StarCoder 模型,我们可以让它们充当我们的技术助理。此外,这些模型还可用于自动补全代码、根据指令修改代码以及用自然语言解释代码片段等任务。
为了实现开源模型的安全发布,我们采取了一系列的措施,包括改进了 PII (Personally Identifiable Information,个人身份信息) 编辑流水线、对归因跟踪工具进行了创新,并使用改进的 OpenRAIL 许可证发布 StarCoder。更新后的许可证简化了公司将模型集成到其产品中所需的流程。我们相信,凭借其强大的性能,StarCoder 模型将赋能社区将其应用或适配至广泛的应用场景和产品中。
评估
我们在不同的测试基准上对 StarCoder 及其他几个与其类似的模型进行了深入的评估。其中之一测试基准是 HumanEval,这是一个比较流行的 Python 基准测试,它主要测试模型是否可以根据函数的签名和文档来编写函数。我们发现 StarCoder 和 StarCoderBase 在 HumanEval 上的表现均优于最大的模型,包括 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 上对其进行了评估,MultiPL-E 是 HumanEval 的多语言扩展版。我们观察到 StarCoder 在许多编程语言上与 code-cushman-001
的表现相当甚至更优。在 DS-1000 数据科学基准测试中,它以明显优势击败了 code-cushman-001
以及所有其他开源模型。好了,我们来看看除了代码补全之外,StarCoder 还能做些什么!
技术助理
经过详尽的评估,我们已经知道 StarCoder 非常擅长编写代码。我们还想测试它是否可以用作技术助理,毕竟它的训练数据中有大量的文档和 GitHub 问题。受 Anthropic 的 HHH 提示 的启发,我们构建了一个 技术助理提示。令人惊喜的是,仅凭提示,该模型就能够充当技术助理并回答与编程相关的问题!
训练数据
该模型是在 The Stack 1.2 的一个子集上训练的。该数据集仅包含许可代码,它还包含一个退出流程,以便代码贡献者可以从数据集中删除他们的数据 (请参见 Am I in The Stack)。此外,我们从训练数据中删除了个人身份信息,例如姓名、密码和电子邮件地址。
我们还发布了……
除了模型,我们还发布了一系列其他资源和应用演示:
- 模型权重,包括具有 OpenRAIL 许可证的 checkpoints
- 所有数据预处理和训练代码,许可证为 Apache 2.0
- 对模型进行全面评估的工具
- 用于训练的删除掉 PII 信息的新数据集,以及用于评估 PII 信息删除效果的代码
- 用于训练的预处理过的数据集
- 用于在数据集中查找生成代码出处的代码归因工具
链接
模型
- 论文: 关于 StarCoder 的技术报告。
- GitHub: 你可以由此获得有关如何使用或微调 StarCoder 的所有信息。
- StarCoder: 基于 Python 数据集进一步微调 StarCoderBase 所得的模型。
- StarCoderBase: 基于来自 The Stack 数据集的 80 多种编程语言训练而得的模型。
- StarEncoder: 在 The Stack 上训练的编码器模型。
- StarPii: 基于 StarEncoder 的 PII 检测器。
工具和应用演示
- StarCoder Chat: 和 StarCoder 聊天!
- VSCode Extension: 使用 StarCoder 补全代码的 VSCode 插件!
- StarCoder Playground: 用 StarCoder 写代码!
- StarCoder Editor: 用 StarCoder 编辑代码!
数据与治理
- StarCoderData: StarCoder 的预训练数据集。
- Tech Assistant Prompt: 使用该提示,你可以将 StarCoder 变成技术助理。
- Governance Card: 有关模型治理的卡片。
- StarCoder License Agreement: 该模型基于 BigCode OpenRAIL-M v1 许可协议。
- StarCoder Search: 对预训练数据集中的代码进行全文搜索。
- StarCoder Membership Test: 快速测试某代码是否存在于预训练数据集中。
你可以在 huggingface.co/bigcode 找到所有资源和链接!
英文原文: https://huggingface.co/blog/starcoder
原文作者: Leandro von Werra,Loubna Ben Allal
译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。
审校/排版: zhongdongy (阿东)
StarCoder: 最先进的代码大模型的更多相关文章
- 文心大模型api使用
文心大模型api使用 首先,我们要获取硅谷社区的连个key 复制两个api备用 获取Access Token 获取access_token示例代码 之后就会输出 作文创作 作文创作:作文创作接口基于文 ...
- 千亿参数开源大模型 BLOOM 背后的技术
假设你现在有了数据,也搞到了预算,一切就绪,准备开始训练一个大模型,一显身手了,"一朝看尽长安花"似乎近在眼前 -- 且慢!训练可不仅仅像这两个字的发音那么简单,看看 BLOOM ...
- DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍
DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍 1. 概述 近日来,ChatGPT及类似模型引发了人工智能(AI)领域的一场风潮. 这场风潮对数字世 ...
- 无插件的大模型浏览器Autodesk Viewer开发培训-武汉-2014年8月28日 9:00 – 12:00
武汉附近的同学们有福了,这是全球第一次关于Autodesk viewer的教室培训. :) 你可能已经在各种场合听过或看过Autodesk最新推出的大模型浏览器,这是无需插件的浏览器模型,支持几十种数 ...
- Android 常用代码大集合 [转]
[Android]调用字符串资源的几种方法 字符串资源的定义 文件路径:res/values/strings.xml 字符串资源定义示例: <?xml version="1.0&q ...
- PowerDesigner 学习:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- PowerDesigner 15学习笔记:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅
摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...
- AI大模型学习了解
# 百度文心 上线时间:2019年3月 官方介绍:https://wenxin.baidu.com/ 发布地点: 参考资料: 2600亿!全球最大中文单体模型鹏城-百度·文心发布 # 华为盘古 上线时 ...
- 图神经网络之预训练大模型结合:ERNIESage在链接预测任务应用
1.ERNIESage运行实例介绍(1.8x版本) 本项目原链接:https://aistudio.baidu.com/aistudio/projectdetail/5097085?contribut ...
随机推荐
- 通过右键菜单生成pyd
批处理 @echo off reg add "HKCR\AllFilesystemObjects\shell\构建PYTHON\command" /ve /t REG_SZ /d ...
- iphone 熄屏黑屏录像方法-取证拍摄-自带功能
iphone 有个旁白模式是为了残疾盲人的只听模式. 1.在 设置 - 辅助功能 - 辅助功能快捷键 - 选旁白 ,这样按三下电源键进入/退出旁白模式. 2.把声音调没,这样旁白就不会发出朗读. 3. ...
- python去除前中后多处空格的方法
x=" asdf ada都 是 年 费 sdf sf " print("".join(x.split())) 测试全角半角空格都没有了
- spring-dao.xml
本文件的作用:1整合dao层,连接数据库 2设置数据库连接池3配置SqlSessionFactory对象4配置扫描Dao接口包,动态实现dao接口,注入到spring容器中 Ps:此文件可以替代myb ...
- codec
1.codec究竟是什么 音频解码芯片:Audio codec,又叫声卡:本质就是ADC和DAC 2.codec的作用 在移动设备中,codec的作用可以归结为4种,分别如下: playback:对P ...
- WordPress安全方案
一.WordPress介绍WordPress是一款世界级的网站内容管理系统,因其系统结构科学合理,功能强大,操作简单,拥有海量用户.和其他CMS一样,安全漏洞也是其无法避免的问题.虽然官方不断发布补丁 ...
- DVWA-SQL Injection (Bind) SQL盲注
盲注同于union select查询注入,盲注只能得到数据库回显的正确和错误,利用返回的正确和错误一个一个判断. LOW 审计源码 <?php if( isset( $_GET[ 'Submit ...
- SpringBoot笔记--自动配置(高级内容)(下集)
案例需求 实现步骤: 具体的实现 1.引入Jedis依赖 2.提供Jedis的Bean 找到SpringBoot的执行文件,按住Ctrl键,进入SpringBootApplication注解,再进入E ...
- Fiddler一些用法学习记录
最近项目中用Fiddler较多,只会之前掌握的一些最简单的用法显得有点不太够.记录一下学习到的新用法. 一.需要mock.打开AutoResponder,Add Rule,填上需要mock的网址,需要 ...
- Maven学习笔记2:Maven核心概念
一.Maven工程约定目录结构 (说是约定,既是说它是大多数人都遵守的规范,但不是强制的) 一个小例子,熟悉Maven目录结构 这是官网给的例子,可以复制它的pom.xml来修改 第一步:建立项目 按 ...