放大招了|十亿参数大模型LLMs运行功耗仅需13W,内存使用量减少90%!

矩阵乘法(MatMul)历来是大型语言模型(LLMs)总体计算成本的主导因素,尤其在模型向更大维度嵌入和上下文长度发展时,这一成本呈指数级增长。

图片

近期有一篇刚刚发表的论文中提出的方法完全去除了矩阵乘法操作,同时在十亿参数级别的模型中实现了与前沿Transformer模型相当的性能。研究发现,随着模型规模的增加,无矩阵乘法模型与全精度Transformer模型之间的性能差距逐渐减小。在GPU实现上,通过优化内核,训练时的内存消耗相比未优化版本减少了高达61%,而在推理阶段,模型的内存使用量更是减少了90%以上。此外,作者们还在FPGA上构建了定制硬件,利用了比GPU更轻量级的操作,实现了在13W功耗下处理十亿参数规模模型的能力

图片

大型语言模型,如ChatGPT,虽然能产生令人印象深刻的智能结果,但其高昂的运行成本和巨大的碳足迹也让人望而却步。据估算,运行ChatGPT 3.5每天的能源成本高达70万美元。然而,UC Santa Cruz的研究团队展示了如何在不牺牲性能的前提下,剔除运行大型语言模型过程中最昂贵的计算环节。

矩阵乘法是大多数神经网络中占据主导地位的操作,密集层涉及向量-矩阵乘法(VMM),卷积可以作为具有共享权重的块稀疏VMM实现,而自注意力则依赖于矩阵-矩阵乘法(MMM)。由于图形处理器(GPU)对MatMul操作进行了优化,MatMul的普遍性得以凸显。通过CUDA和高度优化的线性代数库如cuBLAS,MatMul操作可以被高效并行化和加速。这种优化是AlexNet在ILSVRC2012竞赛中获胜的关键,也是深度学习崛起的历史标志。AlexNet利用GPU将训练速度提升至CPU无法企及的程度,因此,无论是训练还是推理,都离不开MatMul操作。

为了进行矩阵相乘,需要将矩阵存储在物理分离的多个图形处理单元(GPU)上,这些GPU是专为快速处理大规模数据集设计的电路,主要由NVIDIA制造。当需要从不同GPU上的矩阵中提取数字进行相乘时,数据的移动成为神经网络时间及能耗成本的主要来源。

尽管在深度学习中普遍存在,但MatMul操作占据了计算开销的主要部分,通常消耗了执行时间和内存访问的大部分,无论是在训练阶段还是推理阶段。一些工作通过两种主要策略替代了MatMul,以更简单的操作取而代之。第一种策略涉及用基本操作替换MatMul,例如AdderNet在卷积神经网络(CNNs)中用有符号加法代替了乘法。考虑到对卷积的关注,AdderNet更适合用于计算机视觉而不是语言建模。第二种策略是通过近似方法减少MatMul的计算复杂度,如低秩分解和哈希技巧。这些策略通常会牺牲一定程度的精度以换取计算效率。

图片

从上图对比发现,在370M参数规模下,MatMul-free Transformer++模型未能收敛,而本论文提出的方法在没有矩阵乘法(MatMul-free)的设置下成功收敛。这意味着,尽管MatMul-free Transformer++尝试在不使用矩阵乘法的情况下训练,但它未能有效地最小化损失函数,从而导致训练失败。这可能是因为它在去除矩阵乘法后,未能找到有效的替代机制来处理复杂的计算需求,特别是当涉及到大量的权重更新和梯度传播时。

相比之下,我们提出的方法在相同的MatMul-free条件下实现了成功的收敛。这表明我们的方法有效地解决了在没有矩阵乘法的情况下进行训练的问题,通过创新的算法设计或优化策略,确保了即使在去除矩阵乘法后,模型依然能够学习并改进其预测能力。

研究人员采用两种主要技术避免使用矩阵乘法。首先,他们将所有矩阵内的数字限制为三进制,即只能取-1、0或1三个值,这使得计算过程简化为加法而非乘法。其次,研究者调整了矩阵之间的通信策略,不是将一个矩阵中的每个数字与另一个矩阵中的每个数字相乘,而是设计了一种只执行最重要运算的策略,通过叠加矩阵并仅计算最关键的部分,达到与矩阵乘法相同的效果,但大大减少了计算成本。

图片

尽管计算量减少,但通过引入基于时间的计算训练模型,研究者能够保持神经网络的性能,使网络能够“记住”处理的关键信息,从而提升表现。实验显示,他们的模型在数十亿参数规模下与Meta的顶级算法Llama取得了相同的性能。

