模拟内存计算如何解决边缘人工智能推理的功耗挑战

How analog in-memory computing can solve power challenges of edge AI inference

机器学习和深度学习已经成为我们生活中不可或缺的一部分。人工智能(AI)应用通过自然语言处理(NLP)、图像分类和目标检测深深地嵌入到我们使用的许多设备中。大多数人工智能应用程序都是通过基于云的引擎提供服务的,这些引擎对它们的用途很好,比如在Gmail中输入电子邮件响应时,可以得到单词预测。

虽然我们很享受这些人工智能应用的好处,但这种方法带来了隐私、功耗、延迟和成本挑战。如果有一个本地处理引擎能够在数据本身的原点执行部分或全部计算(推断),那么这些挑战就可以得到解决。这在传统的数字神经网络实现中很难做到,在传统的数字神经网络中,内存成为一个耗电的瓶颈。这个问题可以通过多级存储器和使用模拟内存计算方法来解决,这种方法使处理引擎能够满足在网络边缘执行人工智能推理所需的低得多的毫瓦到微瓦的功率要求。

云计算的挑战

当人工智能应用程序通过基于云的引擎提供服务时,用户必须(自愿或不情愿地)上传一些数据到云,在那里计算引擎处理数据,提供预测,并将预测发送到下游用户消费。

图1:从边缘到云的数据传输。

与此过程相关的挑战概述如下:

隐私和安全问题:对于始终在线、随时感知的设备,人们担心个人数据(和/或机密信息)在上传过程中或在数据中心的有效期内被滥用。

不必要的功耗:如果每一个数据位都将被云化,那么它将消耗来自硬件、无线电、传输以及可能在云中不需要的计算中消耗的能量。

小批量推断的延迟:如果数据源于边缘,有时可能需要一秒钟或更长时间才能从基于云的系统获得响应。对于人类的感官来说,任何超过100毫秒(ms)的延迟都是显而易见的,并且可能是令人讨厌的。

数据经济需要有意义:传感器无处不在,而且价格低廉;然而,它们产生了大量数据。将每一位数据上传到云端并进行处理是不经济的。

为了使用本地处理引擎解决这些挑战,执行推理操作的神经网络模型必须首先使用给定的数据集针对所需的用例进行训练。通常,这需要高计算(和内存)资源和浮点运算。因此,机器学习解决方案的训练部分仍然需要在公共或私有云(或本地GPU、CPU、FPGA场)上使用数据集来生成最优的神经网络模型。一旦神经网络模型准备好了,由于神经网络模型不需要反向传播来进行推理操作,因此可以用小型计算引擎进一步优化模型。推理机通常需要大量的乘法累加(MAC)引擎,然后是一个激活层,如整流线性单元(ReLU)、sigmoid或tanh,这取决于神经网络模型的复杂度,以及层与层之间的池层。

大多数神经网络模型需要大量的MAC操作。例如,即使是一个相对较小的“1.0 MobileNet-224”模型也有420万个参数(权重),并且需要5.69亿个MAC操作来执行推理。由于大多数模型都是由MAC操作控制的,这里的重点将放在机器学习计算的这一部分,并探索创建更好解决方案的机会。一个简单的,完全连接的两层网络如下图2所示。

图2:完全连接的两层神经网络。

输入神经元(数据)用第一层权值进行处理。第一层的输出神经元然后用第二层权重进行处理,并提供预测(比如,模型是否能够在给定的图像中找到猫的脸)。这些神经网络模型使用“a点积”来计算每一层中的每个神经元,如下式所示(为了简化,省略方程中的“偏差”项):

数字计算中的存储瓶颈

在数字神经网络实现中,权值和输入数据存储在DRAM/SRAM中。权重和输入数据需要转移到MAC引擎进行推理。如下面的图3所示,这种方法在获取模型参数和将数据输入到发生实际MAC操作的ALU时会消耗掉大部分的能量。

图3:机器学习计算中的内存瓶颈。(来源:Y.-H.Chen、J.Emer和V.Sze,“Eyeriss:卷积神经网络节能数据流的空间架构”,ISCA,2016年)

