集体出走的Stability AI 发布全新代码大模型,3B以下性能最优,超越Code Llama和DeepSeek-Coder

Stability AI又有新动作!程序员又有危机了? 3月26日,Stability AI推出了先进的代码语言模型Stable Code Instruct 3B,该模型是在Stable Code 3B的基础上进行指令调优的Code LM。

Stability AI 表示,Stable Code Instruct 3B 在代码完成准确性、对自然语言指令的理解以及处理多种编程语言方面都优于同类模型,在 3B 规模下提供最先进的性能,并且性能媲美Codellama 7B Instruct以及DeepSeek-Coder Instruct 1.3B

GPT-3.5研究测试:

https://hujiaoai.cn

GPT-4研究测试:

https://higpt4.cn

先让我们来感受一下Stable Code Instruct 3B的效果吧~

在线试用
https://huggingface.co/spaces/stabilityai/stable-code-instruct-3b
Hugging Face地址
https://huggingface.co/stabilityai/stable-code-instruct-3b
技术报告
https://static1.squarespace.com/static/6213c340453c3f502425776e/t/6601c5713150412edcd56f8e/1711392114564/Stable_Code_TechReport_release.pdf

从效果图以及Stability AI的介绍可以看出Stable Code Instruct 3B有以下几个功能特点:

  1. 自然语言理解 :Stable Code Instruct 3B可以理解以自然语言为主的编程指令,并有效执行生成高质量代码。

  2. 支持多种编程语言 :Stable Code Instruct 3B不仅支持Python、Javascript、Java、C、C++和Go等语言,还支持其他广泛采用的语言如SQL、PHP和Rust

  3. 多样化编程任务:Stable Code Instruct 3B不仅精通代码生成,还擅长FIM(填充中间)任务、数据库查询、代码翻译、解释和创作。

  4. 更强的代码理解能力:Stable Code Instruct 3B在训练集最初未包括的语言(如Lua)中也能够表现出较强的测试性能。这种熟练程度可能源于其对底层编码原理的理解。

让我们再来看看Stable Code Instruct 3B的实现方法吧~

方法

训练数据

Stable Code Instruct收集了一系列公开访问的大规模数据源。这些来源包括广泛的代码库、广泛的技术文档集合(例如:readthedocs)、以数学为重点的文本和全面的网络数据集,以在预训练阶段学习丰富的内部表达,超越单纯的代码理解。模型旨在显著提升在数学理解、逻辑推理和处理软件开发相关的复杂技术文本方面的能力。

模型架构

Stable Code是建立在Stable LM 3B基础上构建的,并且该模型是一个causal decoder-only transformer,架构上与Llama类似,但和Llama有以下几点区别:

  1. 位置嵌入:采用了旋转位置嵌入(Rotary Position Embeddings),应用于头嵌入维度的前25%,以提高吞吐量

  2. 归一化方法:使用了具有学习偏置项的LayerNorm进行归一化处理,而不是采用RMSNorm

  3. 偏置调整:除了键、查询和值投影的偏差,Stable Code 从前馈网络和多头自注意力层中删除了所有偏差项

模型训练

  1. 计算基础设施和设置

  • Stable Code在32个Amazon P4d实例上进行训练,包含256个NVIDIA A100 (40GB HBM2) GPUs。采用ZeRO阶段1的分布式优化方法,消除了对模型分片的需求。

  • 采用的全局批量大小为4,194,304个令牌。在表中的设置下,设备的性能达到大约222 TFLOPs/s,或71.15%的模型浮点操作利用率(MFU)。

  1. 多阶段训练

  • 采用了在其他强大的代码语言模型(如CodeGen、Stable Code Alpha、CodeLLaMA和DeepSeekCoder)中流行的分阶段训练方法。

  • 训练分为几个阶段,包括代码数据预训练、中间填充(FIM)训练、长上下文持续训练和指令微调。

  1. 模型初始化

  • 代码模型大多遵循两种主要训练方法之一:使用代码和相关文本从头开始训练的模型(例如,CodeGen、Stable code Alpha、Deepsseek Coder),以及利用基础语言模型的持续预训练的模型。

  • 预训练的语言模型(如Stable LM 3B)初始化的模型往往表现优于从头开始训练的模型。这证实了自然语言与代码之间的正面交叉转移可以增强模型的能力。

  1. 中间填充(FIM)训练

  • 为了解决代码中的左到右因果顺序不总是成立的问题(例如,函数调用和声明的顺序可以是任意的)

  • 将文档随机分为三个部分:前缀、中间部分和后缀,然后将中间部分移动到文档的末尾。在重新排列之后,遵循相同的自回归训练过程。

  • 在预训练的两个阶段中都应用了FIM。为了在长上下文训练阶段考虑FIM,我们确保只允许在单个文件的范围内应用FIM,以避免引入不现实的情景到训练目标中。

