集体出走的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.mzph.cn/news/776824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3款免费甘特图制作工具的比较和选择指南

GanntProject GanttProject https://www.ganttproject.biz/ 是一款项目管理和调度应用,适用于 Windows、macOS 和 Linux。它易于使用,无需任何设置,适用于个人用户和小型团队。该应用提供任务层次结构和依存关系、里程碑、基准行、Gantt 图表…

WordPress Git主题 响应式CMS主题模板

分享的是新版本,旧版本少了很多功能,尤其在新版支持自动更新后,该主题可以用来搭建个人博客,素材下载网站,图片站等 主题特点 兼容 IE9、谷歌 Chrome 、火狐 Firefox 等主流浏览器 扁平化的设计加响应式布局&#x…

BioXcell InVivoPlus anti-mouse Ly6G及部分参考文献

BioXcell InVivoPlus anti-mouse Ly6G 1A8单克隆抗体与小鼠Ly6G反应。Ly6G分子量为21-25kDa,是GPI锚定的细胞表面蛋白Ly-6超家族的成员,在细胞信号传导和细胞粘附中发挥作用。Ly6G在发育过程中由骨髓谱系中的细胞(包括单核细胞、巨噬细胞、粒…

android 集合总结

1 集合分类, collection和map两大类,Iterator接口是提供遍历任何Collection的接口,不是map 2 集合类的底层实现 hashset基于hashmap实现(只不过HashSet里面的HashMap所有的value都是同一个Object而已) treeset由红黑树实现 …

什么是根据人类反馈的强化学习Reinforcement Learning with Human Feedback(RLHF)?

基于人类反馈的强化学习(Reinforcement learning with human feedback)是近年来越来越受欢迎的一种前沿技术,用于提高大型语言模型的性能。这是种使用人类反馈训练这些模型的有效方法,而该方法的输入组件与搜索评估也有诸多相似之…

[Flutter]环境判断

方式一(推荐) 常量kReleaseMode,它会根据你的应用是以什么模式编译的来获取值。bool.fromEnvironment会从Dart编译时的环境变量中获取值。对于dart.vm.product这个特定的环境变量,它是由Dart VM设置的,用来标明当前是…

【Android 源码】Android源码下载指南

文章目录 前言安装Repo初始化Repo选择分支没有梯子替换为清华源 有梯子 下载源码下载开始参考 前言 这是关于Android源码下载的过程记录。 环境:Windows上通过VMware安装的Ubuntu系统 安装Repo 创建Repo文件目录 mkdir ~/bin PATH~/bin:$PATH下载Repo工具&#…

回文子串 每日温度 接雨水

647. 回文子串 力扣题目链接 如果s【i】和s【j】相同 dp【i1】【j-1】也是回文串的话 (等于true) 那么dp【i】【j】也是回文串 true 定义一个bool二维数组 遍历顺序是从下到上 从左到右 因为dp【i】【j】是通过dp【i1】【j-1】推出来的 i从最后一…

【漏洞复现】用友U8Cloud nc.bs.sm.login2.RegisterServlet SQL注入漏洞

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案 0x02 漏洞概述 用友U8Cloud nc.bs.sm.login2.RegisterServlet接口处存在SQL注入漏洞,未授权的攻击者可通过此漏洞获取数据库权限,从而盗取用户数据,造成用…

OpenGL 实现“人像背景虚化“效果

手机上的人像模式,也被人们称作“背景虚化”或 ”双摄虚化“ 模式,也称为 Bokeh 模式,能够在保持画面中指定的人或物体清晰的同时,将其他的背景模糊掉。突出画面的主体部分,主观上美感更强烈。 人像模式的一般实现原理是,利用双摄系统获取景深信息,并通过深度传感器和图…

WorkPlus智能AI助理:定制化部署,拓展企业协作新境界

近年来,随着人工智能技术不断发展,智能助理在企业管理中发挥着日益重要的作用。其中,WorkPlus智能AI助理作为一款支持私有化部署的新一代智能助理软件,为企业内部协作场景带来了全新的可能性。通过结合企业自身的行业知识和应用场…

英伟达推出“地表最强AI芯片”

B站:啥都会一点的研究生公众号:啥都会一点的研究生 近期AI相关资讯,一起看看吧~ Neuralink首位脑芯片患者用意念下棋 埃隆-马斯克(Elon Musk)的脑芯片初创公司 Neuralink 展示了其首位脑芯片患者仅用意念下棋的情景…

VMware vSAN OSA存储策略 - 基于虚拟机的分布式对象存储

简介 博客:https://songxwn.com/ 存储策略 (Storage Policy) 是管理员定义的一组规则,这组规则定义了数据对象在 vSAN 存储上是如何保存的,存储策略定义了数据存储的可靠性、访问性能等特性。vSAN 提供了基于存储策略的存储管理 SPBM (Stor…

基于java实现的高校二手交易平台

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

无服务数据库是未来的趋势吗?

无服务数据库是未来的趋势吗? 无服务器数据库是未来的趋势吗?无服务器数据库与传统云数据库有何不同? Amazon Aurora Serverless(如下图所示)是 Amazon Aurora 的一种配置方式,可以按需自动扩展。 Aurora…

针对ETC系统的OBE-SAM模块设计方案

ETC系统组成及工作原理 ETC系统由前端系统和后台数据库系统组成,总体的架构如下图所示: 前端系统包含安装在汽车挡风玻璃上的车载单元(On Board Unit,简称OBU)、路侧单元(Roadside Unit,简称RS…

深入解析Spring MVC: 原理、流程【面试版】

什么是SpringMV? 1.是一个基于MVC的web框架; 2.是spring的一个模块,是spring的子容器,子容器可以拿父容器的东西,但是反过来不可; 2.SpringMVC的前端控制器是DispatcherServlet,用于分发请求。使开发变…

python--切片

1.切片: 切片是编程语言为有序序列(sequence)准备的,用来切割或者截取某个片段 一个完整的切片是包含三个参数和两个冒号" : " ,用于分隔三个参数(start_index、end_index、step)。当只有一个“:”时,默认第…

深度学习(三)vscode加jupyter notebook插件使用

0.前言 哎呀,我本次的实验是在新电脑上使用的,之前的笔记本上的环境什么的我都是很久以前弄好了的,结果到了新电脑上我直接忘了是该怎么配的了,不过万幸,花了点时间,查查补补,现在总算是可以了。…

elasticsearch 6.8.x 索引别名、动态索引扩展、滚动索引

文章目录 引言索引别名(alias)创建索引别名查询索引别名删除索引别名重命名索引别名 动态索引(index template,动态匹配生成索引)新建索引模板新建索引并插入数据索引sys-log-202402索引sys-log-202403索引sys-log-202…