从能量的角度来看,一个典型的使用数字逻辑门的MAC操作消耗大约250飞秒焦耳(fJ,或10-15焦耳)的能量,但在数据传输过程中消耗的能量比计算本身多出两个数量级,并且在50微微焦耳(pJ,或10-12焦耳)到100pJ的范围内。公平地说,有许多设计技术可以最大限度地减少从内存到ALU的数据传输;但是,整个数字方案仍然受到Von Neumann架构的限制,因此这为减少功耗提供了很大的机会。如果执行MAC操作的能量可以从~100pJ减少到pJ的一小部分呢?

用模拟内存计算消除内存瓶颈

当内存本身可用于减少计算所需的功耗时,在边缘执行推理操作变得省电。使用内存计算方法可以最大限度地减少必须移动的数据量。这反过来又消除了数据传输过程中的能量浪费。能量消耗被进一步最小化使用闪光灯电池,它可以以超低的活动功耗工作,并且在待机模式下几乎没有能量消耗。

这种方法的一个例子就是memBrain™
技术来自硅存储技术公司,一家微芯片技术公司。基于SST的SuperFlash®内存技术,该解决方案包括内存计算架构,可在存储推理模型权重的位置进行计算。这消除了MAC计算中的内存瓶颈,因为权重没有数据移动,只有输入数据需要从输入传感器(如摄像机或麦克风)移动到内存阵列。

这种存储器的概念基于两个基本原理:(a)晶体管的模拟电流响应基于其阈值电压(Vt)和输入数据,以及(b)基尔霍夫电流定律,即在一个点上相遇的导体网络中电流的代数和为零。

同样重要的是要了解基本的非易失性存储器(NVM)位单元,它在这种多级存储器体系结构中使用。下图(图4)是带有共享擦除门(EG)和源线(SL)的两个ESF3(嵌入式超级闪存第三代)位单元的横截面。每个位单元有五个终端:控制门(CG)、工作线(WL)、擦除门(EG)、源线(SL)和位线(BL)。位单元上的擦除操作是通过在例如上施加高压来完成的。编程操作是通过在WL、CG、BL和SL上施加高/低压偏置信号来完成的。读取操作是通过在WL、CG、BL和SL上施加低压偏置信号来完成的。

图4:SuperFlash ESF3单元。

利用这种存储器结构,用户可以通过细粒度编程操作在不同的Vt级别上对存储器位单元进行编程。该存储技术利用一种智能算法来调整存储单元的浮栅(FG)Vt,以实现输入电压的特定电流响应。根据终端应用的要求,电池可编程为线性或亚阈值工作区。

图5演示了在内存单元上存储和读取多个级别的能力。假设我们试图在内存单元中存储2位整数值。对于这个场景,我们需要用2位整数值(00、01、10、11)中的四个可能值之一对内存数组中的每个单元进行编程。下面的四条曲线是四种可能状态中的每一种的IV曲线,电池的电流响应取决于施加在CG上的电压。

图5:ESF3单元中的Vt电平编程。

带内存计算的乘法累加运算

每个ESF3细胞都可以被建模为可变电导(gm)。ESF3电池的电导取决于编程单元的浮栅电压。将训练模型的权值编程为存储单元的浮栅Vt,因此,单元的gm表示训练模型的权重。当输入电压(Vin)施加在ESF3电池上时,输出电流(Iout)将由方程式Iout=gm*Vin给出,这是输入电压与存储在ESF3电池上的重量之间的乘法运算。

在下面的图中,从阵列i2(例如)中,通过累加(i)列的方式(例如,i 2)将从阵列中进行的乘法运算(i 2)被连接到一个小的阵列中(例如)进行乘法运算(i 2)。根据应用,激活功能可以在ADC块内执行,也可以在存储器块外部用数字实现来实现。

图6:使用ESF3数组(2×2)进行乘法累加运算。

为了在更高的层次上进一步说明这一概念,来自训练模型的单个权重被编程为存储单元的浮栅Vt,因此来自训练模型每一层的所有权重(假设一个完全连接的层)都可以被编程到一个物理上看起来像权重矩阵的内存阵列上,如图7所示。

