完全硬件实现的忆阻器卷积神经网络

完全硬件实现的忆阻器卷积神经网络(CNNs)

原文标题:Fully hardware-implemented memristor convolutional neural network
作者:Peng Yao.et al.
期刊:Nature
这篇是2020年初清华大学发表在nature上的文章,当时就看见很多媒体报道,这篇文章也是去年WOS(Web of Science)上忆阻器方面被引次数最多的三篇文章之一(被引45次)。以下只翻译了摘要,后续翻译会更新。

摘要:
忆阻器实现的神经形态计算系统,提供了一种训练神经网络的高速、低功耗的方法。然而,作为图像识别最重要的的模型之一——卷积神经网络(CNNs),还没有用忆阻器交叉开关阵列——一种忆阻器在交点处的交叉点阵列,实现完全硬件化。而且,由于良率低、变化大和器件的其他不理想特性,实现堪比软件CNNs的处理结果是非常有挑战性的。这里,我们报告了高良率、高性能和统一的忆阻器交叉阵列的制造方法,这些阵列是用于实现CNNs的,它们集成了8块2048个单元的忆阻器阵列来提高并行计算的能力。除此之外,我们提出了一种高效的混合训练方法来适应器件的不完美之处,并且提高系统的总体性能。我们建立了一个5层忆阻器CNN网络来实现MNIST图像识别,实现了96%以上的正确率。除了用共享输入的不同内核做并行卷积计算,忆阻器阵列中多个相同内核的复制被证明可以并行处理不同的输入。在能量效率方面,基于忆阻器的CNN神经形态系统比最先进的图像处理单元(GPU)高两个数量级,而且表现出可以拓展为更大的网络,例如残差神经网络。我们的结果有望提供一种可行的用于深度神经网络和边缘计算的硬件解决方案,这种基于忆阻器的方案将没有"冯诺依曼瓶颈"。

正文:
CNNs已经成为最重要的深度神经网路之一,在图像处理相关的任务中扮演着重要的角色,例如图像识别、图像分割和物体识别。一个典型的CNN计算过程包括大量的滑动卷积操作。在这方面,非常需要能够支持并行乘累加运算(MAC)的计算单元。这种需求已经导致了传统计算系统的重新设计以在更高的性能和更低的功耗下执行CNN,重新设计的范围从总体的应用平台,例如图像处理单元(GPUs),到特定应用的加速器。然而,在计算效率方面更进一步的改进将最终受限于这些体系的冯诺依曼架构,在这种架构中,内存和处理单元在物理上的分离导致了大量的能量消耗和单元间数据交换的巨大时间延迟。相比之下,基于忆阻器的神经形态计算提供了富有前景的无冯诺依曼计算模式,因此消除了数据传输的代价。通过直接使用欧姆定律来做乘法和基尔霍夫电流定律来做加法,一个忆阻器阵列能够实现并行存内MAC操作,造就了速度和能量效率显著提升的模拟存内计算。

基于忆阻器的神经形态计算方面的研究涵盖了大量的主题,从器件优化到系统实现。一些有关存内计算的实际应用的试验性证明也被报道了。最近的研究报道证实了对于MNIST手写数字数据库应用图像识别的二层和三层忆阻器多层感知器。然而,一个完整的、对于更加复杂的图像识别任务更加必要的CNN,还没有在一个基于全忆阻器的硬件系统中实现。原因主要存在于缺乏实现忆阻器CNN的高效解决方法:首先,生产的忆阻器CNN经常有低良率和忆阻器阵列不统一的问题。第二,很难实现和软件结果相媲美的表现(例如,图像识别正确率),原因是器件的不完美,例如工艺偏差、电导漂移和器件状态死锁。第三,由于需要在不同的输入批次之间滑动,CNN中的关键卷积操作是需要时间的,这通常是一系列过程,并且对于全连接向量-矩阵乘法(VMM)将导致忆阻器卷积器和忆阻器阵列之间的速度不匹配。

在本研究中,一个用于MNIST数字图像识别的完全5层忆阻器CNN被成功地证实。优化的材料堆栈使得2048个1T1R构成的阵列中有着可靠的和统一的模拟开关特性。通过(我们所)建议使用的混合训练策略,对于整个测试数据集的识别准确率达到了96.19%。更进一步地,将卷积核复制到三个并行的忆阻器卷机器将忆阻器CNN的延迟大约减少了1/3。我们的高集成度的神经形态系统提供了一种可行的方案来显著提升CNN的效率,方法是通过消除基于忆阻器的卷积计算和全连接VMM的吞吐量差距。

