Starcoder:愿源码与你同在, 最新的开源代码生成LLM来了
前言:
在5月4日,BigCoder在HuggingFace的支持下发布了开源代码生成模型Starcoder。
为方便查找,以下是主要的参考和资源链接:
代码仓库:GitHub - bigcode-project/Megatron-LM: Ongoing research training transformer models at scale
官网:Open and responsible development of LLMs for code
博客:StarCoder: A State-of-the-Art LLM for Code
论文:https://drive.google.com/file/d/1cN-b9GnWtHzQRoE7M7gAEyivY0kl4BYs/view
模型地址:bigcode/starcoder · Hugging Face
演示地址:BigCode - Playground - a Hugging Face Space by bigcode
也可以通过HuggingChat界面访问:HuggingChat
联系邮箱:contact@bigcode-project.org
VSCode插件:HF Code Autocomplete
发布说明:
关于BigCode
BigCode是由Hugging Face和ServiceNow共同领导的开放科学合作项目,致力于负责任地开发大型代码语言模型。
StarCoder简介
StarCoder 和 StarCoderBase 是代码的大型语言模型 (Code LLM),使用来自 GitHub 的许可数据进行训练,包括来自 80+ 编程语言、Git 提交、GitHub 问题和 Jupyter 笔记本。与LLaMA类似,研究者为15万亿个Token训练了一个~1B参数模型。他们对 35B Python Token的 StarCoderBase 模型进行了fine-tune,产生了一个名为 StarCoder 的新模型。
研究者发现,StarCoderBase 在流行的编程基准测试中优于现有的开放代码 LLM,并且匹配或超过了封闭模型,例如来自 OpenAI(为 GitHub Copilot 早期版本提供支持的原始 Codex 模型)。StarCoder 模型的上下文长度超过 8,000 个令牌,可以处理比任何其他开放 LLM 更多的输入,从而实现各种有趣的应用程序。例如,通过一系列对话提示StarCoder模型,使他们能够充当技术助理。此外,这些模型可用于自动完成代码,通过指令修改代码,以及用自然语言解释代码片段。 研究者采取了几个重要步骤来实现安全的开放模型发布,包括改进的 PII 编辑管道、新颖的归因跟踪工具,以及公开提供 StarCoder 在OpenRAIL许可证的改进版本下。更新后的许可证简化了公司将模型集成到其产品中的流程。研究者相信,凭借其强大的性能,StarCoder模型将成为社区使用和适应其用例和产品的坚实基础。
评估
研究者彻底评估了StarCoder和几个类似的模型以及各种基准测试。一个流行的Python基准测试是HumanEval,它测试模型是否可以根据其签名和文档字符串完成函数。研究者发现StarCoder和StarCoderBase的性能都优于最大的模型,包括PaLM,LaMDA和LLaMA,尽管它们要小得多。它们的表现也优于CodeGen-16B-Mono和OpenAI的code-cushman-001(12B)模型。研究者注意到,该模型的一个失败案例是它会生成 # Solution here 代码,可能是因为这种类型的代码通常是练习的一部分。为了强制模型生成实际解决方案,研究者添加了提示。这显著提高了StarCoder的HumanEval得分——从34%提高到40%以上,为开放模型创造了新的先进结果。研究者也尝试了CodeGen和StarCoderBase的提示,但没有观察到太大的区别。
StarCoder的一个有趣的方面是它是多语言的,研究者在MultiPL-E上对其进行了评估,它将HumanEval扩展到许多其他语言。研究者观察到StarCoder在许多语言上的表现相当或优于许多语言。在一个名为DS-1000的数据科学基准测试中,它显然击败了它以及所有其他开放获取模型。
技术助理
通过详尽的评估,研究者发现StarCoder非常有能力编写代码。但他们也想测试它是否可以用作技术助手,毕竟它接受过许多文档和 GitHub 问题的培训。受 Anthropic 的 HHH 提示的启发,研究者构建了一个技术助理提示。令人惊讶的是,只需提示,该模型就可以充当技术助手并回答与编程相关的请求!
训练数据
该模型是在 The Stack 1.2 的一个子集上训练的。数据集仅包含许可的代码,并包含一个选择退出过程,以便代码贡献者可以从数据集中删除其数据(请参阅堆栈中的我是)。此外,研究者还从训练数据中删除了个人身份信息,例如姓名、密码和电子邮件地址。
其他版本
除了模型,研究者还发布了资源和演示列表:
- 模型权重,包括具有OpenRAIL许可证的中间检查点
- 使用 Apache 2.0 许可证进行数据预处理和训练的所有代码
- 用于代码模型的综合评估工具
- 用于训练和评估 PII 删除的新 PII 数据集
- 用于训练的完全预处理的数据集
- 用于在数据集中查找生成的代码的代码归因工具
论文:STARCODER: MAY THE SOURCE BE WITH YOU!
内容
论文的标题是《Starcoder: A Large Language Model for Code Generation》,作者是来自ServiceNow Research和Hugging Face的研究人员。论文的主要内容如下:
论文的主题和研究目的是探索大型语言模型(LLM)在代码生成任务上的应用,提出了一个名为Starcoder的15亿参数的LLM,能够从自然语言生成代码,或者从代码生成自然语言。
论文的研究方法和数据来源是使用了一个包含超过80种编程语言的海量源代码数据集,称为The Stack v1.2,来训练Starcoder。该数据集由一万亿个仅包含许可证信息的源代码标记组成,覆盖了各种编程范式、领域和难度。
论文使用了来自39个国家的1399名众包人员标注出了一个Personally Identifiable Information (PII)数据集。用来训练去除PII。
论文的主要发现和结论是Starcoder在多个代码生成任务上表现出优异的性能,超过了现有的模型和基线。这些任务包括文本到代码、文本到工作流、代码补全和代码摘要等。论文还对Starcoder进行了广泛的分析,探讨了其优势和局限性,并为未来的研究提供了一些启示。
论文的创新点和意义是:
首次提出了一个基于Transformer的大型语言模型,用于从自然语言生成代码,或者从代码生成自然语言,展示了其在多种编程语言和任务上的通用性和强大性。
首次构建了一个包含超过80种编程语言的海量源代码数据集,用于训练大型语言模型,并将其以开放访问、开放科学和开放治理的方式发布在Hugging Face平台上,供社区使用和改进。
首次采用了一种负责任的AI模型许可证,对模型的修改和应用进行了使用限制,例如禁止模型用于生成或分发恶意代码。
链接
模型
- 论文:关于StarCoder的技术报告。
- GitHub:您需要了解的有关使用或微调 StarCoder 的所有信息。
- StarCoder:StarCoderBase 进一步接受了 Python 培训。
- StarCoderBase:接受过 The Stack 的 80+ 种语言训练。
- StarEncoder:在TheStack上训练的编码器模型。
- StarPii:基于StarEncoder的PII检测器。
工具和演示
- StarCoder Chat: Chat with StarCoder!
- VSCode 扩展:使用 StarCoder 编码!
- StarCoder Playground: Write with StarCoder!
- StarCoder Editor:使用 StarCoder 編輯!
数据与治理
- StarCoderData:StarCoder的预训练数据集。
- 技术助手提示:通过此提示,您可以将StarCoder变成技术助手。
- 治理卡:概述模型治理的卡。
- StarCoder 许可协议:该模型根据 BigCode OpenRAIL-M v1 许可协议进行许可。
- StarCoder 搜索:预训练数据集中的全文搜索代码。
- StarCoder 成员测试:快速测试预训练数据集中是否存在代码。
您可以在 huggingface.co/bigcode 找到所有资源和链接!
简单测试:
HuggingChat:
链接:HuggingChat
Playground:
https://huggingface.co/spaces/bigcode/bigcode-playground
可以只写一个函数定义让它来完成:
再来个复杂的:
再让它5折试一下
整体感觉效果还不错。
VS Code插件
感觉有帮助的朋友,欢迎赞同、关注、分享三连。^-^
更多推荐
所有评论(0)