微调和对齐

在预训练之后,Stable Code Instruct通过由监督微调(SFT)和直接偏好优化(DPO)组成的微调阶段进一步提高了模型的对话能力

  1. 监督微调

  • 使用了Hugging Face上公开可用的几个数据集进行SFT微调:OpenHermes、Code Feedback和CodeAlpaca。这些数据集合计提供了大约500,000个训练样本。

  • SFT模型训练了三个周期,使用余弦学习率调度器。在达到5e-5峰值学习率之前,实施了占训练持续时间10%的热身阶段。

  • 设置全局批量大小为512个序列,并将输入打包成最多4096个令牌的序列。

  1. 直接偏好优化

  • 继SFT之后,我们应用了DPO,这是一种关键技术,对近期高性能模型(如Zephyr-7B、Neural-Chat-7B和Tulu-2-DPO-70B)的成功起到了关键作用。

  • 我们整理了大约7,000个样本的数据集,使用了来自UltraFeedback和Distilabel Capybara DPO-7k Binarized的数据,并仅保留了与代码相关的样本。

  • 为提高模型安全性,我们添加了来自Bai等人的Helpful and Harmless RLFH数据集,以及HH-Anthropic数据集的无害子集。编译了大约15,000个高关联性的安全相关数据点。

结论

本文介绍了Stable Code Instruct,一种新的代码语言模型,该模型不仅支持多样的编程语言,更在3B规模的模型上提供最先进的性能。随着技术的进步,将会有更多高性能的代码模型被推出,未来写代码的工作是否会变得更加轻松呢?是否程序员就业会面临危机呢?Stable Code Instruct的出现为我们勾勒了一个充满无限可能的未来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/496368.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python】flask执行上下文context,请求上下文和应用上下文原理解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

2024河北石家庄矿业矿山展览会|河北智慧矿山展会|河北矿博会

2024中国(石家庄)国际矿业博览会      时间:2024年7月4-6日 地点:石家庄国际会展中心.正定      随着全球经济的持续增长和矿产资源需求的不断攀升,矿业行业正迎来前所未有的发展机遇。作为矿业领域的盛会&…

3.28C++

复数类的实现&#xff0c;写出三种构造函数&#xff0c;算术运算符、关系运算符、逻辑运算符重载尝试实现自增、自减运算符的重载 #include <iostream> using namespace std; class Num {int rel; //实部int vir; //虚部 public:Num():rel(2),vir(1){}Num(int rel,…

确保未来安全:应对云安全的复杂性

云是业务运营的重要组成部分&#xff0c;它改变了组织扩展、创新和适应的方式。然而&#xff0c;其影响力日益增长的广度和深度不仅仅局限于商业领域。云环境是我们日常生活中不可或缺的一部分&#xff0c;负责存储和传输全球平民最敏感的数据。随着大量企业和个人利用云&#…

【C语言】编译和链接----从源代码到可执行程序的转换【图文详解】

欢迎来CILMY23的博客喔&#xff0c;本篇为【C语言】文件操作揭秘&#xff1a;C语言中文件的顺序读写、随机读写、判断文件结束和文件缓冲区详细解析【图文详解】&#xff0c;感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 前言 欢迎来到本篇博客&…

最小化安装Kubesphere报错问题解决方法

