这篇文章是2020年发表在Nature杂志的论文《 Fully hardware-implemented memristor convolutional neural network》,文章作者来自清华的未来芯片技术高精尖创新中心和北京信息科学与技术国家研究中心,第一作者是Peng Yao,通讯作者是吴华强副教授。
这篇文章实现了第一款忆阻器芯片系统来实现MNIST的分类网络。忆阻器芯片具有高产率、高性能和统一的crossbar阵列。同时文章还提出混合训练策略来适应器件的不完美性质。为了提升性能,文章还提出了复制卷积核的方法来增加并行度。
方法
忆阻器crossbar阵列的实现
- TiN/TaOx/HfOx/TiN
- 32 conductance states
- 50ns的pulse时长可以做SET和RESET的closed-loop programming
- 1T1R的设置
- crossbar 128 x 16的结构
- 128 word lines和128 source line
- 16 bit lines
- PE,每个PE有2048-cell的忆阻器阵列
网络映射
- 5层的 CNN 分类MNIST
- 输入value被编码成脉冲数目
- 输入3x3的patch
- 根据量化的bit数决定:8bit的输入被分为8个脉冲输入,结果被shift加到tmp结果上面去
- 带符号的weight被分配到一对忆阻器上
- 一个是正数weight
- 一个是负数weight
- 15-level conductance weight
- 4-bit的权重可以取得很好的效果
- 分配到两个8级忆阻器上
- bit line输入编码好的脉冲,source line输出分别代表正数和负数的值
- 不同的channel被放到不同的row上面,可以同时计算他们
混合训练策略
- 在忆阻器芯片上原生训练整个网络是很复杂的
- 片外训练的网络受每一个设备的不完美性质影响
- defective devices缺陷设备
- parasitic wire resistance and capacitance 线的电阻和电容
- 将外部的权重转移到忆阻器的电导上去的时候这些因素会blur(污染)权重,降低模型准确率
- 混合训练策略
- 只在线训练最后一层FC
复制卷积核增加并行度
- 不同层速度mismatch
- 执行CNN卷积运算是耗时的,因为每一层都需要一个个输入sliding window
- FC层的计算是很快的
- 复制卷积的kernel到不同的crossbar
- 但是复制weight是有挑战性的,因为不可预测和无法避免的硬件差异,conductance drift电导漂移和state locking(就是RRAM-cell坏了,不能重新写了)
- 使用混合训练策略来部分解决这个问题
- batch的预测,一次用三张图在三个复制后的PE上同时运行
总结
第一次将RRAM-based的加速器实际造出来,还是有很多问题的,但是这些问题暴露出来可以一个个解决,非常好。原来这个也能发Nature,学到了。