一个Stable Diffusion还不够!Stability AI再放杀手锏,进击代码生成领域:
推出了一款自称具有革命性的编码工具StableCode。
敲重点的是,StableCode不仅支持Python、Go、Java、JavaScript、C、Markdown、C++等多种编程语言。
还直接把上下文长度拉到16000个token。
图片
好家伙,网友直呼疯批:
图片
这波还直接戳中网友痛点:
我们真的很需要一个能够将整个代码库塞进上下文的工具。
图片
上下文窗口16000token
官网显示,StableCode模型具有30亿参数,将提供基础模型、指令模型、长上下文窗口模型三种不同的模型,帮助开发人员编码。
图片
StableCode在HPC(高性能计算)集群上,使用5600亿代码token的编程语言数据集starcoder-data对基础模型进行了训练。
StarCoder是HuggingFace和ServiceNow合作成立的开放科学合作组织BigCode于五月份开源的针对代码的大模型。
Stability AI首席研究科学家Nathan Cooper对VentureBeat表示:
我们非常喜欢BigCode,因为他们在数据治理、模型治理和模型训练方面做了惊人的工作,我们用了他们的数据集,并对其进行了额外的过滤和清理,同时也用在了构建长上下文窗口的模型,在我们的集群上进行了训练。
对于复杂的编程任务,StableCode则针对特定用例进行了指令调优。
在基础模型的基础上,用约120000个Alpaca格式的“代码指令-回答”对训练了指令模型。
图片
△StableCode指令生成对给定指令响应的代码。
此外,为了满足用户对上下文窗口长度的需求,StableCode的长上下文窗口模型直接将上下文窗口拉长至16000个token,是此前开源模型的2-4倍。
△与类似大小的模型(3B)进行的 HumanEval 基准比较。
不仅为用户提供了可单行、多行自动完成建议的工具,还允许用户同时查看编辑相当于五个中等大小的Python文件,允许更专业复杂的代码生成prompt。
下面是一个StableCode利用Pytorch深度学习库完成一个相对复杂的Python文件展示(灰色文本显示了StableCode的预测)。
图片
使用了RoPE的方法
此外,StableCode也是用到了Transformer架构,不同于StarCoder用ALiBi(线性偏差的注意力)的方法定位模型输出,StableCode则是使用了RoPE(旋转位置嵌入)的方法。
Cooper表示:
在Transformer模型中,ALiBi方法倾向于更加重视当前的token,而不是过去的token。这对于代码生成来说不是一个理想的方法,因为代码没有固定的叙述结构,没有明确的开始、中间和结束。代码的功能可以在应用流程的任何点被定义。所以我们使用RoPE,它没有这种偏见。
StableCode目前还处于早期阶段,初始发布的目标是观察开发者如何接受和使用这个模型。
我们将与社区进行互动合作,看看他们会提出哪些有趣的方向,并针对开发者领域进行生成式探索 。
研究主管Christian Laforte也浅聊了StableCode的目标:
与Stable Diffusion帮助世界上任何人成为艺术家类似,我们希望StableCode模型能让任何有好点子但却遇到问题的人,能够编写一个解决问题的程序。
看到Stability AI再放大招的这波操作,有网友在去测试Github Copilot的路上来了个掉头:
图片
还有网友希望“预定”下一次动作:
真的很想看Stability AI在文本转语音方面,做些类似谷歌SoundStorm(声音风暴)的事啊。
图片
此外,StableCode目前已经开源啦!
参考链接:
[1]https://venturebeat.com/programming-development/stability-ai-launches-stablecode-an-llm-for-code-generation/
[2]https://twitter.com/StabilityAI/status/1688931312122675200