超越GPT-4V,苹果多模态大模型上新,神经形态计算加速MLLM(二)

devtools/2024/9/20 7:27:24/ 标签: 机器学习, 人工智能, 架构, 算法, cnn, ai
aidu_pl">

上文介绍基于MINOnets神经网络架构加速多模态大模型的策略,本文将以Spinnaker2多核神经网络芯片EGRU架构为起点,覆盖存内计算架构,介绍新型计算架构在加速大模型推理的作用。SpiNNaker 2是一个设计用于大规模异步处理的多核神经形态芯片,而EGRU的架构则旨在在保持竞争性任务性能的同时高效利用这种硬件存内计算架构类似人脑神经,在神经元内完成存储与计算的处理方式,区别于传统CPU,GPU架构,打破内存墙,减少数据来回搬运,成为AI时代新一代算力架构

基于EGRU架构的Spinnaker 2

SpiNNaker2是一款专为大规模事件驱动和异步处理设计的加速器。这款芯片由152个处理单元(PEs)组成,它们通过一个片上网络(NoC)进行互联。每个处理单元都配备了一个Arm M4f处理器核心、128 kB的静态随机存取存储器(SRAM),以及用于执行指数运算、随机数生成和乘累加(MAC)操作的专用加速器。芯片上总共有19 MB的SRAM,并且配备了2 GB的低功耗双数据速率4(LPDDR4)内存。

在单个芯片内部,处理单元之间的通信可以通过直接内存访问(DMA)实现,允许直接访问其他处理单元的本地内存。每个处理单元内的DMA单元支持大批量数据传输,且不会影响处理器的正常工作。当处理器的本地内存指定位置被写入数据,或者DMA指令执行完成时,处理器会接收到中断信号。这种设计使得实现完全基于事件触发、稀疏通信和异步操作的神经网络成为可能。

而实现这种可能的核心是基于EGRU架构,EGRU是一种最近提出的基于事件的神经网络架构,他的处理过程类似于人类大脑处理信息的过程;我们的大脑是一个超级复杂的信息处理系统,当某些事情发生时,比如听到一个声音或者看到一个动作—我们的大脑就会开始工作,处理这些信息。但如果没什么特别的事情发生,我们的大脑就不会那么活跃。EGRU就是这样一个模仿大脑工作原理的计算模型,它只在必要时处理信息。

使用EGRU架构处理的任务:

1,语言建模:在这个任务中,EGRU模型被用来预测序列中的下一个单词。模型通过学习单词的嵌入表示,并使用Softmax函数来预测下一个单词的概率分布。

模型通过计算最终EGRU层的输出向量和字典中所有单词嵌入向量之间的点积相似度,来估计序列中下一个单词的概率。应用于这些值的Softmax函数作为条件分布 p 的估计。

2.手势识别:在这个任务中,EGRU模型结合CNN来处理由事件相机记录的手势数据。模型首先使用CNN来提取特征,然后使用EGRU层来处理这些特征,最终预测手势的类别。

我们的模型由一个CNN特征提取头部和两个各包含256个单元的EGRU层组成。

EGRU架构并行式处理方法:

EGRU架构在大模型训练推理任务加速上,可以采用以下方法,数据预处理:对于要处理的数据优先进行特征提取,调试等,以减小输入的数据内存;使用动态稀疏性:模型运行时只有一小部分内存被激活,可以减少计算量和内存使用;开发并行化算法:输入矩阵乘法,循环矩阵乘法和逐点运算可以同时进行;

A. 在单个处理元素上实现EGRU模型

在SpiNNaker2芯片的单个处理元素上安装最简单的EGRU模型。作为EGRU算法的一部分,需要执行三个操作:1) 输入矩阵乘法;2) 循环矩阵乘法;3) 逐点运算。对于单个处理元素的实现,我们可以简单地顺序执行这些操作。由于所有结果都存储在本地内存中,因此不需要数据传输。尽管SpiNNaker2上有一个乘累加(MAC)加速器,但在此应用中不必使用,以充分利用EGRU的动态稀疏性。

B. 并行化方法

