这篇论文是发表在DAC2019上的《Noise Injection Adaption: End-to-End ReRAM Crossbar Non-ideal Effect Adaption for Neural Network Mapping》,论文作者是中佛罗里达大学的Deliang Fan组,第一作者是Zhezhi He和Jie Lin。
文章分析了RRAM的crossbar运行DNN的不理想性质:SAF,IR-Drop,thermal noise, shot noise和random telegraph noise。提出了训练、映射和测试的框架PytorX,能有效减少这些不理想性质的影响。
方法
不理想性质
- 确定的噪声:Stuck-at-fault(SAF)缺陷
- SA0是卡在低阻态,1.75%
- SA1是卡在高阻态,9.04%
- 随机噪声1:IR-Drop
- 线阻
- 决定于于input电压和RRAM的电导
- 建模成随机,因为直接计算太expensive了
- 随机噪声2:Thermal Noise和Shot Noise
- 热噪声
- 散粒噪声
- 建模成0均值的高斯分布
- $i_{rms}=\sqrt{Gf(4K_B T+2qV)}$
- rms是root-mean-square current
- G是电导,f是crossbar的操作频率,T是温度,V是voltage drop
- programming偏差
- $\sigma=\Delta G/3$
- $\Delta G$是ReRAM的电导分辨率resolution (每一级之间的差异)
- 加上上面两种噪声影响,权值的总体偏差的标准差:
- $g_{rms}=i_{rms}/V=\sqrt{\frac{Gf(4K_B T+2qV)}{V^2}+(\frac{\Delta G}{3})^2}$
- 随机噪声3:Random Telegraph Noise(RTN)
- 随机电报噪声,也叫Burst Noise 爆裂声
- 临时的、随机的减少电导值
- $G_{rtn}=G \frac{bG+a}{G-(bG+a)}$
- 其中a、b是参数,取1.662e-7和0.0015
- 根据参考文献,G有一半的可能性变成$G+G_{rtn}$(泊松分布)
ReRAM的crossbar计算
- NN的算法计算
- $y=(\alpha_w \alpha_x)\sum_i (w,x)$
- w和x是量化后的权重,$\alpha_w, \alpha_x$是scale因子
- RRAM的计算
- DAC的输入$V_{DAC,i}=V_{ref}+\Delta V_{DAC}x_i$
- $x_i$是n个二值数的比特串(the input $x_i$ is encoded as binary bit-strings n_i[n]),二进制补码表示,文章取n=8
- $ΔV_{DAC}$ is the minimum voltage stage of the DAC
- 这里是直接8bit输入了,不是一个个输入的
- ADC收到的信号
- $I_{ADC,j}=\sum_{i}(\Delta V_{DAC}x_i \dot (G_{i,j}^+ - G_{i,j}^-))$
- $G_{i,j}^+ - G_{i,j}^-=\Delta G\dot w$
- $\Delta G$是RRAM cell的电导step size
- ADC的量化
- $y=round(\frac{I_{ADC,j}}{\Delta I_{ADC}})$
- DAC的输入$V_{DAC,i}=V_{ref}+\Delta V_{DAC}x_i$
End-to-end的适应
- SAF的误差修正
- 记录所有的错误cell,然后片外计算来补偿
- Noise Injection Adaption for IR-drop
- 128x128的crossbar的IR-drop非常高,不能用,64x64的可以用
- 训练的时候考虑IR-drop
- 但是如果直接算,花费的计算开销太大了
- NIA方法
- 训练网络,map到硬件,收集crossbar output current shift
- 使用高斯噪声近似影响
- 使用带高斯噪声来训练网络
- 其他随机噪声
- $G_{act}=G+G_g+G_p$
- 高斯噪声和泊松噪声
- 高斯噪声是和weight和input相关的
- 使用NIA方法效果很差
总结
这篇论文详细的在算法层面上建模了硬件的不完美带来的影响,并且提出了解决方案,虽然有SAF等解决方案挺不容易实现的;但至少非常清晰明白,为未来指出方向。solid的工作。