从LLM中完全消除矩阵乘法,效果出奇得好,10亿参数跑在FPGA上接近大脑功耗

news2024/9/24 5:22:06

一直以来,矩阵乘法(MatMul)稳居神经网络操作的主导地位,其中很大原因归结为 GPU 专门针对 MatMul 操作进行了优化。这种优化使得 AlexNet 在 ILSVRC2012 挑战赛中一举胜出,成为深度学习崛起的历史性标志。

在这当中,有个值得注意的点是,AlexNet 利用 GPU 来提高训练速度,超越了 CPU 的能力,至此,GPU 的加入使得深度学习仿佛赢得了「硬件彩票」。

尽管 MatMul 在深度学习中很流行,但不得不承认的是它占据了计算开销的主要部分,主要表现为 MatMul 在训练和推理阶段消耗大部分执行时间和内存访问。

目前为止,研究者已经开始借助其他更简单的操作替代 MatMul,主要有两种。

  • 第一种策略是使用初等运算代替 MatMul,例如,在卷积神经网络 (CNN) 中,用有符号加法代替乘法;
  • 第二种方法是使用二值或三值化量化,将 MatMul 值在累加之前要么翻转要么清零。比如脉冲神经网络 (SNN) 使用二值激活,而二值化网络 BNN 使用量化权重。

在语言建模方面,BitNet 等技术的出现表明量化的可扩展性, 但这种方式仍然保留了昂贵的矩阵 - 矩阵相乘(MMM)的自注意力机制。研究者尝试过多种努力,但 MatMul 操作在 GPU 上仍然是资源密集型的。

既然 MatMul 占据了 LLM 整体计算成本,且随着 LLM 向更大的嵌入维度和上下文长度扩展时,这种成本只会增加。这引发了一个问题:是否有可能完全从 LLM 中消除 MatMul 操作?

图片

在这项工作中,来自加州大学圣克鲁兹分校等机构的研究者证明了 MatMul 操作可以完全从 LLM 中消除,同时在十亿参数尺度下保持强大的性能。

图片

  • 论文地址:arxiv.org/pdf/2406.02…
  • 项目地址:github.com/ridgerchu/m…
  • 论文标题:Scalable MatMul-free Language Modeling

实验表明,该研究提出的 MatMul-free 模型达到了与最先进的 Transformer 相当的性能,后者在推理期间需要更多的内存,规模至少为 2.7B 参数。

此外,论文还研究了扩展定律,发现随着模型规模的增加,MatMul-free 模型与全精度 Transformer 之间的性能差距逐渐缩小。

研究者还提供了一种高效的 GPU 模型实现方式,在训练期间相比未优化的基线模型减少了多达 61% 的内存使用。通过在推理时利用优化的内核,模型内存消耗可以比未优化的模型减少超过 10 倍。

最后,研究者在 FPGA 上构建了一个自定义硬件解决方案,他们以 13W 的功耗处理了十亿参数规模的模型,超出了人类可读的吞吐量,使 LLM 更接近大脑般的效率。

网友看后不禁感叹道:看来有大事要发生了。

图片

不过,受到计算资源的限制,研究者还没有在非常大的模型(如参数大于100B的模型)上测试MatMul-free模型的有效性,因此其实战效果还有待观察。

方法介绍

该研究构建了首个可扩展的MatMul-free语言模型 (Matmul-free LM),通过在密集层中使用加法操作以及在自注意力类函数中使用元素级 Hadamard 乘积完成

具体来说,三值权重消除了密集层中的 MatMul,类似于 BNN。为了从自注意力中移除 MatMul,该研究优化了门控循环单元 (GRU) ,使其仅依赖于元素级乘积,并表明该模型可与最先进的 Transformer 相媲美,同时消除了所有 MatMul 运算。

论文详细介绍 MatMul-free 语言模型(LM)的各个组成部分。

具有三值权重的 MatMul-free 密集层

在标准密集层中,输入和权重矩阵之间的 MatMul 可以表示为:

图片

为了避免使用基于 MatMul 的密集层,该研究采用 BitNet 来替换包含 MatMul 的密集层,即使用 BitLinear 模块,这些模块使用三值权重将 MatMul 操作转换为纯加法操作。当使用三值权重时,权重矩阵 W 中的元素被限制在集合 {-1, 0, +1} 中。带有三值权重的 MatMul 可以表达为:

图片

由于三值化权重图片只能从 {−1, 0, +1} 中取值,因而 MatMul 中的乘法运算可以用简单的加法或减法运算代替:

图片

因此,三值化 MatMul 可以写成如下:

图片

算法 1 为量化融合 RMSNorm 和 BitLinear 算法的流程图:

图片

MatMul-free 语言模型架构

