Stability AI是一家以Stable Diffusion文本到图像生成模型而闻名的公司,但这家初创公司对生成式AI的目标不止于此。最近,Stability AI宣布首次公开发布一款名为StableCode的新开源大型语言模型(LLM),旨在帮助用户生成编程语言代码。StableCode提供了三个不同的层次:基本模型适用于通用用例、指令模型以及支持多达16,000个标记的长上下文窗口模型。
StableCode模型的基础是来自开源项目BigCode的初始编程语言数据集,Stability AI还对其进行了额外的过滤和微调。最初,StableCode将支持Python/ target=_blank class=infotextkey>Python、Go、JAVA、JavaScript、C、Markdown和C++等编程语言的开发。
Stability AI的研究主管Christian Laforte在接受专访时表示:“我们希望通过这个模型做一些类似于Stable Diffusion的事情,SD帮助全世界的每个人都能成为艺术家。我们希望用StableCode模型做同样的事情。”
基于BigCode
任何LLM的培训都依赖于数据,对于StableCode来说,数据来源于BigCode项目。将BigCode作为生成式AI代码工具的LLM基础并非新概念。HuggingFace和ServiceNow早在5月份就发布了基于BigCode的开源StarCoder LLM。
Stability AI首席研究科学家Nathan Cooper在接受专访时解释说,StableCode的培训涉及对BigCode数据进行大量的过滤和清理。
“我们喜欢BigCode,他们在数据治理、模型治理和模型训练方面很惊人,”Cooper说。“我们获取了他们的数据集,并应用了额外的过滤来确保质量,然后构建了一个具有大上下文窗口的模型版本,并在我们的集群上对其进行了训练。”它遵循与自然语言领域非常相似的方法,首先预训练一个通用模型,然后对其进行微调以适应一组特定任务,或者在这种情况下,是针对语言的微调。”Cooper说。
更大的上下文空间
除了其基于BigCode的基础之外,StableCode的长上下文版本为用户带来了重要的优势。
StableCode的长上下文窗口版本具有16,000个标记的上下文窗口,Stability AI声称这超过了其他任何模型。Cooper解释说,更长的上下文窗口支持使用更专业和复杂的代码生成提示。这也意味着用户可以让StableCode查看包含多个文件的中型代码库,以帮助理解和生成新代码。
“您可以利用这个更长的上下文窗口,让模型更好地了解您的代码库,以及其他文件中定义的其他函数,”Cooper说。“因此,当它提供代码建议时,它可以更加定制化地适应您的代码库和需求。”
改善代码生成
与所有现代生成式AI模型一样,StableCode是基于转换器神经网络的。
与使用ALiBi方法在转换器模型中定位输出的方式不同——这是StarCoder用于其开源生成式AI编码模型的方法——StableCode采用了一种称为旋转位置嵌入(RoPE)的方法。
Cooper表示,转换器模型中的ALiBi方法倾向于给予当前标记比过去标记更高的权重。在他看来,对于代码而言,这并不是一个理想的方法,因为与具有开始、中间和结束结构的自然语言描述不同,代码函数可以在应用程序流的任何位置进行定义。
“我不认为编码本身适合这种认为现在比过去更重要的想法,所以我们使用...RoPE,它没有这种偏见,不会过于关注过去。”“我们将与社区互动和合作,看看他们会提出什么有趣的想法,并探索生成式开发空间。”Cooper说道。