IBM开源Granite Code模型,多尺寸可选,支持多种代码任务,性能媲美 CodeLlama

前言

近年来,大型语言模型(LLM)在代码领域展现出惊人的潜力,为软件开发流程带来了革命性的改变。代码 LLM 不仅能够生成高质量代码,还能帮助程序员修复错误、解释代码、编写文档等等,极大地提高了软件开发效率。然而,现有的代码 LLM 存在着一些局限性,例如模型体积过大,部署成本高昂,以及对特定代码任务的性能表现不佳等等。为了解决这些问题,IBM 研究院推出了 Granite Code 模型家族,旨在为企业软件开发提供一个功能强大、灵活易用的代码 LLM 工具。

  • Huggingface模型下载:https://huggingface.co/ibm-granite

  • AI快站模型免费加速下载:https://aifasthub.com/models/ibm-granite

技术特点

Granite Code 模型家族包含多个尺寸的模型,参数量级从 30 亿到 340 亿不等,能够满足不同场景的应用需求。模型架构基于 Transformer 解码器,并采用了多阶段训练策略,使其在代码理解和生成能力方面展现出卓越的性能。

116 种语言支持,覆盖主流编程语言

Granite Code 模型在 116 种编程语言上进行了训练,涵盖了几乎所有主流编程语言,包括 Python、JavaScript、Java、Go、C++、Rust 等等。这种广泛的语言支持,能够帮助开发者在不同编程语言之间进行代码转换和理解,并提高代码开发的效率。

多阶段训练策略,提升模型的综合能力

Granite Code 模型采用了双阶段训练策略,第一阶段仅使用代码数据进行训练,第二阶段则引入高质量的自然语言数据,进一步提升模型的推理能力。模型在训练过程中使用了因果语言建模目标和 Fill-In-the-Middle (FIM) 目标,使其能够更好地处理代码补全和代码插值任务。

多尺寸模型,满足不同场景的应用需求

Granite Code 模型家族包含 4 个不同尺寸的模型,分别是 3B、8B、20B 和 34B。用户可以根据自己的需求选择合适的模型。例如,对于资源受限的端侧设备,可以使用 3B 模型,而对于需要处理复杂代码任务的应用,则可以选择 34B 模型。

优化训练细节,提升模型的性能和效率

为了提升模型的性能和效率,Granite Code 模型在训练过程中采用了多种优化策略,包括:

  • FlashAttention 2: 加速注意力机制的计算速度。

  • 混合精度训练: 使用 BF16 精度进行训练,减少内存消耗。

  • 序列并行: 降低大型上下文长度训练过程中的内存消耗。

  • 深度扩展: 通过深度扩展技术,将 20B 模型的层数增加到 88 层,提升模型的性能。

性能表现

Granite Code 模型在多个基准测试中展现出了优异的性能,并与 CodeLlama 等最新模型在代码生成、修复、解释等任务中表现相当。

代码生成:性能领先,多语言支持

在 HumanEvalSynthesize、MultiPL-E 和 MBPP(+) 等代码生成任务基准测试中,Granite Code 模型在不同尺寸下均展现出了强大的性能,其在 6 种语言的 HumanEvalSynthesize 测试中,平均准确率超过了 CodeLlama,其中 3B 模型的性能甚至超越了 CodeLlama-34B-Instruct。在 MultiPL-E 测试中,8B 模型在 18 种编程语言中取得了最佳表现,而 34B 模型也超越了 CodeLlama-34B,展现了其强大的多语言代码生成能力。

代码修复和解释:性能优异,应用场景广泛

在 HumanEvalFix 和 HumanEvalExplain 等代码修复和解释任务中,Granite Code 模型同样表现出色。 8B 模型在代码修复任务中接近 CodeLlama-70B,而在代码解释任务中则超过了 CodeLlama-34B。 在实际应用中,Granite Code 模型能够有效地识别和修复代码中的错误,并给出清晰的代码解释,帮助开发者更深入地理解代码逻辑。

代码编辑和翻译:灵活高效,功能强大

在 CanItEdit 和 CodeLingua 等代码编辑和翻译任务中,Granite Code 模型展现了灵活高效的性能。在 CanItEdit 测试中,8B 模型的性能优于 CodeGemma 和 CodeLlama,表明其能够更准确地理解用户的意图,并对代码进行精准的修改。在 CodeLingua 测试中,Granite Code 模型的代码翻译能力也与 CodeGemma 模型相当,并且能够更有效地处理代码翻译中的复杂情况。

代码推理和执行:性能提升,应用场景拓展

在 CRUXEval 和 Berkeley Function-Calling Leaderboard (BFCL) 等代码推理和执行任务中,Granite Code 模型展现了更强的推理能力。在 CRUXEval 测试中,Granite Code 模型在不同尺寸下均取得了领先的性能。 在 BFCL 测试中,8B 模型的性能超越了 CodeLlama-7B,展现了其在调用函数和工具方面的优势。