研究人员采用了 Metaformer 的观点,该观点认为 Transformer 由两部分组成:token mixer(用于混合时间信息,即自注意力机制)和 channel mixer(用于混合嵌入 / 空间信息,即前馈网络,门控线性单元 GLU )。该架构的高级概览如图 2 所示。

图片

自注意力机制是现代语言模型中最常用的 token mixer,它依赖于三个矩阵 Q、K 和 V 之间的矩阵乘法。为了将这些操作转换为加法,研究人员至少对两个矩阵进行二值化或三值化处理。

假设所有密集层的权重都是三值的,他们将 Q 和 K 量化,得到一个三值的注意力图,从而消除自注意力中的乘法操作。但是,以这种方式训练的模型无法成功收敛。一个可能的解释是,激活值包含对性能至关重要但难以有效量化的异常值。

为了解决这一挑战,研究人员探索了不依赖于矩阵乘法的替代方法来混合 token。

通过采用结合了逐元素操作和累积的三值 RNN,可以构建一个MatMul-free 的 token mixer。在各种 RNN 架构中,GRU 因其简单高效而著称,它在比长短期记忆网络(LSTM)使用更少的门控单元和结构更简单的情况下,实现了类似的性能。因此,研究人员选择 GRU 作为构建 MatMul-free token mixer 的基础。

为了实现 MatMul-free 的通道混合,研究人员采用了门控线性单元(GLU),它在许多现代 LLM 中得到了广泛应用,包括 Llama 、Mistral 和 RWKV。一个适应了 BitLinear 的 GLU 版本可以表达如下:

图片

这里的通道混合器仅由密集层组成,这些层已被三值化累积操作所替代。通过在 BitLinear 模块中使用三值权重,研究人员可以消除对昂贵 MatMul 的需求,这样不仅使通道混合器在计算上更加高效,同时还保持了其在跨通道混合信息方面的有效性。

实验

该研究的重点是在中等规模的语言建模任务上测试 MatMul-free 的语言模型。研究人员将两种变体的 MatMul-free 语言模型与复现的高级 Transformer 架构(基于 Llama-2 的 Transformer++)在三个模型大小上进行比较:370M、13 亿和 27 亿参数。

为了公平比较,所有模型都在 SlimPajama 数据集上进行了预训练,其中 370M 模型训练了 150 亿个 token,而 13 亿和 27 亿模型各训练了 1000 亿个 token。

模型训练使用了 8 个 NVIDIA H100 GPU。370M 模型的训练时间大约为 5 小时,13 亿模型为 84 小时,27 亿模型为 173 小时。

MatMul-free 语言模型的扩展规律

研究团队评估了MatMul-free 语言模型和 Transformer++ 在 370M、13 亿和 27 亿参数模型上的扩展规律,如图 3 所示。

为便于比较,MatMul-free LM 和 Transformer++ 中的每个操作都被同等对待。但请注意,Transformer++ 中的所有权重和激活都是 BF16 格式,而MatMul-free 语言模型中的 BitLinear 层使用三元参数,激活为 BF16。因此,MatMul-free 语言模型的平均运算成本要低于 Transformer++。

图片

有意思的是,与 Transformer++ 相比,MatMul-free 语言模型的扩展投影显示出更陡峭的下降趋势,这表明MatMul-free语言模型在利用额外计算资源提高性能方面更为高效。

因此,MatMul-free 语言模型的扩展曲线预计将在大约 10^23 次浮点运算(FLOPs)处与 Transformer++ 的扩展曲线相交。这个计算规模大致相当于训练 Llama-3 8B(使用 1.5 万亿个 token 训练)和 Llama-2 70B(使用 2 万亿个 token 训练)所需的 FLOPs,这表明MatMul-free 语言模型不仅在效率上胜出,而且扩展时在损失方面也可能表现更好。

下游任务

学习率是语言模型训练中一个关键的超参数,当模型处于三元 / 二元权重状态时,对学习率变得更加敏感。为了确定最优学习率,研究人员使用 370M 模型,批量大小为 50k 个 token,在 1.5e−3 到 3e−2 的范围内进行了搜索。这次搜索的结果如图 4 © 所示。

结果显示,当学习率从 1.5e−3 增加到 1e−2 时,最终训练损失单调递减。只有当学习率超过 2e−2 时,模型才表现出不稳定。这一发现表明,以前使用三元权重的作品,如使用 1.5e−3 学习率的 BitNet,可能不是最优的,更高的学习率有可能带来更好的性能。

这些发现与 Deepseek LLM 的观察结果一致,后者发现传统大型语言模型(LLMs)的最佳学习率实际上比大多数 LLM 训练设置中通常报告的值要大。

有趣的是,研究人员还观察到,与使用较小学习率训练的模型相比,训练初期使用较大学习率训练的模型,在训练后期的阶段训练损失下降得更快。

图片

