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

server/2024/10/18 7:55:52/
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/server/7505.html

相关文章

如何使用自定义Promptbooks优化您的安全工作流程

在当今的数字化时代,安全工作流程的优化变得前所未有的重要。安全团队需要快速、有效地响应安全事件,以保护组织的数据和资产。Microsoft Copilot for Security提供了一种强大的工具——自定义Promptbooks,它可以帮助安全专家通过自动化和定制…

类声明是public类型的变量如何赋值

在面向对象编程(如Java、C#、PHP等语言)中,类声明为public类型的变量是类的成员变量,也称为属性或字段。这些变量可以在类内部、构造函数中、或者从类外部通过实例化对象来赋值。以下是一些基本的赋值方式: 在类内部赋…

利用 Python 开发手机 App 实战

Python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用Python开发的app应当是作为编码练习、或者自娱自乐所用,加上目前这方面的模块还不是特别成熟,bug比较多,总而言之,劝君莫轻入。 准备工作 …

基于SpringBoot + Vue实现的医护人员排(值)班系统设计与实现+毕业论文+开题报告

项目介绍 本医护人员排班系统包括管理员,医护。 管理员功能有个人中心,医院信息管理,医护信息管理,医护类型管理,排班信息管理,排班类型管理,科室信息管理,投诉信息管理。 医护人员…

python3如何提取汉字

采用正则表达式的方法对字符串进行处理。 str1 "{我%$是,《速$.度\发》中 /国、人"(1)提取汉字 汉字的范围为”\u4e00-\u9fa5“,这个是用Unicode表示的。 import re res1 .join(re.findall([\u4e00-\u9fa…

第3章 决策树

决策树经常处理分类问题,近来的调查表明决策树也是经常使用的数据挖掘算法。 决策树的流程图: 长方形代表判断模块(decision block),椭圆形代表中止模块(terminating block),表示已经得出结论,可以中止运行。 从判断模块引出左右箭…

算法训练营第44天|完全背包 LeetCode 518.零钱兑换Ⅱ 337.组合总和Ⅱ

完全背包 题目链接&#xff1a; 完全背包 代码&#xff1a; #include<iostream> #include<vector> using namespace std;void test(vector<int>weight,vector<int>value,int bagweight){vector<int>dp(bagweight1,0);for(int i0;i<weight.…

微信小程序实现预约生成二维码

业务需求&#xff1a;点击预约按钮即可生成二维码凭码入校参观~ 一.创建页面 如下是博主自己写的wxml&#xff1a; <swiper indicator-dots indicator-color"white" indicator-active-color"blue" autoplay interval"2000" circular > &…