[博客翻译]StarCoder 2是一种代码生成AI,可在大多数gpu上运行


原文地址:https://techcrunch.com/2024/02/28/starcoder-2-is-a-code-generating-ai-that-runs-on-most-gpus/

代码地址:https://github.com/bigcode-project/starcoder2

开发者们正以惊人的速度采用AI驱动的代码生成器——例如GitHub Copilot、Amazon CodeWhisperer以及Meta的Code Llama等开放获取模型。然而,这些工具远非理想。许多并非免费,其他虽然免费,但其许可却限制了它们在普遍商业场景中的使用。感知到对替代品的需求,AI初创企业Hugging Face几年前与工作流自动化平台ServiceNow合作,创建了StarCoder,这是一个开源代码生成器,其许可比其他一些产品更为宽松。最初的版本在去年初上线,并且自那时起,一直在开发StarCoder 2。

GettyImages-1439425791-1.webp

StarCoder 2不是单一的代码生成模型,而是一个系列。今天发布的它包括三个变体,前两个可以在大多数现代消费级GPU上运行:

  • 由ServiceNow训练的30亿参数(3B)模型
  • 由Hugging Face训练的70亿参数(7B)模型
  • 由Nvidia训练的150亿参数(15B)模型,Nvidia是StarCoder项目的最新支持者

(注意:“参数”是模型从训练数据中学习到的部分,基本上定义了模型在问题上的技能,在这里是生成代码。)

与大多数其他代码生成器一样,StarCoder 2可以建议如何完成未完成的代码行,以及在用自然语言询问时总结和检索代码片段。StarCoder 2使用的训练数据是原始StarCoder的4倍(67.5TB对比6.4TB),Hugging Face、ServiceNow和Nvidia表示,StarCoder 2在降低运营成本的同时,提供了“显著”改善的性能。

StarCoder 2可以在几小时内使用像Nvidia A100这样的GPU,针对第一方或第三方数据进行微调,以创建诸如聊天机器人和个人编码助手等应用程序。而且,因为它是基于比原始StarCoder更大、更多样化的数据集训练的(约619种编程语言),StarCoder 2可以做出更准确、更有上下文意识的预测——至少从理论上讲。

“StarCoder 2特别为需要快速构建应用程序的开发者而设计,”ServiceNow的StarCoder 2开发团队负责人Harm de Vries在接受TechCrunch采访时说。“利用StarCoder 2的能力,开发者可以使编码更高效,而不会牺牲速度或质量。”

现在,我敢说并不是每个开发者都会同意de Vries关于速度和质量的观点。代码生成器承诺简化某些编码任务——但代价是昂贵的。

斯坦福大学的一项最新研究发现,使用代码生成系统的工程师在开发应用程序时更有可能引入安全漏洞。此外,来自网络安全公司Sonatype的一项调查显示,大多数开发者担心缺乏对代码生成器产生代码的洞察力,以及生成器产生的代码过多而难以管理的“代码蔓延”。

StarCoder 2的许可证也可能对一些人来说是个障碍

StarCoder 2是根据BigCode Open RAIL-M 1.0许可证授权的,该许可证旨在通过对模型许可证持有者和下游用户施加“轻触式”限制来促进负责任的使用。虽然比许多其他许可证更宽松,但RAIL-M并不是真正的“开放”,因为它不允许开发者将StarCoder 2用于所有可想象的应用程序(例如,严格禁止用于提供医疗建议的应用程序)。一些评论员说,RAIL-M的要求可能过于模糊,无法遵守——RAIL-M可能与欧盟AI法规等AI相关法规冲突。

对于上述批评,Hugging Face的一位发言人通过电子邮件声明说:“许可证是经过精心设计的,以最大限度地符合现行法律和法规。”

撇开这些不谈,StarCoder 2是否真的优于市面上其他的代码生成器——无论是免费的还是付费的?