图7. 用于推理的权重矩阵内存数组。

对于推理操作,首先使用数模转换器(DAC)将数字输入(比如图像像素)转换为模拟信号并应用于存储器阵列。然后,该阵列对给定的输入向量并行执行数千个MAC操作,并产生输出,这些输出可以进入各个神经元的激活阶段,然后可以使用模数转换器(ADC)将其转换回数字信号。然后,数字信号在进入下一层之前被处理为池。

这种类型的内存结构非常模块化和灵活。许多memBrain瓦片可以缝合在一起,用权重矩阵和神经元混合构建各种大模型,如图8所示。在这个例子中,一个3×4的磁贴配置被缝合在一起,并且数据可以通过共享总线从一个磁贴移动到另一个磁贴。

图8:memBrain™ 是模块化的。

到目前为止,我们主要讨论了这种架构的硅实现。软件开发工具包(SDK)(图9)的可用性有助于解决方案的部署。除了硅之外,SDK还有助于推理引擎的部署。

SDK流与培训框架无关。用户可以在任何可用的框架中创建神经网络模型,如TensorFlow、Pythorch或其他框架,根据需要使用浮点计算。一旦建立了一个模型,SDK将帮助量化训练过的神经网络模型,并将其映射到内存阵列中,在那里可以使用来自传感器或计算机的输入向量执行向量矩阵乘法。

结论

这种多级内存方法及其内存计算能力的优点包括:

极低功耗:该技术专为低功耗应用而设计。第一级功耗优势来自于这样一个事实,即解决方案是内存计算,因此在计算过程中,SRAM/DRAM的数据和权重传输不会浪费能量。第二个能量优势源于这样一个事实:闪光电池在亚阈值模式下工作,电流值非常低,所以有源功耗非常低。第三个优点是,在待机模式下几乎没有能量消耗,因为非易失性存储单元不需要任何电源来保存数据,以备永远在线。该方法也非常适合于利用权重和输入数据的稀疏性。如果输入数据或权重为零,则内存位单元不会被激活。

较低的封装尺寸:该技术使用分离门(1.5T)单元架构,而数字实现中的SRAM单元基于6T架构。此外,与6T SRAM单元相比,该单元是更小的比特单元。另外,一个单元单元可以存储整个4位整数值,而SRAM单元需要4×6=24个晶体管来存储。这提供了一个大大更小的片上占用空间。

较低的开发成本:由于内存性能瓶颈和von Neumann架构的限制,许多专用设备(如Nvidia的Jetsen或Google的TPU)倾向于使用更小的几何结构来获得每瓦的性能,这是解决边缘人工智能计算挑战的一种昂贵方法。随着使用模拟内存计算方法的多级存储器方法,计算在闪存单元中在芯片上进行,因此可以使用更大的几何结构,并减少掩模成本和交付周期。

边缘计算应用前景广阔。然而,在边缘计算能够起飞之前,还需要解决电力和成本方面的挑战。一个主要的障碍可以通过使用在flash单元中执行片上计算的存储器方法来消除。这种方法利用了一种经过生产验证、事实上是标准类型的多级内存技术解决方案,该解决方案针对机器学习应用程序进行了优化。

