Low-Cost and Effective Fault-Tolerance Enhancement Techniques for Emerging Memories-Based Deep Neural Networks
这篇文章讨论了基于新兴存储技术的DNN的容错增强技术,重点解决了新兴存储系统中的“卡住故障”(stuck-at faults)对DNN准确性的影响。新兴存储,如可变电阻随机存取存储器(RRAM),因其良好的可扩展性、非易失性和较好的读取性能,成为DNN应用的理想选择。然而,这些存储技术存在可靠性问题,尤其是卡住故障,导致存储单元固定在某一特定状态,从而可能影响DNN的准确性。
为了解决这一问题,本文提出了两种简单且轻量的容错增强技术:
-
块内地址重映射:该技术通过XOR操作对数据块内的权重地址进行重映射,从而最小化卡住故障的影响,同时保持内存局部性。
-
权重编码:该技术通过反转操作对权重进行编码,有助于减少卡住故障的影响,特别是对于单比特错误。
通过在流行的数据集(如CIFAR-10和ImageNet)上的实验,结果表明这些技术可以显著提高容错性,相比没有任何容错方法的基准DNN,CIFAR-10的容错能力提高了最多300倍,ImageNet上提高了125倍。所提出的技术存储开销仅为0.98%,且可以轻松与现有的容错方案集成。
一、Intro
DNN的发展与挑战:
DNN近年来已被广泛研究,并在许多领域(如机器学习)取得了显著成效。DNN的多层结构使得它能够做出复杂决策,适用于传统编程方法难以处理的任务。为了将DNN应用于资源受限的移动设备,需要高效的硬件实现。但DNN需要大量存储来存放网络参数,尤其是对于实时应用,DNN对存储容量和带宽的要求非常高,这使得寻找高性能、可扩展的内存技术成为一项重要任务。
新兴存储技术的应用:
随着现有存储技术接近其扩展极限,各种新兴的非易失性存储(NVM)技术,如RRAM和PCM,因其较好的可扩展性、读取性能和非易失性,成为了DNN部署的理想选择。除了存储功能,RRAM等新兴存储技术还被用来实现高效能和节能的DNN加速器,如内存交叉开关架构,用于快速、低功耗的矩阵-向量乘法,这是DNN计算的核心操作。
卡住故障问题与现有解决方案:
然而,由于新兴存储技术的耐用性差且制造工艺不成熟,容易出现硬故障,如卡住故障。在卡住故障中,存储单元会固定在某一电阻/导电状态,数据可以读取,但不能通过写操作修改。为了延长新兴存储的使用寿命,已经研究了几种容错技术来减少卡住故障对DNN准确性的影响。传统的权重重映射技术可以通过将故障单元的状态与存储权重状态对齐来减少卡住故障,但这种复杂的地址重映射需要较高的额外开销,并且会影响内存局部性并使数据检索机制复杂化。
提出的技术:
本文提出了块内地址重映射技术,通过在数据块内部进行局部重映射来简化地址重映射过程,从而提高DNN的容错性。与此同时,对于随机分布的故障,使用简单的反转操作对权重进行编码,从而解决单个卡住故障问题。所提出的技术适用于基于新兴存储技术的传统架构,也适用于基于内存交叉开关的DNN加速器。
二、背景
A. DNNs
-
DNN的基本结构:
DNN通常由输入层、输出层和多个隐藏层组成。每个层由多个神经元构成,神经元通过将前一层激活值的加权和加上偏置后应用激活函数来计算输出。DNN的训练涉及大量的网络参数(权重和偏置),因此需要大量存储空间。 -
优化DNN存储的技术:
为了使DNN适应资源有限的移动设备,研究了几种技术,如修剪(pruning)、模型压缩(model compression)和量化(quantization)。这些技术旨在减少网络的大小,但可能会影响DNN的准确性。对于一些没有实时要求的应用,即使DNN很大且需要大量存储,仍然可以接受。 -
新兴存储技术的优势:
高效的DNN需要高带宽、可扩展且非易失性的内存来存储网络参数。新兴的非易失性存储(NVM)技术,如阻变存储(RRAM)和相变存储(PCM),因其具有更好的可扩展性、较高的存储密度、更好的读取性能和非易失性,被认为是存储DNN参数的理想选择。 -
新兴存储的可靠性问题:
尽管新兴存储技术有很多优点,但也存在可靠性问题,如卡住故障(stuck-at faults)、电阻漂移(resistance drift)或写入干扰(write disturbance)。这些问题可能会导致DNN准确性的严重下降。
B. 卡住故障与DNN准确性
1) 卡住故障(Stuck-at Faults)
-
卡住故障的定义与影响:
卡住故障发生在新兴存储器中,当存储单元固定在某一特定的电阻/导电状态时,无法改变。例如,卡住零(SA0)故障是存储单元保持在低电阻状态(LRS),卡住一(SA1)故障则是存储单元保持在高电阻状态(HRS)。研究表明,1.75%(SA0)和9.04%(SA1)芯片内的RRAM存储单元可能受到这些故障的影响。随着时间的推移,这些故障会因为持续的编程操作而变得更加频繁。 -
卡住故障的产生原因:
在线训练的DNN需要频繁更新参数,这增加了写操作的次数,可能导致卡住故障的发生。 -
现有的解决方案:
-
ECP(错误校正指针):通过额外的存储记录卡住存储单元的地址和数据,并根据这些信息进行故障修正。
-
SAFER:通过动态划分数据块,每个数据块只包含一个卡住故障,利用单比特错误校正码进行恢复。
-
简单反转操作:通过反转数据,减少卡住故障的数量,从而提升错误校正能力。
-
2) 卡住故障对DNN准确性的影响
-
实验结果与影响:
卡住故障会导致DNN的准确性严重下降,尤其是当影响到关键权重时。例如,图1展示了卡住故障对Resnet18在Cifar10数据集上的准确性影响。随着比特错误率(BER)的增加,分类错误会呈指数上升。当BER超过2×10⁻⁶时,分类错误达到90%,这相当于网络在随机猜测结果,不再依赖于输入或参数。 -
卡住故障的检测与影响:
卡住故障是永久性的,但可以在写操作时检测并读取。这一特点提供了开发架构技术来增强新兴存储的容错能力的机会,从而提升DNN的容错性。
3) 提升DNN容错性的现有技术
-
软件和硬件解决方案:
为了增强DNN的容错性,研究者提出了多种软件和硬件方法:-
软件方案:例如,重新设计传统的错误校正输出代码和DNN训练算法,提升DNN的稳定性。还有一些方法利用DNN的自修复能力,防止关键突触受到故障存储单元的影响。
-
硬件方案:如在RRAM交叉开关架构中引入重映射和冗余技术,以应对卡住故障。例如,通过冗余交叉开关解决卡住故障,或通过识别重要权重并将它们重新映射到没有故障的存储单元来恢复网络准确性。
-
-
现有技术的局限性与结合:
这些现有的基于存储器的技术以及针对神经形态架构的技术可以与本文提出的技术结合,从而进一步提升DNN的容错性和准确性。
三、方法
容错技术的动机:通过重新映射和编码数据,可以减少卡住故障发生在不希望的状态下的数量,从而减少其对DNN准确性的影响。
A. 块内地址重映射
-
内存存储方式:
-
网络参数(如权重和偏置)被分组存储在内存的数据块中。例如,使用32位浮点数表示的权重,每个64B的缓存行可以存储16个权重。
-
为了保持内存的局部性,提出的技术在典型的数据块内进行权重重映射,而不是跨块重映射。
-
-
重映射技术:
-
该技术使用简单的XOR编码对每个权重地址进行重映射。具体来说,通过对内存地址与指定的XOR位模式进行运算,权重将被重新映射到数据块内的不同位置。
-
4位XOR操作可为每个数据块生成16种不同的权重映射方式。通过选择能够最小化卡住故障对DNN准确性影响的映射,来提高容错性。
-
块内地址重映射(图2)
块内地址重映射的概念:
该技术使用4位XOR操作对权重的内存地址进行重映射。这个重映射是在同一数据块(例如64B缓存块)内进行的,每个数据块通常存储16个权重(假设每个权重为32位浮点数)。
XOR操作的目的是将权重移到数据块内的不同位置,从而最小化卡住故障的影响。
示例:
图中展示了多个权重(
W0, W1, W2, ..., W15
)的初始内存地址,并在XOR指定的位模式(0000, 0001, 0011
等)下,展示了它们重映射后的内存地址。通过这种重映射,权重被存储在不同的位置,减少了关键位置(如高位)发生卡住故障的几率,从而减少了对DNN准确性的影响。
-
卡住故障对DNN准确性的影响:
-
对于DNN来说,卡住故障在内存的不同位置产生的影响是不同的。显著位(如浮点数中的指数位)的故障对权重值的影响远大于不显著位的故障。图3展示了这个影响:
-
三个卡住故障发生在不重要的位上时,导致的偏差较小(例如偏差为1)。
-
一个卡住故障发生在重要位上时,会导致较大的偏差(例如偏差为32)。
-
-
因此,单纯减少内存中的故障数量并不总是最有效的策略。相反,最小化权重的偏差(即权重值与原始值的偏差)是确保DNN准确性的关键。
-
故障的显著性(图3)
故障对权重的影响:
图3展示了卡住故障发生在权重不同位置时,如何影响其数值和偏差:
初始权重:
10110011
(二进制)= 179(十进制)。三个卡住故障:
10111010
(二进制)= 180(十进制),偏差为1。一个卡住故障:
10010011
(二进制)= 147(十进制),偏差为32。观察结果:
故障的数量并不是评估对DNN准确性影响的唯一标准。一个较大位(更重要的位)上的单个故障,可能比多个较小位上的故障引起更大的偏差。这一点尤其对浮点数表示形式很重要,因为指数位(更高位)对权重值的影响更大。
-
权重偏差最小化的公式:
-
公式(1)给出了如何最小化权重偏差的数学表达:
其中,
w0
是最终用于推理的权重,wri
和woi
分别是经过重映射后的权重和原始权重,N
是数据块内的权重数量,δ
是最小的净偏差,∆
是所有可能的权重重映射偏差集合。 -
B. 权重编码
-
技术思路:
-
当数据块中出现单个卡住故障时,可以通过反转数据来掩盖该故障。这一思路是基于直觉的:通过将每个权重值进行反转,来检查是否能进一步减少权重值的净偏差(即权重值与原始值之间的差异)。
-
-
操作过程:
-
该方法将每个权重值反转,并且对比反转后的权重值与原始权重值在不同地址映射下的表现。
-
选择最优映射:最终,选择使权重值的净偏差最小的映射进行存储和网络推理。
-
-
存储开销:
-
这种编码增强操作需要为每个缓存行(64B数据块)增加一个额外的比特,用于编码。这意味着存储开销为0.98%,这是一个非常小的开销,几乎可以忽略不计。
-
地址重映射示例(图4)
内存块和卡住故障:
图4展示了一个包含四个4位位置的内存块,用于存储权重(
W1, W2, W3, W4
),其中一些位置有卡住故障。内存单元可能是卡住零(SA0)或卡住一(SA1)。初始误差计算:
如果没有进行重映射,初始配置会由于卡住故障导致净偏差为13,这意味着有5个故障发生,影响了权重值。
地址重映射:
通过将内存地址与不同的位模式(
01, 10, 11
)进行XOR运算,权重会映射到内存的不同位置。目标是找到一个能够最小化错误(故障)数量的映射,从而减少权重偏差。
最终结果:
使用XOR
11
的映射成功掩盖了大部分故障(只剩下一个故障),导致净偏差为2,这是所有可能映射中最小的。因此,所提出的方法选择这种映射来存储四个权重。
C. 实现与开销
-
DNN的训练与部署:
-
DNN通常是先训练好然后部署到多个边缘设备。因此,向新兴的非易失性存储(NVM)写数据的操作可以在训练过程后进行,不需要在每次推理时进行更新。
-
-
图5
图5展示了提出方法的实现:
-
图5(a) 总体架构:
-
该图展示了DNN部署、内存控制器、重映射/编码以及存储(新兴NVM)之间的关系。
-
在此架构中,DNN通过内存控制器与新兴存储进行交互,内存控制器执行地址重映射和数据编码操作,然后将数据存储到新兴NVM中。
-
-
图5(b) 重映射与编码逻辑:
-
原始地址和原始数据通过XOR操作生成重映射地址,并且根据编码比特对原始数据进行反转,得到编码后的数据。
-
在该设计中,辅助比特用于帮助生成重映射地址。这些辅助比特用于确保在数据存储时,
-
-
-
性能开销:
-
由于DNN的训练和部署通常是先进行一次训练后部署,因此在训练之后进行网络参数的重映射并不会对性能产生重大影响。
-
推理阶段:在推理过程中,提出的方法只需使用简单的XOR和反转操作。这些操作在性能关键的推理过程中几乎没有额外的时间开销。
-
-
存储开销:
-
对于64B数据块和32位参数,提出的方法需要4个辅助比特用于地址重映射,1个比特用于参数编码。因此,整个方法的存储开销为0.98%,这是一个可以忽略不计的小开销。
-
如果使用更多的辅助比特,或者对地址重映射进行更精细的划分(例如将网络参数划分为多个子块进行重映射),该方法的效果可以进一步增强。
-
四、实验
A. 实验设置(Experimental Setup)
-
实验工具和平台:
-
实验使用了Pytorch框架来进行卡住故障(stuck-at faults)的模拟。
-
实验平台为Intel Xeon E5-1650 v4 CPU和两块Nvidia Titan XP GPU,配备24GB的内存。
-
-
评估的DNN模型和数据集:
-
本文使用了多种主流的DNN模型来进行评估,包括:
-
ResNet
-
VGG
-
MobileNet
-
Inception
-
-
评估使用了两个流行的数据集:
-
CIFAR-10
-
ImageNet
-
-
32位浮动点参数被量化为8位,量化后的模型用于对ImageNet数据集进行评估。
-
B. 卡住故障模拟框架(Stuck-at Faults Simulation Framework)
-
故障注入框架:
-
为了模拟新兴存储技术中DNN的卡住故障,构建了一个定制的故障注入框架,该框架基于Ares框架进行验证。故障注入实验包括两个阶段:
-
第一阶段:构建用于实验的多种网络,使用不同的权重精度(32位/8位)以及基于提出技术的参数重映射/编码方式。
-
第二阶段:在故障注入框架中,基于不同的比特错误率(BER)进行故障注入,并执行推理过程。假设卡住故障是均匀分布的。对于提出的方法,在每次比特错误率下,使用导致权重值偏差最小的重映射/编码配置来进行推理。
-
-
-
实验细节:
-
分类错误率:每个比特错误率下的分类错误通过100次故障注入模拟的平均值进行计算。
-
C. 与错误校正技术的比较(Comparison with the Error Correcting Techniques)
-
与现有技术的比较:
-
为了评估提出的技术与当前主流的错误校正编码(ECC)方案相比的有效性,作者将提出的方法与其他错误校正技术进行了基准比较。
-
-
提出方法的灵活性:
-
提出的技术在存储开销与容错能力之间提供了灵活的平衡。例如,使用更多的块进行重映射,虽然会增加附加比特的数量,但可以在更细粒度的层面上更好地减轻卡住故障的影响。
-
-
错误校正编码(ECC):
-
ECC(如(72,64)Hamming码)常用于传统存储系统中解决软错误。Hamming码通常需要超过10%的存储开销。然而,ECC对于新兴存储技术中的硬错误(如卡住故障)效果较差。
-
-
替代方案—错误校正指针(ECP):
-
ECC的有效替代方案是错误校正指针(ECP),它能够处理新兴存储中的硬错误。ECP的存储开销较小,能够在512位数据块内修正一个比特错误,并且开销为2.15%。
-
-
提出的方法与ECP的比较:
-
对于32位数据(一个完整精度的权重或四个8位量化权重),提出的方法需要4个比特用于地址重映射,1个比特用于编码(反转),这使得存储开销为0.98%,相比于ECP的存储开销要小得多(约减少了一半)。
-
尽管存储开销较小,提出的方法在减轻卡住故障影响方面更为有效,不论模型类型或数据集大小如何。
-
D. 结果与讨论(Results and Discussion)
图6和图7展示了在Cifar10和ImageNet数据集上,使用提出的容错技术的实验结果。图中使用不同的线条表示了不同的容错方法:
-
黑色实线:表示基准模型(没有错误校正方法,带有卡住故障)。
-
蓝色虚线:表示使用**错误校正指针(ECP)**来减轻卡住故障的情况。
-
红色虚线:表示提出的权重重映射和编码方法(即提出的技术)。
实验结果解析
-
Cifar10数据集(图6):
-
ResNet模型(图6(a)):
-
基准模型和ECP方法的准确率在**比特错误率(BER)**达到1.5×10⁻⁷和5×10⁻⁶时开始急剧下降。
-
提出的方案则能够保持基准准确度,直到BER达到5×10⁻⁵。
-
也就是说,提出的方法比基准模型的容错性高出300倍,并且比ECP方法高出10倍。
-
-
Vgg19和MobileNetV2(图6(b)和6(c)):
-
在使用Cifar10数据集的其他模型(Vgg19和MobileNetV2)时,提出的方法表现出相似的优势,显著提高了容错性。
-
-
-
ImageNet数据集(图7):
-
量化模型(8位):
-
在使用ImageNet数据集时,量化网络显示出比全精度网络在较高BER下更剧烈的准确率下降。这是因为32位浮点权重相比8位量化权重具有更大的动态范围。
-
尽管如此,提出的方法在量化网络中仍然是最有效的。
-
具体而言,在量化网络中,提出的方法比基准的Resnet50、Vgg19和InceptionV4网络分别更有效20倍、5倍和125倍。
-
-