由于任何现实的模型,包括我们更大的EGRU模型,都不会小到足以安装在单个处理元素上,因此我们需要将网络分割并放置在多个处理元素上。分割了的网络将神经元放置在不同的处理元素上,这种方法减少了网络内部所需的通信和同步。单个处理元素上神经元的输出决定了该处理元素的输出。而在输出后,需要传递到EGRU层中的其余单元。每个处理元素在接收到这样的传递后,将所有其他处理元素的输出与本地存储的单元的输出连接起来,形成下一个循环输入。如图1所示,这种传递是通过在处理元素之间发送内部NoC(网络芯片)数据包来实现的。

图1:单个PE运算模型

算法1:单个PE运算算法

C. 数据集和预处理

1) 语言建模:模型在WikiText-2数据集上进行训练和验证。文本被标记化并分成长度为70的序列。嵌入向量被预先计算并转移到LPDDR4内存中。

2) DVS(动态视觉传感器):我们将DVS原始事件时间通过25毫秒的时间窗口进行分箱,然后使用最大池化层将其缩小到32×32像素。数据集经过预处理,并使用CNN头部提取特征。提取的特征存储在LPDDR4内存中。

对输入数据进行预处理,如特征提取、降采样和序列化,以减少模型的输入尺寸。

通过这些处理方法,EGRU模型能够有效地支持大型模型的计算,同时保持模型的性能和准确性。这些方法使得EGRU能够处理大规模的数据集和复杂的时间序列预测任务,以降低算力能耗。

存内计算-神经网络运算

大模型的内存访问在能量和吞吐量方面是一个关键的瓶颈,传统内存一次只访问一行,无法通过传统的数字加速方法来解决,这促使了存内计算的发展,存内计算一次可以访问多行,并直接输出结果。将存内计算处理模式类比为神经元,每个“神经元”都是一个计算单元,接收N个输入x/n并在输入和可调权重w之间执行MAC操作。在这里,nr,re1,…R,其中R代表第1层的神经元总数,因此该层的输出维数也是R。值得注意的是,每一层的N必须等于前一层的N。在每个神经元中求和后,应用非线性函数·)产生输出激活al。对于下一层,激活作为输入,因此a→xn=r)。尽管图示了三层,但最终的输出层生成的激活.1通常对应于输出分类决策,例如,基于最高值的输出实现多类推理。

图2:深度神经网络运算

基于 NOR Flash 的卷积神经网络量化

以下介绍基于 NOR Flash 存储器实现的存内计算推理,Nor Flash阵列实现模拟乘法的原理结合浮栅单元的存储特点,以实现 4 位(即网络正向传播时只存在精度为 4 位的计算)的卷积神经网络模型,采用基于动态阈值调整的量化方法。这个方法主要涉及神经网络量化时的参数(权值 w 和偏置 b)以及激活函数的不同量化方案。

参数量化: 在训练过程中,采样浮点参数的阈值多次,以改变缩放因子,使得量化的映射更加精确。通过动态调整阈值,可以更好地适应不同参数的取值范围,提高量化的准确性。

激活函数的量化: 针对激活函数,引入可学习的参数,在 ReLU(Rectified Linear Unit)激活函数中,使激活的量化可以根据实际情况在反向传播过程中不断更新,以提高量化精度。这样的调整可以根据网络的训练过程中动态变化的激活值来调整量化的参数,以适应不同的输入情况。

这种基于 NOR Flash 阵列和浮栅单元的量化方法可以在训练过程中动态地调整阈值和参数,以适应不同的神经网络结构和输入数据的变化,提高量化的精度,同时降低模型的计算和存储开销。这种动态的量化方法有望在实际的卷积神经网络模型中取得更好的性能。

目前,NOR Flash存内计算芯片技术相对较成熟,并已于2021年实现量产。美国的Mythic和国内的知存科技都推出了基于NOR Flash的存内计算芯片产品。

Mythic M1076芯片: Mythic推出了M1076芯片,这款芯片采用NOR Flash存内计算技术,具有嵌入式AI推理能力,适用于各种端侧设备,如摄像头、传感器和边缘计算设备等。

知存科技WTM2101芯片: 知存科技推出了WTM2101量产SoC芯片,该芯片基于NOR Flash存内计算技术,具有边缘AI计算能力,适用于智能摄像头、智能家居等场景,实现了高效的本地AI处理。

