Stable家族上新!全新编码工具StableCode,16000上下文,5个Python文件同编辑
yu 新智元报道
yu 新智元报道
【新智元导读】「Stable」家族又上新了!全新编码工具StableCode,最大支持16000上下文。
继文生图Stable Diffusion、SDXL1.0、语言模型StableLM之后,独角兽Stability AI又放大招了。
刚刚,Stability AI宣布推出,首个用于编码的生成式AI产品——StableCode。
StableCode提供了三种不同模型:通用基本模型、指令模型,已经支持多达16,000个token的长上下文窗口模型。
目前,它能够支持Python、Go、Java、JavaScript、C、markdown和C++编程语言的开发。
建在BigCode之上
具体来讲,StableCode通过使用3种不同的模型,来帮助程序员们编码,从而提高效率。
我们都知道,训练任何大模型都依赖于数据,对于StableCode,这些数据来自BigCode项目。
其实,使用BigCode作为LLM生成AI代码工具的基础并不是一个新想法。
5月,HuggingFace和ServiceNow早就推出了向公众开放的StarCoder LLM,它就是基于BigCode打造的。
基础模型首先在BigCode的堆栈数据集(v1.2)中的各种编程语言上进行训练。
Stability AI的首席研究科学家Nathan Cooper在采访中表示,StableCode的训练涉及对BigCode数据的重要过滤和清理。
然后,再使用Python、Go、Java、Javascript、C、markdown和C++等流行语言上进行进一步训练。
总的来说,Stability AI在HPC集群中560亿的token上训练了模型。
基础模型训练完成后,指令模型针对特定用例进行调整,以帮助解决复杂的编程任务。
大约120,000个以Alpaca格式的代码指令/响应对在基础模型上进行了训练。
使用StableCode Instruct生成对给定指令的响应代码
16000上下文,5个Python文件同编辑
StableCode 是那些希望学习更多编码知识的人的理想构件,而更长上下文窗口模型则是确保为开发者提供单行和多行自动完成建议的完美助手。
该模型可同时处理更多代码(比之前发布的上下文窗口为16,000个token的开放模型多2-4 倍)。
这样,开发者们可以同时查看或编辑相当于5个平均大小的Python文件。
Cooper解释说,更长的上下文可以使用更专业和复杂的代码生成提示。这也意味着开发者们可以让StableCode查看包含多个文件的中型代码库,以帮助理解和生成新代码。
StableCode使用Pytorch深度学习库完成一个相对复杂的python文件(灰色文本显示StableCode的预测)
与所有现代生成AI模型一样,StableCode也是基于Transformer架构。
StableCode没有使用ALiBi方法来定位Transformer模型中的输出,而是使用了一种称为旋转位置嵌入(RoPE)的方法。
Cooper说,Transformer模型中的ALiBi方法倾向于更重视当前token,而不是过去的token。
在Stability AI看来,这不是代码的理想方法,因为与自然语言不同,代码没有一个带有开头、中间和结尾的固定叙述结构。
代码函数可以为应用程序流程中的任何点定义。
那么,StableCode与其他模型相比,效果如何?
Stability AI将其与有相似的参数和训练的token数量的模型进行了比较。其中,使用流行的HumanEval基准,采用标准的pass@1和pass@10指标。
StableCode的基准分数
与类似大小(3B)模型的比较
30亿参数StableCode
StableCode-Instruct-Alpha-3B是一个30亿参数的纯解码器指调优的代码模型,预先在不同的编程语言集上进行了训练。
用法
该模型旨在按照指令生成代码。用于训练模型的数据集以Alpaca格式化。使用以下代码片段开始使用 StableCode-Instruct-Alpha-3B 生成代码:
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("stabilityai/stablecode-instruct-alpha-3b")
model = AutoModelForCausalLM.from_pretrained(
"stabilityai/stablecode-instruct-alpha-3b",
trust_remote_code=True,
torch_dtype="auto",
)
model.cuda()
inputs = tokenizer("###Instruction\nGenerate a python function to find number of CPU cores###Response\n", return_tensors="pt").to("cuda")
tokens = model.generate(
**inputs,
max_new_tokens=48,
temperature=0.2,
do_sample=True,
)
print(tokenizer.decode(tokens[0], skip_special_tokens=True))
模型详情
- 开发者:Stability AI
- 模型类型:StableCode-Instruct-Alpha-3B 模型是基于Transformer解码器架构的自回归语言模型。
模型架构
训练
StableCode-Instruct-Alpha-3B是带有代码指令数据集的StableCode-Completion-Alpha-3B上的指令微调版本。
https://stability.ai/blog/stablecode-llm-generative-ai-coding
微信扫码关注该文公众号作者