实现具有实用价值的忆阻器神经计算系统通常需要集成多个忆阻器交叉开关阵列。通常,将权重分散到不同的阵列对于并行计算是有利的,在(神经)网络的规模逐渐增加的情况下,这逐渐变得必需。然而,之前关于神经网络的验证依赖于单个阵列,主要是由于生产高度可重复阵列的挑战。忆阻器阵列的偏差和不理想特性被视为实现神经形态计算的巨大障碍。

这里我们提出一种用于神经网络的通用忆阻器计算架构。忆阻器单元使用TiN/TaO_x/HfO_x/TiN构成的材料堆栈,在增强(置位)和抑制(复位)过程中通过调节电场和热量,表现出连续的电导调控能力。材料和制造过程和传统的CMOS过程相兼容,所以忆阻器阵列可以方便地在晶圆代工厂中的后道工序中生产,来达到减少过程偏差和实现高重复率的目的。在相同的编程条件下,生产的交叉阵列表现出统一的模拟开关特性。因此,一个多忆阻器阵列硬件系统就用一块定制的PCB板和一块FPGA评估板搭建好了。正如系统原理图所展现的,这个系统主要由8个忆阻器处理单元构成。每个处理单元有其自己的集成2048个单元的忆阻器阵列。每个忆阻器连接到一个晶体管的漏极,即形成一种1T1R的配置方式。每个忆阻器阵列有着128*161T1R个单元构成的集合。其中有着128条平行的字线和128条水平的电源线,并且有着16条垂直的位线。这个阵列表现出出人意料地可重复的多级电导状态。图中展现出在32种不同的电导状态中,1024个忆阻器的分布,其中所有的曲线都是无重叠地分离着的。冲击脉宽50ns、相同的置位和复位冲击串用于闭环编程操作,来达到一个特定的电导状态。测量流程在方法部分阐述。

正如图2所展示的,一个5层CNN建立在一个忆阻器硬件系统上来识别MNIST手写数字图像。CNN中详细的数据流和相应的忆阻器映射在方法部分描述。

实现基于忆阻器的卷积操作需要执行在不同的核之间的滑动操作。忆阻器阵列在共享不同核的输入的条件下,可以很高效的实现并行MAC。图2b展示了一个典型的卷积示例在滑动过程中的示意图,图2c揭示了在1T1R忆阻器阵列中的相关操作。输入值依据它被量化的位码、通过脉冲的数量来编码。一个有符号的核权重,被映射到一对忆阻器的电导的差分。在这种方法下,一个核中的所有权重都被映射到两行电导上:一行通过正的脉冲输入来表示正的权重,另一行通过大小相等的负脉冲来表示负的权重。在将编码脉冲输入到位线之后,通过两条差分电源线上的输出电流被探测和求和。差分电流是相应于输入批量(数据)和选中核的加权和。有着不同权重的不同核被映射到不同对的差分行,并且整个忆阻器阵列在相同的输入下并行地执行MAC。所有想要的加权和结果可以同时得到。

在典型的CNN训练中,有必要根据最后的输出反向传播目标梯度,来达到更新所有权重的目的。这项任务要求相当复杂的操作,来将编码读脉冲从后向前、一层一层地应用于电源线。而且,由于器件的不理想特性,例如非线性和非对称的电导调节,训练一个复杂的深度神经网路是有挑战性的。相比于纯粹的原位训练方案,异位训练看起来像是一条利用了已有的高性能参数的捷径。然而,不可避免的硬件缺陷,例如器件缺陷和导线的寄生电阻与电容,将使得在把异地学习到的权重转移到忆阻器电导时,权重变得模糊并且使系统的性能下降。因此,异位训练在正常情况下需要提前了解硬件的情况,并且基于这种代价高昂的认识,使用软件来学习权重。

为了避免各种不理想的器件特性,我们提出一种混合训练方法来实现忆阻器卷积神经网络。在图3a中展示的整个流程表包含两个阶段。首先,一个CNN模型进行异位训练,之后所有被确定的权重通过一种闭合回路写入的方法传输到忆阻器处理单元。

你可能感兴趣的:(科研训练_文献阅读,卷积神经网络,硬件)