存内计算模拟人脑处理模式,数据直接输入直接在存储器内存储并计算后直接输出,同时多个神经元并行处理的模式,提升了计算的效率。

综上所述,神经形态计算通过模拟大脑的工作方式,结合EGRU模型的动态稀疏性和存内计算架构技术,能够显著提升大模型的计算效率,同时降低能耗,这对于当前和未来的人工智能应用具有重要意义。


http://www.ppmy.cn/devtools/10499.html

相关文章

【Flutter】自动生成图片资源索引插件一:FlutterAssetRefGenerator

介绍 FlutterAssetRefGenerator 插件:windows上 点击生成图片索引按钮后,pubspec.yaml 会出现中文乱码,需要手动改乱码;mac上没问题。 优点:点击图标自动生成。 目录 介绍一、安装二、使用 一、安装 安装FlutterAsset…

vscode 解决无法创建临时文件。

报错: Fatal error: cant create C:\Users???y\AppData\Local\Temp\ccqkCS9j.o: No such file or directory 右击此 电脑 -> 属性 打开 系统信息 -> 高级系统设置 系统属性 -> 高级 -> 环境变量 将temp 和 tmp 改为其它英文路径 只更改用户变量…

无人驾驶 自动驾驶汽车 环境感知 精准定位 决策与规划 控制与执行 高精地图与车联网V2X 深度神经网络学习 深度强化学习 Apollo

无人驾驶 百度apollo课程 1-5 百度apollo课程 6-8 七月在线 无人驾驶系列知识入门到提高 当今,自动驾驶技术已经成为整个汽车产业的最新发展方向。应用自动驾驶技术可以全面提升汽车驾驶的安全性、舒适性,满足更高层次的市场需求等。自动驾驶技术得益于人工智能技术的应用…

每日两题 / 438. 找到字符串中所有字母异位词 238. 除自身以外数组的乘积(LeetCode热题100)

438. 找到字符串中所有字母异位词 - 力扣&#xff08;LeetCode&#xff09; 记录p串每个字符出现次数 维护与p串等长的滑动窗口&#xff0c;记录其中每个字符的出现次数 每次滑动后将当前次数与p串的次数比较即可 class Solution { public:vector<int> findAnagrams(s…

php中常见的正则使用方法

在PHP中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找和替换字符串中的模式。下面是一些常见的PHP正则表达式匹配示例: 匹配数字:$pattern = /\d+/; $str = There are 123 apples and 456 oranges.; preg_match($pattern, $str, $matches);

Delphi开发APP时的手势处理(缩放、旋转、平移、长按等)

在使用手机时&#xff0c;少不了使用手势了&#xff0c;像滑动&#xff0c;缩放&#xff0c;长按等&#xff0c; 那么如何在Delphi开发的APP中使用手势呢&#xff1f; Delphi自带有示例&#xff0c;在下面这个目录中&#xff0c; 可以看到ImageRotation图片旋转&#xff0c;I…

公钥和公有地址有什么区别?

目录 前言&#xff08;为了回答这个问题&#xff0c;有几件事需要理解。&#xff09; 1、首先是哈希是什么。 2、接下来要了解的是公钥和私钥 3、其他 公钥和公有地址有什么区别&#xff1f; 总结 前言&#xff08;为了回答这个问题&#xff0c;有几件事需要理解。&#…

Proxmox VE (PVE) 教学 (1) | 介绍与安装

在?好久没更新了,最近在研究 pve,这不刚研究透彻,所以就先记录一下吧。最近我会集中推出关于 Proxmox VE 的系列文章,该部分将会在heStudio博客同步更新,欢迎订阅,当然你也可以订阅本专栏。 介绍 | Proxmox VE:强大而灵活的开源虚拟化平台 Proxmox Virtual Environme…

设计模式之创建型模式详解

设计模式 创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象&#xff0c;能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰&#xff0c;外界对于这些对象只需要知道它们共同的接口&#xff0c;而不清楚其具体的实现细节&#xff0…

森林保镖:了解森林防火杆!/恒峰智慧科技

