LLM中完全消除矩阵乘法,效果惊人!10亿参数在FPGA上运行功耗接近大脑!!



一直以来,矩阵乘法(MatMul)在神经网络操作中占据主导地位,主要因为GPU针对MatMul进行了优化。

老黄一举揭秘三代GPU!打破摩尔定律,打造AI帝国,量产Blackwell解决ChatGPT全球耗电难题


这种优化使得AlexNet在ILSVRC2012挑战赛中脱颖而出,成为深度学习崛起的历史性标志。


GPT-4o深夜发布!Plus免费可用!icon-default.png?t=N7T8https://www.zhihu.com/pin/1773645611381747712

没体验过OpenAI最新版GPT-4o?快戳最详细升级教程,几分钟搞定:

升级ChatGPT-4o Turbo步骤icon-default.png?t=N7T8https://www.zhihu.com/pin/1768399982598909952

  • 论文地址:https://arxiv.org/pdf/2406.02528

  • 项目地址:https://github.com/ridgerchu/matmulfreellm


值得注意的是,AlexNet利用GPU提高了训练速度,超越了CPU的能力,使深度学习仿佛赢得了「硬件彩票」。

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

研究者已经开始使用其他更简单的操作替代MatMul,主要有两种策略:

1. 使用初等运算代替MatMul,例如在卷积神经网络(CNN)中,用有符号加法代替乘法;

2. 使用二值或三值化量化,将MatMul值在累加之前翻转或清零。例如,脉冲神经网络(SNN)使用二值激活,而二值化网络(BNN)使用量化权重。



在语言建模方面,BitNet等技术表明量化的可扩展性,但这种方式仍然保留了昂贵的矩阵-矩阵相乘(MMM)的自注意力机制。

尽管研究者尝试了多种方法,但MatMul操作在GPU上仍然是资源密集型的。

由于MatMul占据了LLM整体计算成本,且随着LLM向更大的嵌入维度和上下文长度扩展,这种成本只会增加。

这引发了一个问题:是否有可能完全从LLM中消除MatMul操作?


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

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



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

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


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

研究人员根据训练时间和内存使用情况评估了他们提出的融合型 BitLinear 和传统型 BitLinear 实现.

实验表明,他们的融合操作器在更大的批量大小下,能够带来更快的训练速度,并减少内存消耗。

当批量大小为 2 的 8 次方时,1.3B 参数模型的训练速度从每次迭代 1.52 秒提高到 1.21 秒,比 Vanilla 实现快了 25.6%。



推荐阅读:



如何免费使用GPT-4o?如何升级GPT...



更强大Mamba-2正式发布啦!!!



黎曼猜想取得重大进展!!

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

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

相关文章

【适配鸿蒙next】Flutter 新一代混合栈管理框架

前言 据最新消息显示,华为今年下半年将全面转向其自主平台HarmonyOS,放弃Android系统。 报道中提到,下一版HarmonyOS预计将随华为即将推出的Mate 70旗舰系列一起发布。 据悉,HarmonyOS Next 已经扩展到4000个应用程序,…

C++【STL】改造红黑树简单模拟实现set map(带你了解set map的底层实现结构)

目录 一、学前铺垫(泛型编程) 二、改造红黑树 1.红黑树节点的改造 2.insert的改造 3.迭代器的实现 4.完整改造代码 三、set的模拟实现封装 四、map的模拟实现封装 五、完结撒❀ 前言: 下面为了简单模拟实现set map所出现的代码是以…

Tensorflow入门实战 P03-天气识别

目录 1、完整代码 2、运行结果 2.1 查看20张图片 2.2 程序运行 2.3 运行结果 3、小结 ① 代码运行过程中有报错: ② 修改代码如下: ③ 分析原因: 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者&…

NDIS Filter开发-PNP响应和安装

NDIS filter驱动可能是最容易生成的驱动之一,如果你安装了VS 2015 WDK之后,你可以直接生成一个能运行的Filter驱动,它一般是ndislwf。 和大部分硬件不同,NDIS Filter驱动介于软件和硬件抽象层之上,它和硬件相关&…

SpringCloud Gateway中Route Predicate Factories详细说明

官网地址:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories Spring Cloud Gateway将路由匹配作为Spring WebFlux HandlerMapping基础架构的一部分。 Spring Cloud Gateway …

使用 GPT-4 创作高考作文 2024年

使用 GPT-4 创作高考作文 2024年 使用 GPT-4 创作高考作文:技术博客指南 🤔✨摘要引言正文内容(详细介绍) 📚💡什么是 GPT-4?高考作文题目分析 ✍️🧐新课标I卷 人类智慧的进步&…