根据不同的基准测试,它似乎比Code Llama的一个版本,Code Llama 33B,更高效。Hugging Face表示,StarCoder 2 15B在一部分代码完成任务上与Code Llama 33B匹敌,速度是其两倍。具体是哪些任务不清楚;Hugging Face没有具体说明。

作为一个开源模型集合,StarCoder 2还有一个优势,它可以在本地部署,并且可以“学习”开发者的源代码或代码库——这对于那些不愿将代码暴露给云托管AI的开发者和公司来说是一个吸引人的前景。在Portal26和CensusWide的2023年调查中,85%的企业表示,他们对采用像代码生成器这样的GenAI持谨慎态度,因为它们涉及隐私和安全风险——比如员工共享敏感信息或供应商在专有数据上进行训练。

Hugging Face、ServiceNow和Nvidia还声称,与其竞争对手相比,StarCoder 2更加道德——并且法律纠纷更少

所有的GenAI模型都会重复——换句话说,它们会吐出它们训练时的数据的镜像副本。不需要多么活跃的想象力就能看出,这为什么可能会让开发者陷入麻烦。对于那些使用受版权保护的代码进行训练的代码生成器(例如GitHub Copilot等),即使有过滤器和额外的安全措施,生成器也可能无意中推荐受版权保护的代码,并且未能将其标记为此类。

包括GitHub、Microsoft(GitHub的母公司)和Amazon在内的一些供应商已经承诺,在代码生成器的客户被指控侵犯版权的情况下提供法律保护。但保护范围因供应商而异,通常仅限于企业客户。

与使用受版权保护的代码进行训练的代码生成器(例如GitHub Copilot等)不同,StarCoder 2仅使用来自Software Heritage的数据进行训练,这是一个为代码提供档案服务的非营利组织。在StarCoder 2的训练之前,负责StarCoder 2路线图的大多数工作的跨组织团队BigCode,给了代码所有者一个机会,如果他们愿意,可以选择退出训练集。

与原始StarCoder一样,StarCoder 2的训练数据可供开发者随意分叉、复制或审计

Hugging Face的机器学习工程师Leandro von Werra是BigCode的联合领导人,他指出,尽管最近出现了大量开放的代码生成器,但很少有伴随着关于训练数据的信息,以及它们是如何训练的。

“从科学的角度来看,问题在于训练不可复现,但作为数据生产者(即上传代码到GitHub的人),你不知道你的数据是否以及如何被使用,”von Werra在接受采访时说。“StarCoder 2通过在整个训练管道中完全透明,从抓取预训练数据到训练本身,解决了这个问题。”

尽管如此,StarCoder 2并不完美。像其他代码生成器一样,它容易受到偏见的影响。de Vries指出,它可以生成反映性别和种族刻板印象的代码元素。并且因为StarCoder 2主要是在英语评论、Python和Java代码上进行训练的,所以它在处理英语以外的语言和“资源较少”的代码(如Fortran和Haskell)时表现较弱。

尽管如此,von Werra坚称这是朝着正确方向迈出的一步。

“我们坚信,建立与AI模型的信任和问责需要透明性和可审计性,包括完整的模型管道、训练数据和训练配方,”他说。“StarCoder 2[展示了]完全开放的模型如何提供有竞争力的性能。”

你可能会想——正如这位作者一样——Hugging Face、ServiceNow和Nvidia投资像StarCoder 2这样的项目有什么动机。他们毕竟是企业——而且训练模型并不便宜。

据我所知,这是一个经过尝试和验证的策略:培养善意,并在开源发布的基础上构建付费服务。

ServiceNow已经使用StarCoder创建了Now LLM,这是一个为ServiceNow工作流程模式、用例和流程进行微调的代码生成产品。Hugging Face提供模型实施咨询计划,并在其平台上提供StarCoder 2模型的托管版本。Nvidia也是如此,它通过API和Web前端使StarCoder 2可用。

对于那些特别感兴趣的开发者来说,StarCoder 2——模型、源代码等——可以从项目的GitHub页面下载。