在茂密的森林中&#xff0c;火势一旦失控&#xff0c;后果将不堪设想。为了保护森林资源和生态环境&#xff0c;森林防火工作显得尤为重要。而森林防火杆作为一种新型的森林防火设备&#xff0c;正逐渐成为森林防火的重要保障。本文将为您详细介绍森林防火杆的功能和特点。 一、…

SQL Server详细使用教程及常见问题解决

一&#xff1a;使用教程 SQL Server是**一个功能强大的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由Microsoft开发**。 以下是使用SQL Server的详细教程&#xff0c;包括安装、基本概念和操作&#xff1a; 1. **安装SQL Server**&#xff1a; - 访问微软官…

gitee / github 配置git, 实现免密码登录

文章目录 怎么配置公钥和私钥验证配置成功问题 怎么配置公钥和私钥 以下内容参考自 github ssh 配置&#xff0c;gitee的配置也是一样的&#xff1b; 粘贴以下文本&#xff0c;将示例中使用的电子邮件替换为 GitHub 电子邮件地址。 ssh-keygen -t ed25519 -C "your_emai…

分布式与微服务的区别

首先分布式是一种系统部署模式&#xff0c;将一个系统分成多个不分进行运行。而微服务架构是一种更加精细化的设计方法&#xff0c;它是分布式的一个分支&#xff0c;主要强调将一个单体应用拆分成一组小型松耦合的服务&#xff0c;每个服务专注于单一业务功能并能够独立部署和…

在Nuxt.js中添加PostCSS自动前缀器

在其他浏览器中&#xff0c;有些 CSS 属性需要带有前缀。如-webkit- | -o- | -ms- 等等 Autoprefixer 是一个 PostCSS 插件&#xff0c;可以将你的CSS代码渲染到浏览器中自动补充厂商前缀&#xff0c;因此你不用担心自己编写的CSS代码有浏览器兼容性问题。 如&#xff1a; .fl…

python输入输出特殊处理

输出 需要满足输出一行后&#xff0c;再输出一行&#xff0c;行中每个元素用空格隔开 length len(tri) tmp [] for i in range(len(tri)):tmp tri[i]for j in range(len(tri[i])):print(tmp[j],end )print()输入p 一次性输入6个数字到列表中&#xff0c;并且输入的每个数…

MATLAB初学者入门(10)—— 粒子群算法

粒子群优化&#xff08;Particle Swarm Optimization, PSO&#xff09;是一种基于群体协作的优化技术&#xff0c;它由社会行为模型&#xff08;如鸟群觅食行为&#xff09;启发而来。PSO 通过模拟一群粒子&#xff08;候选解&#xff09;在解空间中的移动来寻找最优解。每个粒…

线性代数 --- 矩阵的对角化以及矩阵的n次幂

矩阵的对角化以及矩阵的n次幂 &#xff08;特征向量与特征值的应用&#xff09; 在上一篇文章中&#xff0c;我记录了我所学习的矩阵的特征向量和特征值&#xff0c;所关注的是那些矩阵A作用于向量x后&#xff0c;方向不发生改变的x(仅有尺度的缩放)。线性代数 --- 特征值与特…

Golang | Leetcode Golang题解之第43题字符串相乘

题目&#xff1a; 题解&#xff1a; func multiply(num1 string, num2 string) string {if num1 "0" || num2 "0" {return "0"}m, n : len(num1), len(num2)ansArr : make([]int, m n)for i : m - 1; i > 0; i-- {x : int(num1[i]) - 0fo…

详解工业网关在线探测功能及用途

工业网关专为工业物联网应用设计&#xff0c;可实现包括不同通讯协议之间的兼容和转换&#xff0c;提供软硬件加密保障工业数据安全传输&#xff0c;发挥强大算力实现数据边缘预处理&#xff0c;联动联调工业网络设备实现高效协同等。在线探测功能是佰马工业网关的一项重要功能…

paddlepaddle-gpu安装

背景 之前安装paddlepaddle-gpu遇到各种问题&#xff0c;安装不成功&#xff0c;之前使用了wsldocker的方式&#xff0c;可查看我之前博客&#xff1a;记录paddlepaddle-gpu安装&#xff0c;这要会导致我整个开发流程比较割裂 cuda版本 强烈推荐cuda11.8&#xff0c;paddlep…