赞
踩
Stability AI发布全新代码模型Stable Code 3B!媲美70亿Code Llama,没GPU也能跑,专写代码,支持18种编程语言,上下文100K,笔记本离线就能跑。
Stability AI开年第一个大模型来了!
名为Stable Code 3B,参数27亿,专为写代码而生。
Stable Code 3B可理解处理18种不同的编程语言,上下文长度100K token。
且它对硬件要求也不高,用MacBook Air等普通笔记本电脑也能离线运行。
性能方面,Stable Code 3B规模比CodeLLaMA 7B小60%,但性能却大差不差。
BigCode评估中,在包含多种编程语言的MultiPL-E数据集上,Stable Code 3B与类似大小的模型相比,都拿下了SOTA性能。
Stable Code 3B 的性能优于类似大小的代码模型,并且与 CodeLLaMA 7B 的性能相当,尽管其大小只有 CodeLLaMA 7B 的 40%。
在文生图领域大火的 Stability AI,今天宣布了其 2024 年的第一个新 AI 模型:Stable Code 3B。顾名思义,Stable Code 3B 是一个拥有 30 亿参数的模型,专注于辅助代码任务。
无需专用 GPU 即可在笔记本电脑上本地运行,同时仍可提供与 Meta 的 CodeLLaMA 7B 等大型模型具有竞争力的性能。
2023 年底,Stability AI 便开始推动更小、更紧凑、更强大模型的发展,比如用于文本生成的 StableLM Zephyr 3B 模型。
随着 2024 年的到来,Stability AI 开年便马不停蹄的发布 2024 年第一个大型语言模型 Stable Code 3B,其实这个模型早在去年八月就发布了预览版 Stable Code Alpha 3B,此后 Stability AI 一直在稳步改进该技术。新版的 Stable Code 3B 专为代码补全而设计,具有多种附加功能。
与 CodeLLaMA 7b 相比,Stable Code 3B 大小缩小了 60%,但在编程任务上达到了与前者相媲美的性能。
Stable Code 3B 在 MultiPL-E 基准上实现了 SOTA 性能(与类似大小的模型相比),例如 Stable Code 3B 在 Python、C++、JavaScript、Java、PHP 和 Rust 编程语言上的性能优于 StarCoder。
研究介绍
Stable Code 3B 基于 Stable LM 3B 训练而成,而 Stable LM 3B 训练 token 数达到 4 万亿,更进一步的,Stable Code 使用了软件工程中特定的数据(包括代码)进行训练。
Stable Code 3B 提供了更多的特性,即使跨多种语言也表现良好,还兼具其他优势,比如支持 FIM(Fill in the Middle ,一种新的训练技巧)功能,还能扩展上下文大小。基础 Stable Code 在多达 16,384 个 token 序列上进行训练,遵循与 CodeLlama 类似的方法,即采用旋转嵌入(Rotary Embeddings),这种方法可以选择性的允许修改多达 1,000,000 个旋转基(rotary base),进一步将模型的上下文长度扩展到 100k 个 token。
在模型架构方面,Stable Code 3B 模型是一个纯解码器的 transformer,类似于 LLaMA 架构,并进行了以下修改:
位置嵌入:旋转位置嵌入应用于头嵌入维度的前 25%,以提高吞吐量;
Tokenizer:使用 GPTNeoX Tokenizer.NeoX 的修改版本,添加特殊 token 来训练 FIM 功能,例如 < FIM_PREFIX>、<FIM_SUFFIX > 等。
训练
训练数据集
Stable Code 3B 的训练数据集由 HuggingFace Hub 上提供的开源大规模数据集过滤混合组成,包括 Falcon RefinedWeb、CommitPackFT、Github Issues、StarCoder,并进一步用数学领域的数据补充训练。
训练基础设施
硬件:Stable Code 3B 在 Stability AI 集群上使用 256 个 NVIDIA A100 40GB GPU 进行训练。
软件:Stable Code 3B 采用 gpt-neox 的分支,使用 ZeRO-1 在 2D 并行性(数据和张量并行)下进行训练,并依赖 flash-attention、SwiGLU、FlashAttention-2 的旋转嵌入内核。
最后,我们看一下 Stable Code 3B 的性能表现:
Stable Code 3B刚上线,有网友反馈已经在插件中用上了:
插件地址:https://t.co/Mn7onaDpge
虽然模型名义上叫做Stable Code 3B,但其实是一个2.7B 参数的纯解码器语言模型。
除了模型比较轻量之外,Stable Code 3B还支持高达100K的上下文大小,可以更方便、更精确地辅助编码。
另外,模型参考了2023年StackOverflow开发者调查中,最受欢迎的18种编程语言,针对这18种语言进行了训练,提供了同等规模模型中最优秀的性能。
C
CPP
Java
JavaScript
CSS
Go
HTML
Ruby
Rust
Markdown
Shell
Php
Sql
R
Typescript
Python
Jupyter-Clean
RestructuredText
在与同量级的竞品模型的比较中,Stable Code 3B也几乎拿到了最好的成绩。
效果非常好!体积小,兼容各种硬件且运行速度非常快。
Stable Code 3B长啥样?
在此之前,Stability AI去年8月份就已发布了一个初代版本Stable Code Alpha 3B,Stable Code 3B是其进化版。但开发团队表示,Stable Code 3B是首个主要版本,基于Stable LM 3B基础模型打造,并增加了多项附加功能。
其中就包括支持中间填补(FIM)等新功能,并使用RoPE(旋转位置嵌入)方法,将上下文长度从16000 token拉长至100000 token。
Stability AI从2023年底开始推出更小尺寸、但功能强大的模型,包括StableLM Zephyr 3B等用于文本生成的模型。
Stable Code 3B的前代是Stability AI在8月份发布的Stable Code Alpha 3B。
Stable Code Alpha 3B使用来自BigCode的堆栈数据集(v1.2)来训练基础模型,并使用Python、Go、Java、Javascript、C、Markdown和C++等流行语言进一步训练(共560B代码token)。
建立基础模型后,开发人员针对特定用例对指令模型进行了调整,使用大约120000个Alpaca格式的代码指令/响应来训练模型,以提升解决复杂编程任务的能力。
Stable Code 3B整体架构类似于LLaMA,是一个仅解码器模型,使用Flash Attention 2算法。
支持以下18种编程语言:
C、CPP、Java、JavaScript、CSS、Go、HTML、Ruby、Rust、Markdown、Shell、Php、Sql、R、Typescript、Python、Jupyter-Clean、RestructuredText
下面是对性能比较的补充。
面对比自己大两倍多的CodeLLama 7B,Stable Code 3B的性能也差不多能与其打个平手,在Python、CPP语言上甚至略胜一筹。
在类似大小的模型中,Stable Code 3B表现突出。
上图展示了Stable Code Alpha利用Pytorch库完成一个相对复杂的python文件,灰色部分为Stable Code的预测。
参数细节:100K上下文,支持FIM
Stable Code 3B 在256个英伟达A100 40GB GPU(AWS P4d实例)的集群上进行训练,
使用ZeRO-1的数据并行和张量并行,并依赖FlashAttention以及FlashAttention-2的SwiGLU和Rotary Embedding内核。
模型的训练流程由类似于Code Llama的多阶段过程。
第一步,以使用自然语言数据预训练的StableLM-3B-4e1t为基础(使用4万亿个token训练),对多个代码和代码相关数据集进行无监督微调,包括 CommitPack、GitHub Issues、StarCoder和其他数学数据集。
模型在上述数据集上使用bfloat16进行了精确预训练,并使用AdamW进行了优化。
第二步,使用16384个token的更长序列进一步微调模型,同时与Code Llama类似,使用一种称为旋转位置嵌入(RoPE)的技术进行优化,使上下文大小扩展到了100k个token。
另外,新的Stable Code 3B模型还支持Flash Attention 2。
作为改进版本,Stable Code 3B不仅可以建议新的代码行,还可以填补现有代码中较大的缺失部分——称为中间填充功能(FIM)。
旋转位置嵌入应用于前25%的head embedding,以提高模型的吞吐量;
使用GPTNeoX Tokenizer的修改版本——NeoX,并添加特殊token来训练中间填充功能,比如<FIM_PREFIX>、<FIM_SUFFIX>和其他特殊token。
在使用BigCode的评估工具测试的多种编程语言的MultiPL-E指标上,Stable Code 3B展示了最先进的性能。
目前,AI代码生成工具的市场竞争非常激烈,70亿参数的来自Meta的Code Llama 7B被广大开发者所使用。
而在30亿参数这个量级,StarCoder LLM(由 IBM、HuggingFace和ServiceNow共同开发的开源项目)广受欢迎。
从测试成绩上来看,Stability AI的这个模型要优于StarCoder,不知道Stable Code 3B会给Stability和市场带来怎样的变化。
参考资料:
https://stability.ai/news/stable-code-2024-llm-code-completion-release
https://huggingface.co/stabilityai/stable-code-3b
https://huggingface.co/stabilityai/stable-code-3b
https://twitter.com/StabilityAI/status/1747348018884493623
https://stability.ai/news/stable-code-2024-llm-code-completion-release?continueFlag=ff896a31a2a10ab7986ed14bb65d25ea
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。