模型鲁棒性测试:表现稳定,适应性强

在 ReCode 模型鲁棒性测试中,Granite Code 模型在不同尺寸下表现稳定,其在代码生成任务中展现了较强的鲁棒性,即使在面对各种扰动的情况下,也能保持良好的性能表现。

模型的优势

Granite Code 模型拥有以下优势:

  • 全能型: 能够处理多种代码任务,包括代码生成、修复、解释、编辑、翻译、推理、执行等等,能够为开发者提供全面的代码智能支持。

  • 企业级: 模型训练数据源于 IBM 自有数据,并遵循 IBM AI 伦理原则和法律团队的指导,确保模型的可靠性和安全性,适合企业级应用。

  • 开源: 所有 Granite Code 模型均采用 Apache 2.0 许可证,支持商业使用,为开发者提供了更多的灵活性和选择。

应用场景

Granite Code 模型在多个领域具有广泛的应用潜力,例如:

  • 代码辅助工具: 可以帮助开发者快速生成代码、修复错误、解释代码等。

  • 代码自动补全: 可以为开发者提供智能代码补全功能,提升代码编写效率。

  • 代码安全检测: 可以帮助开发者识别代码中的安全漏洞和潜在问题。

  • 代码重构: 可以帮助开发者将旧代码进行重构,提高代码质量。

  • 代码翻译: 可以用于将一种编程语言的代码翻译成另一种语言。

总结

Granite Code 模型家族的推出,标志着代码 LLM 技术迈上了新的台阶,它为开发者提供了功能强大、灵活易用的代码智能工具。随着技术的不断进步,相信 Granite Code 模型将会在更多领域发挥重要作用,推动软件开发的智能化进程。

模型下载

Huggingface模型下载

https://huggingface.co/ibm-granite

AI快站模型免费加速下载

https://aifasthub.com/models/ibm-granite

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

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

相关文章

【kubernetes】探索k8s集群的存储卷、pvc和pv

目录 一、emptyDir存储卷 1.1 特点 1.2 用途 1.3部署 二、hostPath存储卷 2.1部署 2.1.1在 node01 节点上创建挂载目录 2.1.2在 node02 节点上创建挂载目录 2.1.3创建 Pod 资源 2.1.4访问测试 2.2 特点 2.3 用途 三、nfs共享存储卷 3.1特点 3.2用途 3.3部署 …

Web程序设计-实验05 DOM与BOM编程

题目 【实验主题】 影视网站后台影视记录管理页设计 【实验任务】 1、浏览并分析多个网站后台的列表页面、编辑页面(详见参考资源,建议自行搜索更多后台页面)的主要元素构成和版面设计,借鉴并构思预期效果。 2、新建 index.h…

正则匹配优化:匹配排除多个字符串的其他字符串

(^entity|^with|...)\w优化 (?!entity|with|has|index|associations|input)\w(?!): 匹配排除项 效果 继续优化 匹配会过滤掉带有关键字的字段,在过滤的时候是可以加上尾部结束匹配符的 效果:

thinkphp6 自定义的查询构造器类

前景需求&#xff1a;在查询的 时候我们经常会有一些通用的&#xff0c;查询条件&#xff0c;但是又不想每次都填写一遍条件&#xff0c;这个时候就需要重写查询类&#xff08;Query&#xff09; 我目前使用的thinkphp版本是6.1 首先自定义CustomQuery类继承于Query <?p…

【C语言回顾】预处理

前言1. 简单概要2. 预处理命令讲解结语 上期回顾: 【C语言回顾】编译和链接 个人主页&#xff1a;C_GUIQU 归属专栏&#xff1a;【C语言学习】 前言 各位小伙伴大家好&#xff01;上期小编给大家讲解了C语言中的编译和链接&#xff0c;接下来我们讲解一下预处理&#xff01; …

【香橙派 AIpro】新手保姆级开箱教程:Linux镜像+vscode远程连接

香橙派 AIpro 开发板 AI 应用部署测评 写在最前面一、开发板概述官方资料试用印象适用场景 二、详细开发前准备步骤1. 环境准备2. 环境搭建3. vscode安装ssh插件4. 香橙派 AIpro 添加连接配置5. 连接香橙派 AIpro6. SSH配置 二、详细开发步骤1. 登录 juypter lab2. 样例运行3. …

【IDEA】-使用IDEA查看类之间的依赖关系

1、父子类的继承、实现关系 1.1、使用CTRL Alt U 选择 java class 依据光标实际指向的类位置 用实心箭头表示泛化关系 是一种继承的关系&#xff0c;指向父类 可以提前设置需要显示的类的属性、方法等信息 快捷键 Ctrl Alt S &#xff0c;然后搜索 Diagrams 1.2、使用…

python知识继续学习

