AI算法加速芯片编译器及模型评估器的设计和研究文献综述

 2022-11-23 23:15:26

近年来,深度神经网络(deep neural network,DNN)已成功应用于诸多领域[1],特别是计算机视觉领域,卷积神经网络( convolutional neural networks,CNN) 的表现已远超其他算法。然而准确性越高就意味着网络越复杂,现代CNN可能包含数百万浮点参数,而识别单张图片就需要数十亿次浮点运算,例如VGG—16[2]。如此大量的计算,得益于计算平台的硬件架构更新迭代,计算能力的提高[3],尤其是图形处理单元(graphical processing unit,GPU)的快速发展。

使用卷积神经网络(CNN)进行的深度学习还在许多现代AI应用中已经实现了前所未有的准确性[4]–[11]。但是,最新的CNN在一次推理过程中就需要数十亿次操作,需要数十到数百兆字节的参数,从而在芯片上和芯片外创建了大量数据来支持计算。由于数据移动可能比计算[12],[13]更加耗能,因此CNN的处理不仅必须为高吞吐量提供高并行度,而且还必须为整个系统的数据移动进行优化以实现高能量效率。

并且随着研究的进展,浮点型CNN的结构越来越复杂,一方面增加了训练难度,另一方面,大量的网络参数使得CNN的应用效率低、功耗大。而有研究表明[14],浮点型CNN的迭代训练是有冗余的,降低计算精度的同时依然能保证较高的准确性,基于这一特点,在现场可编程门阵列(field programmable gate array,FPGA)上实现CNN成为了可能。

此外,为实现高能量效率还需要适应CNN中高维卷积的各种形状。为解决这些挑战,设计一种称为数据流的计算方案至关重要,该方案可以在优化CNN时支持高度并行的计算范例片内和片外数据移动的能源成本。通过利用多级内存层次结构中的数据重用来减少数据移动的成本,并且硬件需要可重新配置以支持不同的形状。为了进一步提高能源效率,还可以利用数据统计。具体来说,CNN数据包含许多零。可以应用诸如压缩和数据自适应处理之类的技术来节省内存带宽和处理能力。

而机器学习在物联网设备中也提供了许多创新应用程序,例如人脸识别,智能安检和物体检测[15-17]。目前技术水平的机器学习计算主要依赖于云服务器[18-19]。得益于图形处理单元(GPU)的强大计算能力,云可以处理来自设备的高吞吐量视频数据,并使用CNN在大多数AI应用程序上实现前所未有的准确性[20]。但是,这种方法有其自身的缺点。由于基于云的AI应用程序必须联网,因此这些应用程序无法在没有网络覆盖的地区中运行。此外,通过网络进行的数据传输会导致明显的延迟,这对于实时AI应用程序(例如安检系统)是不可接受的。最后,大多数物联网应用程序具有强大的功耗和成本预算,既不能容忍本地GPU解决方案,也不能将大量图像和音频数据传输到数据中心服务器[21]。

先前的工作提出了用于CNN加速的硬件设计[22]–[32]。但是,它们中的大多数仅具有仿真结果,未经制造的芯片的测量结果验证。使用FPGA的实现也没有揭示架构的实际速率和能效。一些努力已经证明了制造芯片的测量结果[33]–[35]。但是,这些作品并未使用广泛使用的公共可用的最新CNN对其基准进行基准测试,这对于硬件评估至关重要。具体来说,Park等人[33]提出了一种用于使用MIMD架构同时运行训练和推理的深度学习处理器,该处理器已在使用5times;5滤波器的定制四层网络上进行了测试。 Cavigelli等人[34]提出了一种用于推理的CNN加速器,该加速器使用7times;7滤波器在四层CNN上进行了测试。Sim等人[35]演示了CNN处理器,并且只报告了理论峰值吞吐量以及在MNIST数据集[36]上在CNN上测得的功率,该数据集的存储和计算要求比当前先进的CNN低几个数量级。除了[34],这些工作没有报告所提出的计算方案所需的DRAM带宽。仅凭处理器能力是不够的,因为DRAM的访问是决定系统能效的最重要因素之一。

