StarCoder 2是一款可以在大多数GPU上运行的代码生成人工智能
开发者正在以惊人的速度采用AI驱动的代码生成器,例如GitHub Copilot和亚马逊CodeWhisperer,以及Meta的CodeLlama等开放访问模式。但这些工具远非理想。许多不是免费的。其他一些是免费的,但只能在不适用于常见商业环境的许可证下使用。
几年前,人工智能初创公司Hugging Face意识到市场对替代方案的需求,便与工作流自动化平台ServiceNow合作,共同推出了StarCoder,这是一个开源代码生成器,其许可证比其他一些限制性更少。第一版于去年初上线,此后一直在开发后续版本StarCoder 2。
StarCoder 2并不是一个单一的代码生成模型,而是一个系列产品。今天发布的版本有三种变种,其中前两种可以在大多数现代消费级GPU上运行。
- ServiceNow训练的30亿参数模型。
- 一个由Hugging Face 训练的 70 亿参数(7B)模型
- 由英伟达训练的150亿参数(15B)模型,是StarCoder项目最新的支持者。
请注意,“参数”是从训练数据中学到的模型部分,并且在这种情况下定义了模型在问题上的技能,即生成代码。
与大多数其他代码生成器一样,StarCoder 2 可以在自然语言中提出建议,用于完成未完成的代码行,并在需要时总结和检索代码片段。StarCoder 2 经过的数据量比原始的 StarCoder 多 4 倍(67.5TB 对比 6.4TB),在较低的运营成本下提供了 Hugging Face、ServiceNow 和 Nvidia 称之为“显着”改进的性能。
StarCoder 2可以使用像Nvidia A100这样的GPU进行“几小时”的微调,从而利用第一方或第三方数据来创建诸如聊天机器人和个人编码助手等应用程序。而且,由于StarCoder 2是在比原始StarCoder更大、更多样化的数据集上进行训练的(约619种编程语言),因此StarCoder 2可以做出更准确、更具上下文意识的预测——至少在理论上是这样。
“StarCoder 2是专为那些需要快速构建应用程序的开发人员而创建的,”ServiceNow的StarCoder 2开发团队负责人Harm de Vries在接受TechCrunch采访时表示。“使用StarCoder 2,开发人员可以利用其功能使编码更高效,而不会牺牲速度或质量。”
现在,我敢说并不是每个开发者都会同意德弗里斯关于速度和质量方面的观点。代码生成器承诺简化某些编码任务,但是需要付出一定的代价。
最近斯坦福大学的一项研究发现,使用代码生成系统的工程师更容易在开发的应用程序中引入安全漏洞。此外,网络安全公司Sonatype的一项调查显示,大多数开发人员担心对代码生成器生成的代码产生的方式缺乏了解,以及生成器生成了过多难以管理的代码。
StarCoder 2的许可证可能也会成为一些人的障碍。
StarCoder 2 授权使用 Hugging Face 的 RAIL-M 许可,旨在通过对模型许可方和下游用户都施加“轻度触碰”限制来促进负责任的使用。虽然比许多其他许可证限制少,但 RAIL-M 并非真正意义上的“开放”,因为它不允许开发者将 StarCoder 2 用于任何可想象的应用(例如严格禁止用于医疗建议应用)。一些评论者表示,RAIL-M 的要求可能太模糊,无法达到合规——并且RAIL-M可能会与欧盟AI法案等人工智能相关法规发生冲突。
把所有这些先放一放,星际编码器2真的比其他代码生成器更优秀吗 — 无论是免费还是付费的?
根据基准标准,StarCoder 2 15B 看起来比 CodeLlama 的某个版本,CodeLlama 33B,更有效率。 Hugging Face 表示StarCoder 2 15B 在部分代码自动完成任务上与 CodeLlama 33B 速度加倍匹配。不清楚是哪些任务;Hugging Face 没有具体说明。
StarCoder 2作为一个开源的模型集合,还有一个优势,就是可以在本地部署并“学习”开发者的源代码或代码库-这对于对将代码暴露给云端AI持有警惕态度的开发者和公司来说是一个诱人的前景。根据Portal26和CensusWide在2023年进行的一项调查,85%的企业表示他们对采用类似代码生成器的GenAI持有警惕态度,原因是隐私和安全风险-比如员工共享敏感信息或供应商在专有数据上进行培训。
Hugging Face、ServiceNow和Nvidia还提出,StarCoder 2比竞争对手更具道德性,并且法律上的风险更小。
所有GenAI模型都会复制——换句话说,吐出他们训练过的数据的镜像副本。想象力并不活跃就能看出,这可能会让开发人员陷入麻烦。对于受版权保护的代码进行训练的代码生成器,尽管有过滤器和额外的保障措施,但仍然有可能无意中推荐受版权保护的代码,并未能标记出来。
一些供应商,包括GitHub、微软(GitHub的母公司)和亚马逊,已承诺在代码生成器客户被指控侵犯版权的情况下提供法律保障。但不同供应商的保护范围有所不同,通常限于企业客户。
与使用受版权保护的代码(如GitHub Copilot等)进行训练的代码生成器不同,StarCoder 2只是在软件遗产提供的授权数据上进行训练的,软件遗产是为代码提供存档服务的非营利组织。在StarCoder 2的训练之前,负责StarCoder 2路线图的跨组织团队BigCode给了代码所有者一个选择退出训练集的机会,如果他们有需要的话。
与原始StarCoder一样,StarCoder 2的训练数据可供开发者随意复制、再现或审核。
最近,Hugging Face的机器学习工程师和BigCode项目的联合负责人Leandro von Werra指出,虽然开源代码生成器数量激增,但很少有提供有关训练数据以及训练方式的信息。
在一次采访中,Von Werra表示:“从科学角度来看,一个问题是训练不可重复,同时作为数据生产者(也就是将他们的代码上传到GitHub的人),你不知道你的数据是否被使用以及如何被使用。”“StarCoder 2通过在整个训练过程中实现完全透明来解决这个问题,从抓取预训练数据到训练过程本身。”
StarCoder 2并不是完美的。就像其他代码生成器一样,它容易受到偏见的影响。德弗里斯指出,它可能生成带有关于性别和种族刻板印象的代码元素。由于StarCoder 2主要是在英语注释、Python和Java代码上进行训练的,所以在除了英语以外的其他语言以及"低资源"代码(比如Fortran和Haksell)上的表现较弱。
然而,冯·韦拉坚称这是朝正确方向迈出的一步。
他说,“我们坚信,与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页面下载。