最小化安装Kubesphere报错: TASK [preinstall : Stop if defaultStorageClass was not found] ****************** fatal: [localhost]: FAILED! > {"assertion": "\"(default)\" in default_storage_class_check.stdout", "changed&qu…

数据结构进阶篇 之 【二叉树链序存储】的整体实现讲解

封建迷信我嗤之以鼻&#xff0c;财神殿前我长跪不起 一、二叉树链式结构的实现 1.二叉树的创建 1.1 手动创建 1.2 前序递归创建 2.二叉树的遍历 2.1 前序&#xff0c;中序以及后序遍历概念 2.2 层序遍历概念 2.3 前序打印实现 2.4 中序打印实现 2.4 后序打印实现 2.…

SnapGene 5 for Mac 分子生物学软件

SnapGene 5 for Mac是一款专为Mac操作系统设计的分子生物学软件&#xff0c;以其强大的功能和用户友好的界面&#xff0c;为科研人员提供了高效、便捷的基因克隆和分子实验设计体验。 软件下载&#xff1a;SnapGene 5 for Mac v5.3.1中文激活版 这款软件支持DNA构建和克隆设计&…

Linux_进程概念_冯诺依曼_进程概念_查看进程_获取进程pid_创建进程_进程状态_进程优先级_环境变量_获取环境变量三种方式_3

文章目录 一、硬件-冯诺依曼体系结构二、软件-操作系统-进程概念0.操作系统做什么的1.什么叫做进程2.查看进程3.系统接口 获取进程pid- getpid4.系统接口 获取父进程pid - getppid5.系统接口 创建子进程 - fork1、手册2、返回值3、fork做了什么4、基本用法 6.进程的状态1、进程…

【Java扫盲篇】String、String Buffer和String Builder的区别

你在面试时&#xff0c;面试官让你讲讲String String Buffer String Builder的区别&#xff0c;你是否能流畅的、完整的叙述出他们三者的区别? ✍先说结论 相同点&#xff1a; 他们的底层都是由char数组实现的。不同点&#xff1a; String对象一旦创建&#xff0c;是不能修…

PCL点云处理之M估计样本一致性(MSAC)平面拟合(二百三十六)

PCL点云处理之M估计样本一致性(MSAC)平面拟合(二百三十五六) 一、算法介绍二、使用步骤1.代码2.效果一、算法介绍 写论文当然用RANSAC的优化变种算法MSAC啊,RANSAC太土太LOW了哈哈 MSAC算法(M-estimator Sample Consensus)是RANSAC(Random Sample Consensus)的一种…

初入C++

C 编译时的查找&#xff1a; 先到函数局部域里查找到全局域找 局部域和全局域会改变生命周期。 命名空间域不会影响变量的生命周期。 默认情况下不会到命名空间域去找。(命名空间域内的变量的生命周期是全局的&#xff0c;及不会出命名空间就销毁) 在不同的作用域可以定义同…

Linux系统-----------MySQL 数据类型

目录 MySQL 数据类型 一、数值类型 二、日期和时间类型 三、字符串类型 &#xff08;1&#xff09;CHAR类型 &#xff08;2&#xff09;VARCHAR类型 &#xff08;3&#xff09;CHAR和VARACHAR的比较及其应用场景 MySQL 数据类型 MySQL 中定义数据字段的类型对你数据库的…

OC对象 - Block解决循环引用

文章目录 OC对象 - Block解决循环引用前言1. 循环引用示例1.1 分析 2. 解决思路3. ARC下3.1 __weak3.2 __unsafe_unretained3.3 __block 4. MRC下4.1 __unsafe_unretain....4.1 __block 5. 总结5.1 ARC下5.2 MRC下 OC对象 - Block解决循环引用 前言 本章将会通过一个循环引用…

深入解析RSA算法原理及其安全性机制

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 一、RSA算法简介二、RSA算法原理2.1 背景与数学基础2.2 密钥生成2.3 加密过程2.4 解密过程 三、安全性考虑四、RSA的使用五、…

P2602 [ZJOI2010] 数字计数

经典计数问题&#xff0c;注意0的判断 所以要引入前导0标记 #include<bits/stdc.h> using namespace std; using ll long long; using pii pair<int,int>; #define int long long const int N 1e510; const int inf 0x3f3f3f3f; const int mod 1e97; int gcd(…

华为OD机试 - 考古问题 - 回溯、全排列问题(Java 2024 C卷 200分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

自动化测试:Selenium中的时间等待

在 Selenium 中&#xff0c;时间等待指在测试用例中等待某个操作完成或某个事件发生的时间。Selenium 中提供了多种方式来进行时间等待&#xff0c;包括使用 ExpectedConditions 中的 presence_of_element_located 和 visibility_of_element_located 方法等待元素可见或不可见&…

StartAI修图实例教程之海报修图

发现AI的另一种用法——AI修图。想必许多电商小伙伴都会遇到海报修图问题&#xff0c;今天我们就来看看怎么处理&#xff01; 原图&#xff1a; 1.我们用PS自带的魔法棒工具进行选区&#xff0c;选择海报中需要修改的区域。我们今天是已“2024”两个字为例 效果图&#xff1…

每日必学Linux命令:cd命令

1.命令格式&#xff1a; cd [目录名]2.命令功能 切换当前目录至 [目录名]3. 常用范例 1.进入系统根目录 命令&#xff1a; cd / 说明&#xff1a;进入系统根目录,上面命令执行完后拿ls命令看一下&#xff0c;当前目录已经到系统根目录了 输出&#xff1a; hchc-virtu…
最新文章