大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

【新智元导读】Stability AI 在大佬出走后似乎并未受到影响,最近又官宣了新的代码模型 Stable Code Instruct 3B,在之前的基础上更进一步,干掉了所有同级竞品,甚至能和 7B、15B 的模型掰手腕。大佬出走后,第一个模型来了!就在今天,Stability AI 官宣了新的代码模型 Stable Code Instruct 3B。要说 Stability 也是真的很神奇,首席执行官辞职了,Stable Diffusion 其中几位作者也离开了,投资公司出了点故障,自己的工资也可能要发不起了

【新智元导读】Stability AI 在大佬出走后似乎并未受到影响,最近又官宣了新的代码模型 Stable Code Instruct 3B,在之前的基础上更进一步,干掉了所有同级竞品,甚至能和 7B、15B 的模型掰手腕。

大佬出走后,第一个模型来了!

就在今天,Stability AI 官宣了新的代码模型 Stable Code Instruct 3B。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

要说 Stability 也是真的很神奇,首席执行官辞职了,Stable Diffusion 其中几位作者也离开了,投资公司出了点故障,自己的工资也可能要发不起了,

—— 但是,楼外风雨飘摇,实验室里岿然不动,研究该做做,论文该发发,模型该调调,大模型各领域的战争是一个没落下。

而且不仅仅是铺开摊子搞全面战争,每项研究也都在不断前进,比如今天的 Stable Code Instruct 3B 就是在之前的 Stable Code 3B 的基础上做了指令调优:

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

论文地址:https://static1.squarespace.com/static/6213c340453c3f502425776e/t/6601c5713150412edcd56f8e/1711392114564/Stable_Code_TechReport_release.pdf

通过自然语言提示,Stable Code Instruct 3B 可以处理各种任务,例如代码生成、数学和其他与软件开发相关的查询。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

同阶无敌,越级强杀

Stable Code Instruct 3B 在同等参数量的模型中,做到了当前的 SOTA,甚至优于比自己大两倍多的 CodeLlama 7B Instruct 等模型,并且在软件工程相关任务中的表现与 StarChat 15B 相当。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

从上图可以看出,与 Codellama 7B Instruct 和 DeepSeek-Coder Instruct 1.3B 等领先模型相比,Stable Code Instruct 3B 在一系列编码任务中性能优异。

测试表明,Stable Code Instruct 3B 在代码完成准确性、对自然语言指令的理解、以及跨不同编程语言的多功能性方面,都能够打平甚至超越竞争对手。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

Stable Code Instruct 3B 根据 Stack Overflow 2023 开发者调查的结果,将训练专注于 Python、Javascript、Java、C、C++ 和 Go 等编程语言。

上图使用 Multi-PL 基准测试,比较了三个模型以各种编程语言生成输出的强度。可以发现 Stable Code Instruct 3B 在所有语言中都明显优于 CodeLlama,并且参数量还少了一半多。

除了上述的热门编程语言,Stable Code Instruct 3B 还包括对其他语言(如 SQL、PHP 和 Rust)的训练,并且即使在没有经过训练的的语言(如 Lua)中,也能提供强大的测试性能。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

Stable Code Instruct 3B 不仅精通代码生成,还精通 FIM(代码中间填充)任务、数据库查询、代码翻译、解释和创建。

通过指令调优,模型能够理解细微的指令并采取行动,促进了除了简单代码完成之外的广泛编码任务,比如数学理解、逻辑推理和处理软件开发的复杂技术。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

模型下载:https://huggingface.co/stabilityai/stable-code-instruct-3b

Stable Code Instruct 3B 现在可以通过 Stability AI 会员资格,用于商业目的。对于非商业用途,可以在 Hugging Face 上下载模型权重和代码。

技术细节

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

模型架构

Stable Code 建立在 Stable LM 3B 之上,是一个 decoder-only Transformer 结构,设计类似于 LLaMA。下表是一些关键的结构信息:

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

与 LLaMA 的主要区别包括:

位置嵌入:在头部嵌入的前 25% 使用旋转位置嵌入,以提高后续的吞吐量。

正则化:使用带学习偏差项的 LayerNorm,而非 RMSNorm。

偏置项:删除了前馈网络和多头自注意力层中所有的偏置项,除了 KQV 的。

使用与 Stable LM 3B 模型相同的分词器(BPE),大小为 50,257;另外还参照了 StarCoder 的特殊标记,包括用于指示文件名称、存储库的星数、中间填充(FIM)等。

对于长上下文训练,使用特殊标记来指示两个串联文件何时属于同一存储库。

训练过程

训练数据

预训练数据集收集了各种可公开访问的大规模数据源,包括代码存储库、技术文档(如 readthedocs)、以数学为重点的文本,和大量 Web 数据集。

初始预训练阶段的主要目标是学习丰富的内部表示,以显著提高模型在数学理解、逻辑推理、和处理软件开发相关复杂技术文本方面的能力。

此外,训练数据还包含通用文本数据集,以便为模型提供更广泛的语言知识和上下文,最终使模型能够以对话方式处理更广泛的查询和任务。

下表展示了预训练语料库的数据源、类别和采样权重等,其中代码和自然语言数据的比例为 80:20。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

另外,研究人员还引入了一个小型合成数据集,数据由 CodeAlpacadataset 的种子提示合成生成,包含 174,000 个提示。

并且参照 WizardLM 的方式,逐步增加给定种子提示的复杂性,又额外获得了 100,000 个提示。

作者认为,在预训练阶段早期引入这些合成数据有助于模型更好地响应自然语言文本。

长上下文数据集

由于存储库中多个文件通常相互依赖,因此上下文长度对于编码模型很重要。

研究人员估计了软件存储库中 token 的中位数和平均数分别为 12k 和 18k,因此选择 16,384 作为上下文长度。