1、计算机表示小数是有误差的&#xff0c;下面的5就是误差 2、在python中&#xff0c;所有的非0数字都是True&#xff0c;零是False。所有的非空字符串都是True&#xff0c;空字符串是False。空列表是False。在python的基本数据类型中&#xff0c;表示空的东西都是False&#x…

数据结构(三)循环链表 约瑟夫环

文章目录 一、循环链表&#xff08;一&#xff09;概念&#xff08;二&#xff09;示意图&#xff08;三&#xff09;操作1. 创建循环链表&#xff08;1&#xff09;函数声明&#xff08;2&#xff09;注意点&#xff08;3&#xff09;代码实现 2. 插入&#xff08;头插&#x…

【linux】运维-基础知识-认知hahoop周边

1. HDFS HDFS&#xff08;Hadoop Distributed File System&#xff09;–Hadoop分布式文件存储系统 源自于Google的GFS论文&#xff0c;HDFS是GFS的克隆版 HDFS是Hadoop中数据存储和管理的基础 他是一个高容错的系统&#xff0c;能够自动解决硬件故障&#xff0c;eg&#xff1a…

【Linux 网络编程】网络的背景、协议的分层知识!

文章目录 1. 计算机网络背景2. 认识 "协议"3. 协议分层 1. 计算机网络背景 网络互联: 多台计算机连接在一起, 完成数据共享; &#x1f34e;局域网&#xff08;LAN----Local Area Network&#xff09;: 计算机数量更多了, 通过交换机和路由器连接。 &#x1f34e; 广…

多模态模型入门:BLIP与OWL-ViT

BLIP 数据预处理 CapFilt&#xff1a;标题和过滤 由于多模态模型需要大量数据集&#xff0c;因此通常必须使用图像和替代文本 (alt-text) 对从互联网上抓取这些数据集。然而&#xff0c;替代文本通常不能准确描述图像的视觉内容&#xff0c;使其成为噪声信号&#xff0c;对于…

MAC M1 —— Install

文章目录 MAC M1 —— Install安装IDEA安装JDK安装Maven安装brew无法创建文件 /data/serverMac 修改终端用户名&#xff08;主机名&#xff09;PyCharm MAC M1 —— Install 安装IDEA 关键词&#xff1a;2020到2021.3的激活步骤。找下Download文件夹 安装JDK 在个人的电脑上…

《探索Stable Diffusion:AI绘画的创意之路与实战秘籍》

《Stable Diffusion AI 绘画从提示词到模型出图》介绍了 Stable Diffusion AI 绘画工具及其使用技巧。书中内容分为两部分&#xff1a;“基础操作篇”&#xff0c;讲解了 SD 文生图、图生图、提示词、模型、ControlNet 插件等核心技术的应用&#xff0c;帮助读者快速从新手成长…

java中,怎样用最简单方法实现写word文档

在跨平台环境中实现写word时&#xff0c;如果用现成的库&#xff0c;就会涉及跨平台兼容性问题&#xff0c;比如在安卓与java中实现写word的功能。还有一个问题就是&#xff0c;完全用程序生成word文档&#xff0c;工作量较大。所以采用了模板替换的方法。 docx文档本质就是一…

算法与数据结构:二叉排序树与AVL树

ACM大牛带你玩转算法与数据结构-课程资料 本笔记属于船说系列课程之一&#xff0c;课程链接&#xff1a; 哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ep66799?csourceprivate_space_class_null&spm_id_from333.999.0.0 你也可以选择购买『船说系列课程-年度会…

# AI作画原理:生成对抗网络(GAN)的原理与应用

AI作画原理&#xff1a;生成对抗网络&#xff08;GAN&#xff09;的原理与应用 现在&#xff0c;AI已经可以画出非常逼真的图像了。那么&#xff0c;AI是怎么做到这一点的呢&#xff1f; 深度学习与生成对抗网络&#xff08;GAN&#xff09; AI画画的核心技术之一是深度学习&…

关于MySQL数据库和数据表的基础

目录 一. 数据库的基础SQL 1. 创建数据库 2. 查看当前有哪些数据库 3. 选中数据库 4. 删除数据库 5. 小结 二. 数据表的基础SQL 1. 创建数据表 2. 查看当前数据库中有哪些表 3. 查看指定表的详细情况(查看表的结构) 4. 删除表 5. 小结 一. 数据库的基础SQL 1. 创建…

史上最全排序算法整理!(1)

1.排序的概念及其应用 1.1排序的概念 排序是计算机内经常进行的一种操作&#xff0c;其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序&#xff0c;若整个排序过程不需要访问外存便能完成&#xff0c;则称此类排序问题为内部排序。反之&#…

实战解析:爬取音乐每日推荐歌单并自动分享

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、准备阶段 三、实战步骤 四、总结与展望 一、引言 在数字化时代&#xff0c…