面向物联网的可重构流式深度卷积神经网络加速器
摘要
卷积神经网络(CNN)在图像检测中具有显著的准确性。为了在物联网设备中使用CNN实现图像检测,提出了一种流媒体硬件加速器。建议的加速器通过避免不必要的数据移动来优化能效。利用独特的滤波器分解技术,加速器可以支持任意卷积窗口大小。此外,通过使用单独的池单元,最大池函数可以与卷积并行计算,从而提高吞吐量。台积电65nm技术实现了一个加速器原型,核心尺寸为5mm2。该加速器可以支持主要的CNN,并在350mW时实现152GOPS峰值吞吐量和434GOPS/W能效,使其成为智能物联网设备的一个有前途的硬件加速器。
Index Terms—Convolution Neural Network, Deep Learning, Hardware
Accelerator, IoT(卷积神经网络,深度学习,硬件加速器,物联网)
一、导言
机器学习在物联网设备中提供了许多创新应用,如人脸识别、智能安全和目标检测。最先进的机器学习计算主要依赖于云服务器。得益于图形处理单元(GPU)强大的计算能力,云可以处理来自设备的高通量视频数据,并使用CNN在大多数人工智能应用程序上实现前所未有的准确性。然而,这种方法也有自己的缺点。由于网络连接对于基于云的人工智能应用程序是必要的,这些应用程序不能在没有网络覆盖的区域运行。此外,通过网络传输数据会导致显著的延迟,这对于安全系统等实时人工智能应用来说是不可接受的。最后,大多数物联网应用的功耗和成本预算都很高,既不能容忍本地GPU解决方案,也不能向数据中心服务器传输大量图像和音频数据。
为了应对这些挑战,提出了一种本地化的人工智能处理方案。本地化人工智能处理方案的目标是在客户端对采集到的数据进行处理,在不接入通信网络的情况下完成整个人工智能计算。
通常,这是通过本地GPU或DSP完成的。导致有限的计算能力和相对较大的功耗,使得不适合在功率有限的物联网设备上运行计算密集型神经网络,如CNN。在物联网设备内设计一个专用的CNN加速器至关重要,该加速器能够以最小的功耗支持高性能人工智能计算。在神经网络加速方面,一些已报告的工作专注于提供一种计算通用神经网络的体系结构。例如,通过对神经网络进行适当的修剪,提出了一种基于神经网络稀疏性的高效硬件结构。在不考虑参数重用的情况下,计算完全连通的深层神经网络是一种更通用的体系结构。相反,CNN有其独特的功能,即在扫描过程中,过滤器的权重将在整个图像中大量重复使用。得益于这一功能,许多专用CNN硬件加速器被报告。大多数报告的CNN加速器只关注于加速卷积部分,忽略了池函数的实现,这是CNN网络中的一个常见层。
演示了一个CNN硬件加速器,使用了一个带有168个处理元素的空间架构。报告了另一种具有循环展开优化的卷积加速器。由于这些加速器中没有实现池功能,卷积结果必须传输到CPU/GPU以运行池功能,反馈给加速器以计算下一层。这种数据移动不仅消耗大量功耗,而且还限制了整体性能。另一方面,一些工作报告了高度可配置的神经网络处理器,但需要复杂的数据流控制。增加了物联网设备的硬件开销。例如,报告了一个CNN处理器在65nm CMOS技术中占据了16 mm2的硅面积,对于低成本的物联网芯片来说是不可容忍的。此外,最近的一些报告,建议使用忆阻器为CNN执行神经形态计算。然而,目前在大型CMOS铸造厂中,忆阻器的制造仍然不受支持。因此,这种架构很难嵌入物联网芯片。
提出了一种新的流媒体硬件架构,用于在物联网平台上进行CNN推理,假设CNN模型经过预训练。专注于优化数据移动流,以最小化数据访问并实现计算的高能效。本文还提出了一种新的方法,将大型核计算分解为多个并行的小型核计算。结合集成池功能,提出的加速器架构,可以支持完成的一站式CNN加速,包括任意大小的卷积和可重构池。本文的主要贡献包括:
1.CNN加速器设计,使用流式数据流实现最佳能效。
2.一种交错结构,能够在不增加SRAM输入带宽的情况下,对多个输出特性进行并行计算。
3.一种将大型滤波器计算分解为多个小型滤波器计算的方法,在不增加额外硬件代价的情况下实现高可重构性。
4.一个辅助池块,在主机为CNN计算服务时支持池功能。
5.通过FPGA验证的原型设计,可实现152个GOPS的峰值性能和434个GOPS/W的能效。
论文的结构如下。
在第二节中,首先介绍构成CNN的主要层。在第三节中,将介绍系统的总体架构。在第四节中,将讨论所提出的流式体系结构,以实现高效率的卷积计算、提供可重构性的滤波器分解技术和池化实现。第五部分介绍了关键模块的设计。第六部分报告了实验结果,第七部分得出了结论。
二、层描述
最先进的CNN网络(如AlexNet、VGG-18等),主要由三个典型层组成:卷积层、池层和分类层。卷积层构成了神经网络的大部分,在两个卷积层之间插入池层,以实现中间数据大小的缩减和非线性映射。分类层通常是CNN的最后一层,不需要大量计算。假设分类层可以通过软件计算实现,不会在硬件加速器中实现。下面的小节将详细解释卷积层和池层的功能。
A.卷积层
卷积层的主要作用是应用卷积函数将输入(上一)层的图像映射到下一层。因为每个输入层可以有多个输入特征(后面称为通道),所以卷积是3D的。与常规卷积不同的是,神经网络中的卷积是通过在每个单独的输入通道中形成一个区域滤波器窗口,实现本地化的,常规卷积需要整个输入数据来生成一个输出数据。这组区域过滤器窗口被视为一个过滤器。输出数据通过计算滤波器权重的内积和滤波器覆盖的输入数据获得。通过使用卷积滤波器扫描输入通道,可以获得输出特征。使用不同的过滤器可以计算多个输出特征。将在每个最终过滤结果中添加单独的偏差权重。该函数的算术表示如(1)所示。
在这里