接下来就是创建一个长上下文数据集,研究人员在存储库中获取了一些热门语言编写的文件并将它们组合在一起,在每个文件之间插入一个特殊的标记,以保持分离,同时保留内容流。

为了规避因文件的固定顺序而可能产生的任何潜在偏差,作者采用了一种随机策略。对于每个存储库,生成两个不同的连接文件顺序。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

分阶段训练

Stable Code 使用 32 个 Amazon P4d 实例进行训练,包含 256 个 NVIDIA A100(40GB HBM2)GPU,并使用 ZeRO 进行分布式优化。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

这里采用了一种分阶段的训练方法,如上图所示。

训练按照标准的自回归序列建模预测下一个标记。使用 Stable LM 3B 的 checkpoint 初始化模型,第一阶段训练的上下文长度为 4096,然后进行持续的预训练。

训练以 BFloat16 混合精度执行,all-reduce 时采用 FP32。AdamW 优化器设置为:β1=0.9,β2=0.95,ε=1e−6,λ(权重衰减)=0.1。从学习率 = 3.2e-4 开始,设置最小学习率为 3.2e-5,使用余弦衰减。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

自然语言模型训练的核心假设之一是从左到右的因果顺序,不过对于代码来说,这种假设并不总是成立(例如,函数调用和函数声明对于许多函数来说可以是任意顺序的)。

为了解决这个问题,研究人员使用了 FIM(中间填充)。将文档随机拆分为三个段:前缀、中间段和后缀,然后将中间段移动到文档的末尾。重新排列后,遵循相同的自回归训练过程。

指令微调

在预训练之后,作者通过微调阶段进一步提高模型的对话技能,该阶段包括监督微调(SFT)和直接偏好优化(DPO)。

首先使用在 Hugging Face 上公开可用的数据集进行 SFT 微调:包括 OpenHermes,Code Feedback,CodeAlpaca。

在执行精确匹配重复数据删除后,三个数据集总共提供了大约 500000 个训练样本。

使用余弦学习速率调度器控制训练过程,并将全局批处理大小设置为 512,将输入打包到长度不超过 4096 的序列中。

在 SFT 之后,开始 DPO 阶段,利用来自 UltraFeedback 的数据,策划了一个包含大约 7,000 个样本的数据集。此外,为了提高模型的安全性,作者还纳入了 Helpful and Harmless RLFH 数据集。

研究人员采用 RMSProp 作为优化算法,DPO 训练的初始阶段将学习率提高到 5e-7 的峰值。

性能测试

下面比较模型在代码完成任务上的性能,使用 Multi-PL 基准来评估模型。

Stable Code Base

下表显示了在 Multi-PL 上,大小为 3B 参数及以下的不同代码模型的性能。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

尽管 Stable Code 的参数量分别不到 Code Llama 和 StarCoder 15B 的 40% 和 20%,但模型在各种编程语言中的平均性能与它们持平。

Stable Code Instruct

下表在 Multi-PL 基准测试中,评估了几个模型的 instruct 微调版本。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

SQL Performance

代码语言模型的一个重要应用是数据库查询任务。在这个领域,将 Stable Code Instruct 的性能与其他流行的指令调优模型,和专门为 SQL 训练的模型进行比较。这里使用 Defog AI 创建的基准。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

推理性能

下表给出了在消费级设备和相应的系统环境中运行 Stable Code 时的吞吐量和功耗。

大佬出走后首个发布,Stability 官宣代码模型 Stable Code Instruct 3B

结果表明,当采用较低的精度时,吞吐量增加了近两倍。但需要注意的是,实施较低精度的量化可能会导致模型性能有所下降(可能很大)。

参考资料:

https://stability.ai/news/introducing-stable-code-instruct-3b

本文来自微信公众号:新智元 (ID:AI_era)

相关资讯

Stable Code Instruct 3B AI 模型亮相:可精准翻译转换编程语言

Stability AI 公司近日面向程序员,推出 Stable Code Instruct 3B 大语言模型,其亮点在于可以从一种编程语言翻译转换成另一种编程语言。IT之家附上 Stable Code Instruct 3B 大语言模型的功能如下:该模型可以根据代码上下文情境自动生成代码。基于相关代码情境,自动插入、补全相关代码。Stable Code Instruct 3B 能够生成与数据库交互的代码。该模型可以将代码从一种编程语言翻译成另一种编程语言。该模型可以注释现有代码功能。根据用户指令,稳定代码指示器

Stability AI开源3B代码生成模型:可补全,还能Debug

Stable Diffusion 3 还没全面开放,这家公司的代码生成模型先来了。本周一,Stability AI 开源了小体量预训练模型 Stable Code Instruct 3B。Stable Code Instruct 3B 是一个基于 Stable Code 3B 的指令调整编码语言模型(Code LM)。给出自然语言 prompt,该模型可以处理各种任务,例如代码生成、数学和其他软件工程相关的任务。Stability AI 宣称,该模型在 3B 规模上提供了 SOTA 性能,并且优于 CodeLlam

Stability AI发布Stable Code 3B模型,没有GPU也能本地运行

Stable Code 3B 的性能优于类似大小的代码模型,并且与 CodeLLaMA 7B 的性能相当,尽管其大小只有 CodeLLaMA 7B 的 40%。在文生图领域大火的 Stability AI,今天宣布了其 2024 年的第一个新 AI 模型:Stable Code 3B。顾名思义,Stable Code 3B 是一个拥有 30 亿参数的模型,专注于辅助代码任务。 无需专用 GPU 即可在笔记本电脑上本地运行,同时仍可提供与 Meta 的 CodeLLaMA 7B 等大型模型具有竞争力的性能。2023