为了解决这些挑战,提出了一种本地化的AI处理方案。本地化AI处理方案旨在在客户端处理获取的数据,并在没有通信网络访问的情况下完成整个AI计算。传统上,这是通过本地GPU或DSP完成的。但是,这导致了计算能力有限和相对较大的功耗,使其不适合在功率受限的物联网设备上运行诸如CNN之类的计算密集型神经网络[37]。因此,至关重要的是在物联网设备内部设计专用的CNN加速器,以支持用最小的功耗实现高性能AI计算。一些已经报道的在神经网络加速方面的工作集中在提供用于计算通用神经网络的体系结构上。例如,在[38]中,基于通过适当修剪网络的神经网络的稀疏性提出了一种有效的硬件架构。但是,在不考虑参数重用的情况下,这是一种更通用的体系结构去计算完全连接的深度神经网络。相反,CNN具有其独特的功能,即滤波器的权重将在扫描期间在每个图像中大量重复使用。受益于此功能,许多专用的CNN硬件加速器被报道在[39-41]中。大多数被报道的CNN加速器只专注于加速卷积部分,而忽略了池化功能的实现,而池化功能是CNN网络中的常见层。在[39]中,展示了使用具有168个处理元素的空间架构的CNN硬件加速器。在[40]中,报道了另一种具有循环展开优化的专用卷积加速器。由于在那些加速器中未实现池化功能,因此卷积结果必须传输到CPU/GPU以运行池化功能,然后反馈给加速器以计算下一层。这种数据移动不仅消耗大量功率,而且限制了整体性能。另一方面,一些工作报告了高度可配置的神经网络处理器,但是它们需要复杂的数据流控制。这增加了物联网设备的硬件开销。例如,[41]中报道了一种采用65nm CMOS技术的CNN处理器,占用16平方毫米的硅面积,这对于低成本物联网芯片来说是无法忍受的。此外,最近的一些报道,例如[42],建议使用忆阻器对CNN进行神经形态计算。然而,忆阻器的制造在主要的CMOS铸造厂中目前仍不支持 [43]。因此,这种架构很难嵌入到物联网芯片中。

在成为机器视觉等AI领域最先进的算法时,CNN面临着应对不断增加的复杂性的挑战。这就导致了更深层,更具表现力的网络的设计,但是却增加了计算和内存需求。

有一些软件库和框架已被开发用于通过CNN的快速开发和高性能执行来促进深度学习社区。诸如Caffe1,Torch2和Theano3以及最近的Caffe2 4,PyTorch5,TensorFlow6,MXNet7,CoreML8,CNTK9和TensorRT10之类的工具流程旨在通过提供高级API以及在高性能的耗电的多核CPU,GPU和DSP或专用ASIC上的执行模型来提高CNN开发人员的生产力。在这种情况下,FPGA成为有希望的替代目标平台,可以弥补耗电的可编程架构与固定功能的节能ASIC之间的鸿沟。FPGA的重新配置功能可以允许生成CNN的高性能,低功耗硬件映射,可以将其配置为满足系统级要求,例如从嵌入式系统到数据中心的各种环境中的吞吐量、延迟和功耗。[44]

为了包含硬件多样性,重要的是将计算有效地映射到深度学习(DL)硬件。在通用硬件上,高度优化的线性代数库,例如基本线性代数子程序(BLAS)库(例如MKL和cuBLAS),是有效计算DL模型的基础。以卷积运算为例,DL框架将卷积转换为矩阵乘法,然后在BLAS库中调用GEMM函数。此外,硬件供应商还发布了专门针对DL计算量身定制的优化库(例如MKL-DNN和cuDNN),包括正向和反向卷积,池化,规范化和激活。还开发了更高级的工具来进一步加快DL操作的速度。例如,TensorRT支持图形优化(例如,层融合)和具有大量高度优化的GPU内核的低位量化。在专用的DL硬件上,还提供了类似的库。但是,依赖库的缺点是它们通常落后于DL模型的快速开发,因此无法有效利用DL芯片。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版