研究人员根据训练时间和内存使用情况评估了他们提出的融合型 BitLinear 和传统型 BitLinear 实现,如图 4 (a-b) 所示。

实验表明,他们的融合操作器在更大的批量大小下,能够带来更快的训练速度,并减少内存消耗。当批量大小为 2 的 8 次方时,1.3B 参数模型的训练速度从每次迭代 1.52 秒提高到 1.21 秒,比 Vanilla 实现快了 25.6%。

此外,内存消耗从 82GB 减少到 32GB,内存使用减少了 61.0%。随着批量大小的增加,融合实现的性能显著提高,允许同时处理更多的样本,并减少总迭代次数。

图 4 (d) 展示了不同模型大小下,所提出的MatMul-free语言模型与 Transformer++ 在 GPU 推理内存消耗和延迟方面的比较。

在MatMul-free语言模型中,研究人员采用 BitBLAS 进行加速,以进一步提高效率。评估是在批量大小为 1,序列长度为 2048 的情况下进行的。

MatMul-free语言模型在所有模型大小上都显示出比 Transformer++ 更低的内存使用和延迟。

对于单层,MatMul-free 语言模型只需要 0.12 GB 的 GPU 内存,并且实现了 3.79 毫秒的延迟,而 Transformer++ 消耗了 0.21 GB 的内存,并且有 13.87 毫秒的延迟。随着模型大小的增加,MatMul-free 语言模型的内存和延迟优势变得更加明显。

值得注意的是,对于大于 2.7B 的模型大小,结果是使用随机初始化的权重进行模拟的。对于最大的 13B 参数模型,MatMul-free 语言模型仅使用 4.19 GB 的 GPU 内存,并且有 695.48 毫秒的延迟,而 Transformer++ 需要 48.50 GB 的内存,并表现出 3183.10 毫秒的延迟。

这些结果突出了MatMul-free语言模型所实现的效率增益,使其成为大规模语言建模任务的有希望的方法,特别是在推理期间。

为了测试MatMul-free语言模型功耗和有效性,研究人员使用 SystemVerilog 创建了一个 FPGA 加速器。概览如图 5 所示。

图片

表 2 显示了单块(N = 1)单核实现的资源利用、功耗和性能。

图片

通过使用完整的 512 位 DDR4 接口,并对占据核心处理时间 99% 的 TMATMUL 功能单元进行并行化,预计在保持相同时钟速率的情况下,无需额外优化或流水线化,可以实现大约 64 倍的进一步加速,如表 3 所示。

图片

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

资源分享

图片

大模型AGI学习包

图片

图片

资料目录

  1. 成长路线图&学习规划
  2. 配套视频教程
  3. 实战LLM
  4. 人工智能比赛资料
  5. AI人工智能必读书单
  6. 面试题合集

人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

图片

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩

图片

3.LLM

大家最喜欢也是最关心的LLM(大语言模型)

图片

人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取

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

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

相关文章

HBase 在统一内容平台业务的优化实践

作者:来自 vivo 互联网服务器团队-Leng Jianyu、Huang Haitao HBase是一款开源高可靠性、扩展性、高性能和灵活性的分布式非关系型数据库,本文围绕数据库选型以及使用HBase的痛点展开,从四个方面对HBase的使用进行优化,取得了一些…

PG 逻辑备份

导出模式: ph_dump 只能备份单个数据库,不会导出角色和表空间相关的信息,而且恢 复的时候需要创建空数据库。 pg_dumpall 可以备份所有数据库,并且备份角色,表空间。 调用pg_dump: 逻辑恢复的恢复顺序&…

国漫推荐07

玄幻、奇幻 1.侠岚系列 《侠岚》(第1至6季) 《画江湖之侠岚》(侠岚第7季) 2.《斗破苍穹》 三十年河东,三十年河西,莫欺少年穷! 3.《武动乾坤》(第1至4季) 4.《妖神记》…

热点观察 丨《绝区零》下载量突破5000万、中国厂商占领全球手游收入榜

7月第2周.热点趋势 1. 《绝区零》全球下载量突破5000万 2. 《Character AI》爆火后内容管控变严 3. 芬兰手游厂商Supercell宣布开发新游戏 4. 6月全球手游收入榜中国厂商前十占六 5. 韩版《贪吃蛇大冒险》6月下载亮眼 6. 苹果、三星加入AI手机大战 7. 麦当劳推出首部短剧…

STM32智能仓储管理系统教程

目录 引言环境准备晶智能仓储管理系统基础代码实现:实现智能仓储管理系统 4.1 数据采集模块 4.2 数据处理与决策模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:仓储管理与优化问题解决方案与优化收尾与总结 1. 引言 智能仓储管理系统…

物流智能锁在物流货运智能锁控管理中的应用