【C51】C51单片机实现的 抽奖机 设计与编程指南

文章目录 前言:1. 实现效果2. 准备工作3. 编写代码总结: 前言: 在本文中,我们将介绍如何使用C51单片机来实现一个简单的抽奖机。这个项目不仅能够展示C51单片机的基本应用,还能让我们了解如何通过编程来控制硬件&…

9.3 Go 接口的多态性

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Django 视图类

在Django框架中,视图类(Class-based views,简称CBVs)提供了一个面向对象的方式来定义视图。这种方式可以让你通过创建类来组织视图逻辑,而不是使用基于函数的视图(Function-based views,简称FBV…

详解FedAvg:联邦学习的开山之作

FedAvg:2017年 开山之作 论文地址:https://proceedings.mlr.press/v54/mcmahan17a/mcmahan17a.pdf 源码地址:https://github.com/shaoxiongji/federated-learning 针对的问题:移动设备中有大量的数据,但显然我们不能收…

minio的一个基础使用案例:用户头像上传

文章目录 一、minio下载安装(Windows)二、案例需求分析三、后端接口开发 一、minio下载安装(Windows) 1. 下载minio服务端和客户端 minio下载地址 2. 手动搭建目录 /minio/binmc.exeminio.exe/data/logs手动创建minio应用程序目…

vivado HW_DEVICE

硬件设备 描述 在Vivado Design Suite的硬件管理器功能中,每个硬件目标都可以 具有一个或多个Xilinx FPGA设备进行编程或用于调试目的。这个 hw_device对象是通过hw_server打开的hw_target上的物理部分。这个 current_hw_device命令指定或返回当前设备。 相关对象 硬…

Linux—小小内核升级

本篇主要是讲述下关于内核的一些基本常识,并记录下内核升级和编译的过程,若有遗漏/有误之处,望各位大佬们指出。 Ⅰ 基本内核常识 常见内核安装包 内核(kernel):这是Linux操作系统的核心部分,它负责管理系统的硬件和…

Vue3学习第二天记录

Vue3学习第二天记录 背景说明截图记录一个简单的JS文件Vue3的watch()函数Vue3的toRef()/toRefs()函数前端数据类型的分类前端写一个对外暴露的函数前端的...语法Vue3中watch()函数的总结Vue3中watchEffect()函数Vue3中watch()函数的坑Vue3中computed()函数 背景 最近在学习尚硅…

Vue2入门(安装Vue、devtools,创建Vue)以及MVVM分层思想

文章目录 1.下载并安装Vue2.使用Vue2.1 创建Vue以及挂载Vue2.2 模板语句的数据来源:data2.3 template配置项详解2.4 Vue实例和容器的关系 3.安装devtools4.MVVM分层思想5.通过vm可以访问哪些属性 1.下载并安装Vue (1)Vue是一个基于JavaScrip…

搭建高可用k8s

高可用只针对于api-server,需要用到nginx keepalived,nginx提供4层负载,keepalived提供vip(虚拟IP) 系统采用openEuler 22.03 LTS 1. 前期准备 因为机器内存只有16G,所有我采用3master 1node 1.1 修改主机配置(所有节…

扩散模型会成为深度学习的下一个前沿领域吗?

文章目录 一、说明二、 第 1 部分:了解扩散模型2.1 什么是扩散模型2.2 正向扩散2.3 反向扩散 三、他们的高成本四、扩散模型的用处五、为什么扩散模型如此出色六、第 2 部分:使用扩散模型生成6.1 用于自然语言处理和 LLM 的文本扩散6.2 音频视频生成6.3 …

下载安装Thonny并烧录MicroPython固件至ESP32

Thonny介绍 一、Thonny的基本特点 面向初学者:Thonny的设计初衷是为了帮助Python初学者更轻松、更快速地入门编程。它提供了直观易懂的用户界面和丰富的功能,降低了编程的门槛。轻量级:作为一款轻量级的IDE,Thonny不会占用过多的…

RDK X3(aarch64) 测试激光雷达思岚A1

0. 环境 - 亚博智能的ROSMASTER-X3 - RDK X3 1.0 0.1 资料 文档资料 https://www.slamtec.com/cn/Support#rplidar-a-series SDK https://github.com/slamtec/rplidar_sdk ROS https://github.com/slamtec/rplidar_ros https://github.com/Slamtec/sllidar_ros2 1. robostu…

1310. 子数组异或查询 异或 前缀和 python

有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] [Li, Ri]。 对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li1] xor ... xor arr[Ri])作为本次查询的结果。 并返回一…