人工智能正在成为数十亿边缘物联网(IOT)设备中的常客,然而,数据移动的瓶颈限制了这些系统的性能和自主性。内存处理(PIM)则是一种缓解数据移动瓶颈的方法,能在解决问题的同时,满足边缘成像应用对性能、能效和精度的严格要求。
增长的人工智能边缘处理需求
互联网的全球化引发了一场计算机架构的革命。具体来说,现在的智能手机、平板电脑及其他智能设备都接入了物联网,这些设备通过互联网与人工智能相互连接,进而形成了广域网。
在个人计算、教育、工业、军事、医疗保健、数字农业等各个领域都能见到广域网与物联网的应用,如图1所示,互联网将世界上这数十亿的设备集合在了一起。
图1
智能设备的这种集成带来了前所未有的挑战,为了处理繁复且每天都在不断增加的数据,人们需要成本更低廉的计算和通信方法与设备。
此外,数据流通常是双向的,不仅从物理世界到网络世界,而且从网络世界到可能的物理世界。实现这一愿景需要物联网设备与人工智能相配合。
目前最有前途的方法是通过使用机器学习(ML)算法,通过吸收大量数据,赋予系统从经验中自主学习的能力,特别关注深度学习和图像推理。
2020年一年内,人们创建、复制和消费的数字数据总量已超过数十zb,国际数据公司估计,这一数字将在未来几年增长到数百zb。2019的新冠疫情大流行,普及了居家办公,这使得视频会议和流媒体数据的突然增加,进而推动了网络数据的增长。
在完全依赖于智能手机和嵌入式系统的任务执行中,这些数据的增加给计算和存储系统带来了越来越大的压力。
边缘计算作为可持续人工智能扩展的推动者的想法受到重视,因为就现代数字系统生成理论来说,它相当大一部分数据来自位于边缘的传感器,在这种范式下,算法在数据生成的地方就会开始,如图2所示。
图2
与传统方法相反,随着云边缘层次的出现,AI移动到边缘层,如图所示。这种新模式为边缘处理节点上更密集的计算带来了压力,但它也减少了与云通信所花费的时间和精力,并引入了数据隐私和延迟优势。
随着数据生成的增长和人工智能应用需求的增长,数据的处理要求逐渐向五个主题靠拢,而人工智能的边缘算法流行恰好迎合了这五个主题。
第一个发展主题是低延迟。许多应用程序具有交互特性,因此不能承受长时间的延迟,特别是对于内存、存储和网络请求。
第二个主题是可靠性。通信网络不是在任何地方、任何时候都可靠的。为了确保最大的正常运行时间,基于人工智能的决策必须不依赖于通畅的通信网络。
第三个主题是隐私和安全。一些应用程序要求将敏感数据保存在受控的本地环境中,避免其与云之间的循环,例如医疗、金融或自动驾驶等。
第四个主题是低带宽。在收集地附近处理的数据不需要发送到云,这减少了网络和边缘计算系统的总体带宽需求。
第五个是数据来源正规性。数据的来源正规性可能会影响数据分析效率,阻碍其在远离产生地的地方进行处理。数据中心存储则可能需要遵守区域数据保护立法,例如欧洲的通用数据保护条例(GDPR)和加拿大的个人信息保护法(PIPA)。
为了实现这些目标,计算机架构师和软件开发人员必须合理利用云端与边缘系统,实现云端与边缘系统结合的整体愿景,通过在生成和存储数据的地方处理数据,将组件之间不必要的数据移动降到最低,因为这是数据迁移与内存处理主要的性能和能源瓶颈。
人工智能边缘算法与数据转移瓶颈
目前,神经网络被广泛应用于许多领域,并正在成为其他新兴应用的组成部分,如自动驾驶汽车、永远在线的生物信号监测、增强和虚拟现实、关键物联网和语音通信,所有这些都需要人工智能算法在大量数据上运行,如图3所示。
图3
与人类相比,支持这些新兴应用程序的系统需要能够更快、更好地做出决策,不仅如此,它们还需要考虑不断增加的训练和推理数据量,以此来支持对决策的持续微调。cnn就是一种基于图像的决策任务的标准系统。
这些模型大量使用卷积和乘法累加(MAC)操作,卷积算法成本很大,能占算法程序总成本的90%以上,出于这个原因,最先进的神经网络加速器通常都专注于MAC操作,优化它们的性能和能源效率。
典型的cnn由数亿个参数组成,需要每秒执行数十亿次操作才能实现实时性能。
随着精度的提高,cnn包含更多的参数和层,变得更宽更深,它也能提供量化的紧凑数据,简化表复杂的网络体系结构,降低表示成本,并允许高度的数据传输并行性和数据重用,这在受约束的处理环境中特别有用。
数据量化会减小模型权值的位宽,从而显著降低神经网络的计算量和存储需求。然而,在保持准确性的同时,将这些值量化到小于8位,则需要人工努力、超参数调优和密集的再培训,边缘算法能很好地解决这类问题。
虽然机器训练需要高动态范围,但对于边缘算法来说,在大多数情况下,2位到4位的精度就可以达到日常所需。如果精度水平更进一步,那么二元神经网络甚至可以通过二值化其输入、权重来近似cnn。
在许多实际设置中,特别是在边缘计算领域中,二元神经网络的性能和能效优势超过了精度损失。二进制神经网络的另一个好处是,通过结合更有效的逐位XNOR和位计数操作,能够近似cnn所需的卷积操作。
图4展示了从数据中心服务器到物联网节点等一系列设备上,现有的五种广泛使用的CNN模型,以及他们的内存和处理需求。该表显示了所有网络的参数数量和MAC操作。W/A表示每个量化级别的权值和激活值的位宽度。所有的网络都有224 × 224的输入分辨率。
图4
这些设备是都利用了大量神经网络算法,以此来拟合边缘节点,即根据运行模型所需的内存。它们的大小含义为权重机激活位宽度32位,2位,1位的函数,以及每个网络使用的MAC操作的数量。
专业化是高性能人工智能的推动者。现代深度学习算法具有大量的计算、内存和能量需求,这使得它们在边缘设备上的实现具有挑战性。机器学习算法的两个独特特征或许能够解决这一挑战。
首先,每一类深度学习算法都依赖于一组有限的专门操作,其次,在许多情况下,即使在使用低位宽操作时,这些算法也能提供很好的精度。
近年来,针对神经网络模型的高级描述与其底层硬件映射,一些框架会通过使用专门的指令,帮助弥合二者间的语义差距。这种专门指令以批量并行方式执行操作,最小化内存访问和最大化计算资源利用率,从而实现算法目标。
构建以数据为中心的高效人工智能边缘算法
纵观现有的人工智能相关研究,高效的边缘人工智能兼具高准确性、大吞吐量与低延迟这三种显著特点。
在准确性方面,图像分类、目标检测、句子生成、翻译等人工智能任务的成功率很高。
而吞吐量衡量的是计算机对输入数据的处理速度。对于需要提供实时视频功能的应用程序来说,它们所搭载的人工智能应用程序必须维持每秒数千FPS帧数的处理速率。
例如,自动驾驶汽车处理速度为2,300FPS,超声波医疗设备数据处理速度为数百至数千FPS。
算法的延迟与输入元件有关,算法处理单个输入元件的关键路径决定了延迟度。而5G标准中,定位和跟踪系统的最大延迟标准为1毫秒,自动驾驶汽车必须提供相同数量级的延迟。边缘人工智能算法能够满足这样高速标准。
除此之外,算法系统中动力与能量也很重要。大多数支持边缘计算的设备都是电池供电的,所以,如何最大限度地延长电池寿命,对设计人员来说是一个关键的目标。作为参考,自动驾驶汽车的计算系统需要高达2.5kW的电源。
高效边缘人工智能需要的数据精度也有所降低。人工智能数据不再总是需要用64位或32位精度。对很多人来说,8位,甚至更少的整数精度都足够日常使用了。
进一步来说,高效的边缘人工智能改变了传统计算模式。20世纪末和21世纪初,以处理器为中心的计算模型得到了广泛的应用。在传统计算模型中,程序和数据存储在内存中,而数据处理则在专门的alu(算术逻辑单元)中进行。
随着摩尔定律的引入,缓存、分支预测器、乱序执行、多线程以及其他一些硬件和软件优化,在过去几十年中,边缘算法实现了一系列稳定且基本不受影响的性能改进。
相比之下,存储系统的改进速度要慢得多。处理器和内存系统之间出现了裂痕,这种性能差距导致了一个难以忽视的数据移动瓶颈,也就是人们常说的内存墙。
在现代计算系统中,内存决定了计算系统的主要性能,也影响着数据传输瓶颈。在延迟和性能方面,数据移动比计算本身要昂贵得多。随着连接到互联网的智能设备的数量继续增长,数据移动瓶颈将继续存在,现在已经达到数十亿的规模。
为了合理解决数据移动瓶颈问题,许多人都提出了自己的见解。
到目前为止,最受欢迎与承认的解决方式是,在数据被存储的地方处理数据,即数据内存的边缘算法。随着对边缘推理需求的增长,访问数据的效率变得越来越重要。这种方案的提出,有可能能够改变现有的数据分析模式,克服跨时间和物理局部性的难题。
数据内存边缘算法引入了神经网络拓扑,并对其采用量化的形式进行了优化。同时还考虑了专用硬件,引入专用的矢量化指令,以用于解决这些特殊工作负载的需求与PiM体系结构。
在边缘执行时,PIM可以为人工智能应用程序提供更高的吞吐量,而不会影响设备的自主性。PIM解决方案与传统内存优化优化的主要区别在于,内存边缘算法会更接近数据。
处理-使用-内存(PUM)模式利用存储介质的物理特性来执行计算,例如,ReRAM(电阻式随机存取存储器)或DRAM(动态随机存取存储器)单元。
相反,在处理-近内存(PnM)范式中,数据的存储地就可以开始算法程序,但在不同的介质中,边缘算法的具体应用层有会有所区别,例如,在3d堆叠存储器中,边缘算法会在逻辑层中进行。
3d堆叠存储器是一种新兴的存储器架构,它可以在逻辑层的顶部垂直堆叠存储器层,而逻辑层可以被设计成支持多种操作的硬件,这样就可以实现内存单元内的计算。
同是边缘算法的DRAM技术则特别适合位操作,这项技术优化了内部位线,相邻的存储器可以以此实现高效相互通信。Ambit21就是在DRAM的模拟操作上,实现了批量多位数、AND、OR与NOT功能,这些操作的组合有助于应用程序的整体开发。
Ambit在执行批量位操作时,可以将性能提高30到45倍,将能耗降低25到60倍,从而使数据库查询的总体速度提高4到12倍。基于DRAM的PUM架构PLUTO5则利用了批量查找机制,扩展了PUM的灵活性和性能。
查找功能可以完全在DRAM子阵列内进行,因此不需要将数据移出芯片,从而实现任意复杂的函数查找与激活)同时最大限度地减少数据的总体移动。
与CPU执行相比,PLUTO的性能提高了33倍,能耗降低了110倍。
人工智能的边缘算法通过更直接的计算,可以大大减少数据的整体移动,从而提高延迟、吞吐量和能源效率,这为未来的超级计算机发展也提供了帮助。