一、物流锁控管理的痛点剖析 (一)货物安全风险高 在传统的物流运输中,常用的机械锁和普通电子锁安全性有限,容易被非法破解或撬开。据不完全统计,每年因货物被盗造成的经济损失高达数十亿。这导致货物在运输途中面临…

IDEA设置代码提示忽略大小写

一、设置代码提示为忽略大小写 IDEA代码提示默认是区分大小写的,设置为提示忽略大小写: Setting——Editor——Code Completion 如图

vue vite+three在线编辑模型导入导出

文章目录 序一、1.0.0版本1.新增2.编辑3.导出4.导入 二、2.0.0版本1. 修复模型垂直方向放置时 模型会重合4. 修复了导出导入功能 现在是1:1导出导入5. 新增一个地面 视角看不到地下 设置了禁止编辑地面 地面设置为圆形6. 新增功能 可选择基本圆形 方形 圆柱形等模型以及可放置自…

每天五分钟深度学习:向量化技术在神经网络中的应用

本文重点 向量化技术,简而言之,就是利用矩阵运算(而非传统的for循环)来执行大规模的计算任务。这种技术依赖于单指令多数据(SIMD)架构,允许一个指令同时对多个数据元素执行相同的操作。例如,在向量化加法中,不再需要逐个元素进行加法操作,而是可以一次性对整个向量执…

防御课第一次作业第一天笔记整理

网络安全概述 网络安全(Cyber Security)是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断 中国网络安全市场近年来只增不…

【微信小程序知识点】自定义构建npm

在实际开发中,随着项目的功能越来越多,项目越来越复杂,文件目录也变得很繁琐,为了方便进行项目的开发,开发人员通常会对目录结构进行优化调整,例如:将小程序源码放到miniprogram目录下。 &…

探索最佳海外代理服务商!你知道哪些?

近期收到很多读者回复,咨询我有没有好用的海外代理,许多业务会用到海外代理,给大家整理了几个亲测好用的代理,如果有需要可以去试一试。 一、711Proxy 711Proxy的覆盖范围广,住宅IP质量高,基本上爬虫业务…

【测开能力提升-fastapi框架】fastapi路由分发

1.7 路由分发 apps/app01.py from fastapi import APIRouterapp01 APIRouter()app01.get("/food") async def shop_food():return {"shop": "food"}app01.get("/bed") async def shop_food():return {"shop": "bed&…

华贝甄选干细胞科技,揭秘生命修复的奥秘

在探索生命奥秘的漫漫征途中,华贝甄选凭借干细胞科技的神奇力量,为您点亮健康与活力的希望之光。 我们深知,细胞是生命的基石,而干细胞则是这基石中蕴含的无限潜能。华贝甄选精心打造的干细胞疗法,如同神奇的魔法&…

网络编程学习之tcp

按下*(星号)可以搜索当前光标下的单词。 Tcp编程的过程 打开网络设备 Bind:给服务地址把ip号和端口号连接进去 Tcp是有状态的 Listen是进入监听状态,看有没有客户端来连接服务器 Tcp比udp消耗过多资源 Upd类似于半双工&#…

Excel第30享:基于辅助列的条件求和

1、需求描述 如下图所示,现要统计2022年YTD(Year To Date:年初至今日)各个人员的“上班工时(a2)”。 下图为系统直接导出的工时数据明细样例。 2、解决思路 Step1:确定逻辑。“从日期中提取出…

工厂人员定位为何如此重要?它有怎样的方案优势?

在工厂中安全性是最重要的一项指标,因它安全问题涉及到很多方面,不仅有经济损失还又人员伤亡,所以为了解决厂区安全隐患问题,就必须要用到工厂人员定位系统。它不仅可以降低安全隐患而且方便了日常管理,提升了厂区工作…

如何理解内容营销?与传统营销对比,内容营销有哪些特点?

在数字化浪潮的推动下,内容营销已经从一种新兴的营销手段成长为企业与消费者沟通的重要桥梁。它不仅仅是一种策略,更是一种艺术,一种通过分享有价值的信息来吸引、教育并留住目标受众的艺术。在这个信息爆炸、注意力稀缺的时代,内…

2024年适合开发人员使用的12个最佳API测试工具

什么是API? API是一个软件解决方案,作为中介,使两个应用程序能够相互交互。以下一些特征让API变得更加有用和有价值: 遵守REST和HTTP等易于访问、广泛理解和开发人员友好的标准。API不仅仅是几行代码;这些是为移动开…

ubuntu16.04安装低版本cmake(安装cmake安装)

文章目录 ubuntu16.04安装低版本cmake(安装cmake安装)1. **下载并解压CMake压缩文件**:- 首先,你需要从CMake的官方网站或其他可靠来源下载cmake-2.8.9-Linux-i386.tar.gz文件。- 然后在终端中使用以下命令解压文件: 2…