模拟内存计算如何解决边缘人工智能推理的功耗挑战相关推荐

  1. 中兴通讯能制造服务器吗,中兴通讯发布边缘计算服务器 实现边缘人工智能

    2019年世界移动大会期间,中兴通讯发布了ES600S MEC服务器,该款服务器搭载英特尔? 至强? Scalable processor,配合AI加速卡,使其在边缘侧具备很强的神经网络推理能力. 随 ...

  2. 什么是边缘人工智能和边缘计算?两者有什么联系?

    什么是边缘人工智能和边缘计算? 边缘人工智能是人工智能中最引人注目的新领域之一,它旨在让人们运行人工智能流程,而不必担心隐私或因数据传输而导致的减速.边缘人工智能正在实现更广泛.更广泛地使用人工智能, ...

  3. 计算机上没有足够的可用内存无法完成扫描,windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足解决方法...

    win7查看照片显示内存不足怎么办呢?有用户使用win7照片查看器打开图片时提示:windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足.但是电脑硬件配置足够高,内存也不小,那么遇到这 ...

  4. 基于人工智能推理的英特尔® 精选解决方案

    企业日益希望借助人工智能(AI)增加收入,提高效率和推动产品创新.尤其需要指出的是,基于深度学习(DL)的 AI 用例带来了最实用.最深刻的洞察,其中一些用例可 推动多个行业的进步,如: •图像分类, ...

  5. 边缘人工智能芯片大放异彩

    相信每个人者可能都经历过这样一种挫败感--当你拿起手机调出语音转文字功能口述一封邮件时,却发现手机并未联网,无法使用这一功能.现在,随着新一代边缘人工智能芯片的问世,人工智能可直接嵌入各类设备当中,将 ...

  6. SuperEdge再添国产智能加速卡支持,为边缘智能推理再提速10倍

    作者 寒武纪AE团队,腾讯云容器中心边缘计算团队,SuperEdge 开发者 SuperEdge 支持国产智能加速卡寒武纪 MLU220 SuperEdge 对应的商业产品 TKE Edge 也一直在 ...

  7. NS-CIM:一种电流模式的内存计算架构,支持智能物联网视觉节点的近传感器处理

    摘要: 近年来,神经网络(NNs)在创新应用方面呈现出巨大的潜力.然而,能源效率仍然是一个挑战,在边缘部署的神经网络.在这种情况下,内存计算(CIM)架构成为节能硬件设计领域的一个新兴趋势,因为它显著 ...

  8. 【边缘计算】对边缘计算的理解与思考

    来源:边缘计算社区 在2019年第三届边缘计算技术研讨会上华为高级产业发展经理.ECC需求与总体组副主席黄还青发表了<ECC及华为在边缘计算领域的思考与实践>主题演讲,本文为黄还青演讲中对 ...

  9. 模型计算算力_8核人工智能开源主板_基于 BITMAIN AI 计算模组_3.5寸

    模型计算算力_8核人工智能开源主板_基于 BITMAIN AI 计算模组_3.5寸 产品概述 产品特点 1. 超高性能,超低功耗 2.体积小,接口丰富,灵活扩展 3.开发环境友好,工具链完备 应用场景 ...

最新文章

  1. CV_8UCV_32FCV_32S
  2. SQL Server 判断数据库是否存在,表是否存在
  3. zoj 3812 状压dp
  4. ubuntu系统使用Anaconda安装tensorflow-gpu环境
  5. iview日期控件,双向绑定日期格式
  6. 论文浅尝 | 基于置信度的知识图谱表示学习框架
  7. Swift中文教程(五)控制流
  8. 区块链和加密货币产业_区块链:不仅仅用于加密货币
  9. SQL 中操作XML类型数据
  10. TCP详解——连接建立与断开
  11. border-box
  12. 图表中如何实现动态变更分类轴与系列值
  13. 8.深入分布式缓存:从原理到实践 --- 分布式Redis
  14. Chrome插件 - FireShot捕捉网页截图(可截取完整页面)
  15. ArcMap无法启动解决方法
  16. 成都传智播客七月开班。你HOLD住了吗?
  17. 日系IP的五大“坑”
  18. Shiro自定义Ream
  19. android设备连接电脑无需授权
  20. 多可文档管理系统,我的文档是什么?

热门文章

  1. 2022-2028年中国机制砂石行业投资分析及前景预测报告
  2. 2022-2028年中国新型氟塑料行业市场发展模式及投资机会预测报告
  3. C++ 笔记(30)— 友元函数与友元类
  4. flask 学习实战项目实例
  5. linux环境下快速配置hadoop集群免密登录
  6. Java基本数据之间的类型转换
  7. TVM yolov3优化代码修改(编译运行OK)
  8. AICompiler动态shape编译框架
  9. python可视化来分析全国疫情
  10. Ubuntu 系统 查看代码的方法在那些地方使用