研究团队最初设计的神经网络可在GPU上运行,以利用GPU在人工智能行业的普及性,让软件易于获取和使用。在标准GPU上,该神经网络的内存消耗减少了约10倍,运行速度提高了约25%,这可能为在内存较小的设备(如智能手机)上全速运行强大的大型语言模型铺平道路。

NVIDIA设计的GPU高度优化了矩阵乘法的性能,这使他们在行业中独占鳌头,成为全球最盈利的公司之一。然而,这些硬件并未针对三进制运算进行全面优化。为了进一步节省能源,研究团队与计算机科学与工程系助理教授Dustin Richmond以及讲师Ethan Sifferman合作,创建了定制硬件。在三周内,他们在一个高度可定制的电路——现场可编程门阵列(FPGA)上构建了硬件原型,充分利用了神经网络中编程的所有节能特性。

借助定制硬件,模型在仅13瓦特功率下实现了超越人类阅读速率的输出,相比之下,使用GPU大约需要700瓦特的功率,这意味着定制硬件的效率是GPU的50多倍。研究人员认为,随着进一步的发展,他们可以进一步优化技术,实现更高的能源效率。他们指出,当前的结果已经相当出色,但在更有效地利用资源方面仍有巨大的潜力可挖。如果能在13瓦特功率下做到这一点,那么想象一下在整座数据中心的计算能力加持下,我们能取得怎样的成就。

论文中提到了GPU和FPGA上的轻量化模型实现。通过融合内核,GPU实现加速了训练过程,内存消耗减少了61%。此外,使用低比特优化的CUDA内核,推理速度提高了4.57倍,当模型扩展到130亿参数时,内存使用量减少90%。FPGA上的定制硬件解决方案展示了在真实世界中,轻量化模型不仅能降低计算需求,还能减少能源使用。

总的来说,这篇论文展示了在大型语言模型中完全移除矩阵乘法的可能性,同时保持了模型性能,大幅降低了计算和内存消耗。此外,通过GPU和FPGA上的优化实现,展示了轻量化模型在实际应用中的潜力,特别是其能源效率接近脑部水平。这些成果为未来的模型设计和硬件优化提供了新的方向。


如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • CXL:拯救NVMe SSD缓存不足设计难题

  • 数据中心:AI范式下的内存挑战与机遇

  • WDC西部数据闪存业务救赎之路,会成功吗?

  • 属于PCIe 7.0的那道光来了~

  • 深度剖析:AI存储架构的挑战与解决方案

  • 浅析英伟达GPU NCCL P2P与共享内存

  • 3D NAND原厂:哪家芯片存储效率更高?

  • 大厂阿里、字节、腾讯都在关注这个事情!

  • 磁带存储:“不老的传说”依然在继续

  • 浅析3D NAND多层架构的可靠性问题

  • SSD LDPC软错误探测方案解读

  • 关于SSD LDPC纠错能力的基础探究

  • 存储系统如何规避数据静默错误?

  • PCIe P2P DMA全景解读

  • 深度解读NVMe计算存储协议

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • CXL崛起:2024启航,2025年开启新时代

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

如果您也想针对存储行业分享自己的想法和经验,诚挚欢迎您的大作。
投稿邮箱:Memory_logger@163.com (投稿就有惊喜哦~)

《存储随笔》自媒体矩阵

图片

如您有任何的建议与指正,敬请在文章底部留言,感谢您不吝指教!如有相关合作意向,请后台私信,小编会尽快给您取得联系,谢谢!

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

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

相关文章

系统架构师考点--系统配置与性能评价

大家好。今天我们来总结一下系统配置与性能评价的考点内容,这一部分一般是出在上午场的选择题中,占1-2分左右。 一、性能指标 计算机 对计算机评价的主要性能指标有:时钟频率(主频);运算速度;运算精度内存的存储容量…

现在纠结于到底是学stm32好还是Arduino好?

如果你就是要搞单片机,学STM32。 如果你要搞机器人、物联网、机器视觉、自动驾驶,就要学Arduino。 搞单片机,除了STM32之外,重点在于画好原理图和PCB。刚好我有一些资料,是我根据网友给的问题精心整理了一份「stm32的…

HarmonyOS Next开发学习手册——内存管理(GC)

GC(全称 Garbage Collection),即垃圾回收。在计算机领域,GC就是找到内存中的垃圾,释放和回收内存空间。当前主流编程语言实现的GC算法主要分为两大类:引用计数和对象追踪(即Tracing GC&#xff…

【系统架构设计师】计算机组成与体系结构 ③ ( 层次化存储结构 | 寄存器 | 高速缓存 | 内存 | 外存 )

文章目录 一、层次化存储结构1、层次化存储结构2、层次化存储结构 - 示例说明3、程序员可操作的部分 计算机 采用 分级存储结构 , 主要目的是 为了 解决 容量 / 价格 / 速度 之间的矛盾 ; 一、层次化存储结构 1、层次化存储结构 计算机 存储器 按照存储速度 由快到慢 进行排序 …

算法入门:二分查找及其Java实现

在程序开发中,算法是解决问题的核心。本篇博客将详细讲解一种高效的查找算法——二分查找,并通过Java代码示例帮助你理解其实现和应用。 如果你觉得这篇文章对你有帮助,不要忘记点赞、收藏和关注我,这将是对我最大的支持和鼓励&am…

2、数据库模型图、er图

关系 user和administarators是多对一的关系 user和order是一对多的关系 shipped和order是多对一的关系 order和books是多对多的关系 leavewords和order是一对一的关系 stock和books是一对多的关系 Chens 数据库表示法——ER图 Crows Foot数据库表示法——数据库模型图 Navicat表…

%运算符

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法介绍 在python中,可以使用%运算符进行灵活多样的格式化处理,通用的语法格式为: (格式模板&…

9.二维数组的遍历和存储

二维数组的遍历和存储 二维数组的遍历 二维数组a[3][4],可分解为三个一维数组,其数组名分别为: 这三个一维数组都有4个元素,例如:一维数组a[0]的 元素为a[0][0],a[0][1],a[0][2],a[0][3]。所以遍历二维数组无非就是先取出二维数组中得一维数组, 然后再从一维数组中取出每个元…

关于摄像头模组中滤光片的介绍

1、问题背景 红外截止滤光片(IR CUT Filter)是应用在摄像头模组中非常重要的一个器件,因人眼与 coms sensor 对光线各波长的响应不同, 人眼看不到红外光,但 sensor 能感应到(如下图是某sensor在各波长下的…

Docker之jekins的安装

jekins官网地址:Jenkins Plugins (https://plugins.jenkins.io/) jekins 的docker 官方地址:https://hub.docker.com/r/jenkins/jenkins jekins 的docker 允许命令文档地址: docker/README.md at master jenkinsci…

40岁学习java是否需要报班学习?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!应该不需要。各种公开免费的…

CS-隐藏防朔源-数据转发-中间件反向代理-Apache

目录 1、代理机安装Apache: 2、中间件设置转发: 添加代理 3、重启Apache服务 4、CS监听器配置转发机IP 实战情况下还是要准备两台外网服务器. --还是做个中转 1、代理机安装Apache: apt-get install apache2 a2enmod proxy proxy_ajp proxy_balancer proxy_co…

用友 U8+ 控制金额、单价等字段权限设置

进入路径 系统服务——权限——数据权限控制设置 本功能是数据权限设置的前提,用户可以根据需要先在数据权限控制设置中选择需要进行权限控制的对象。 数据权限的控制分为记录级和字段级两个层次,对应系统中的两个页签"记录级"和"字段…

配置Nginx二级域名

一、环境 (一)配置 1.服务器 linux CentOS 2.反向代理 Nginx 3.开放端口 云服务器开放端口80和443 二、域名备案 (一)腾讯云 1.腾讯云域名备案流程 备注:一级域名备案后,二级域名可以不用再备案&a…

Construct公司 从 0 到 1 基于 Kitex+Istio 的微服务系统建设

本文根据 2024 年 5 月 25 日在上海举办的“云原生✖️AI 时代的微服务架构与技术实践”CloudWeGo 技术沙龙上海站活动中,Construct 服务端总监 Jason 的演讲《从 0 到 1 基于 Kitex Istio 的微服务系统建设》整理而来。 在微服务架构的浪潮中,企业面临…

BioCLIP:物种图像的基础视觉模型

从无人机到个人手机,各种相机收集的自然世界图像是越来越丰富的生物信息来源。从图像中提取生物相关信息用于科学的计算方法和工具激增,尤其是计算机视觉。然而,其中大多数都是为特定任务设计的,不容易适应或扩展到新的问题、环境…

Java-方法引用

方法引用概念 把已经有的方法拿过来用,当做函数式接口中抽象方法的方法体 前提条件 1、引用处必须是函数式接口 2、被引用的方法必须已经存在 3、被引用方法的形参和返回值 需要跟抽象方法保持一致 4、被引用方法的功能要满足当前需求 方法引用格式示例 方…

JavaScript高级程序设计(第四版)--学习记录之基本引用类型

Date Date类型将日期保存为自协调世界时间1970年1月1日午夜至今所经过的毫秒数。 创建日期对象 let now new Date() Date.parse()方法接收一个表示日期的字符串参数,尝试将这个字符串转换为表示该日期的毫秒数。 let time new Date(Date.parse("May 24,2024&…

Spring Boot 3 整合 SpringDoc OpenAPI 生成接口文档

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…