体系结构论文导读(三十一)(下):Soft errors in DNN accelerators: A comprehensive review

第五部分:DNN加速器中的软错误

本部分回顾和分析了有关人工神经网络(ANN)可靠性的研究。特别是关注通过DNN加速器解决DNN可靠性的研究,从软错误的角度进行探讨。许多前期工作声称ANN本身对故障具有固有的容错能力。然而,在硬件(加速器)层面,单事件翻转(SEU)和单事件瞬变(SET)等错误可能发生在执行硬件中,削弱DNN的固有容错能力。因此,加速器比其他电子设备更容易受到瞬态故障的影响,因为其并行性会将单个故障传播到多个输出元素。

5.1 GPU

研究人员在提高GPU的可靠性方面做了很多努力。然而,尽管以前的工作关注了GPU在高性能计算(HPC)应用中的可靠性,但却忽视了DNN模型的可靠性。DNN算法在计算特性上与HPC应用有显著不同,例如训练阶段的非结构化数据和处理激活和可学习权重的大量内存。此外,由于ANN算法预测的是特定百分比的准确性,DNN本身并非完全准确。因此,先前的可靠性研究不能扩展到高级DNN案例中。

以下是一些代表性研究及其主要发现:

  1. Santos等人评估了著名的实时目标检测系统“YOLO”的可靠性,重点利用GEMM(通用矩阵乘法)作为主要指标评估系统的韧性。研究考虑了三种不同的GPU架构,提出了一种基于算法的容错策略(ABFT)来检测和缓解这些错误,从而提高DNN的可靠性。

    • 主要发现:不同GPU的晶体管布局对软错误率的影响不同;GPU之间的架构差异对错误传播过程有不同影响。
    • 结论:DNN的可靠性依赖于具体的加速器,不能将特定加速器的情况推广到同类的所有加速器。
  2. Lunardi等人研究了在GPU中使用ECC(错误纠正码)的有效性,发现ECC虽然是掩盖软错误影响的有效解决方案,但某些内存资源(如管道和队列中的触发器)并未受到ECC保护。

    • 主要发现:YOLO和GEMM由于计算密集型数据处理,ECC的保护效果较差;采用FinFET技术比启用ECC更有效地减少SDC(静默数据损坏)率。
  3. Arechiga等人研究了DNN架构在其参数(如位翻转)受到干扰时的稳健性,评估了三种基于CNN的模型:VGG16、ResNet50和Inception V3。

    • 主要发现:即使只有极小比例的参数受到影响,也会导致显著的性能下降;VGG16在随机位翻转中表现出较低的可靠性,因为它缺乏批量归一化和快捷连接,这些技术有助于增强模型的稳健性。
  4. Santos等人分析了GPU架构中的辐射引发错误如何影响CNN模型的可靠性,研究表明GPU中的单个故障倾向于传播到多个活跃线程,显著降低CNN的可靠性。

    • 主要发现:通过设计特殊的Max-pooling层来替代CNN的常规Max-pooling层可以在运行时检测错误,显著提高可靠性;ECC显著减少了SDC的数量,但对关键错误的影响较小。
  5. 作者研究了CNN模型在NVIDIA GPU上实现时软错误的影响,特别是VGG-16、AlexNet和ResNet-18的错误韧性。

    • 主要发现:19.7%的注入故障导致了错误;通过分析错误依赖性,我们发现RF模式下的错误生成DUE比SDC错误多,而IOA和IOV模式下的错误倾向于生成更多的SDC错误;硬化VGG-16的单个内核(Im2col)显著提高了模型的韧性,将Faulty SDC的率从19.7%降至约0.4%。
  6. Santos等人研究了在不同浮点精度下执行基准测试时GPU的可靠性,发现降低精度(如从双精度到单精度到半精度)可以显著提高CNN模型的可靠性。

    • 主要发现:检测错误比分类错误更少依赖数据格式,因为检测框的坐标表示为整数值;降低精度格式显著提高了CNN模型的可靠性,因为较低的精度需要较少的内存资源,从而提高了模型的性能。
5.2 ASIC(专用集成电路)

这一部分回顾并介绍了在DNN模型实现过程中评估ASIC加速器韧性的研究。每项研究可能会考虑DNN模型/加速器的各种元素。因此,表5和表6列出了这一类别的代表性工作以及每项工作中考虑的组件和指标。

代表性研究和主要发现
  1. Li等人分析和评估了运行在专用ASIC加速器Eyeriss上的DNN模型的容错特性。研究了四种基于CNN的模型:AlexNet、CaffeNet、ConvNet和NiN。这项研究详细诊断了错误从加速器级别传播到DNN模型级别的方式。

    • 主要发现:
      • DNN的错误韧性取决于多个因素,包括网络拓扑、用于表示的数据格式(如FxP和FP)、DNN加速器数据流中的数据重用,以及DNN网络中的层数和位置。
      • 使用相同数据格式的NiN、AlexNet和CaffeNet模型的SDC错误率大致相同,而ConvNet的错误率非常高。这是因为ImageNet数据集有1000个类,而CIFAR数据集只有10个类,错误更容易被传播到前五个元素中。
    • 提出两种错误保护策略:
      • 基于症状的错误检测器(SED):用于检测内存系统中的SDC错误,平均精度为90.21%,平均召回率为92.5%。
      • 选择性锁存加固(SLH):用于检测和纠正数据路径中的SDC错误。
  2. Pandey等人研究了基于TPU加速器的错误韧性,特别是评估TPU近阈值操作引起的定时错误。这项研究最初提出了一种称为GreenTPU的设计范式,主要目的是限制TPU的能耗。

    • 主要发现:
      • 通过预测激活序列模式,可以防止同一序列中的其他错误。
      • 采用Razor触发器检测每个MAC单元中的定时错误,当任何行中的定时错误发生时,这个单元记录导致错误的输入模式,并增加后续MAC单元的供电电压以阻止未来的定时错误。
  3. Jiao等人评估了ASIC类加速器中处理单元的软错误对DNN模型的影响。软错误是由温度和动态电压变化引起的时间错误。评估了三层全连接(MLP)和LeNet-5(CNN)架构。

    • 主要发现:
      • 对于MLP和CNN,Adder中的错误对模型精度的影响大于Multiplier中的错误。
      • 随着错误率的增加,精度急剧下降。CNN比MLP对错误更敏感,因为CNN有更多的算术计算。
  4. Choi等人引入了基于DNN过滤器和权重灵敏度差异的错误韧性技术,使用一阶泰勒展开来分析灵敏度。

    • 主要发现:
      • 通过将高灵敏度权重的计算映射到更可靠的MAC单元,可以显著提高DNN模型的分类精度。
  5. Lee等人广泛研究了实现于CMOS数字电路上的DNN的容错性,特别是分析了固定点格式的数据表示。

    • 主要发现:
      • 通过“权重掉落”技术(随机断开权重连接)提高DNN对故障的容忍度,特别是在错误率低于10%的情况下,预测精度只会略有下降。
  6. Zhang等人研究了基于时间错误电压缩放的软错误传播,提出了一种称为“时间错误丢弃(TE-drop)”的新技术。

    • 主要发现:
      • TE-drop通过为每个MAC单元提供“Razor触发器”来检测这些错误,并在不重新执行错误MAC操作的情况下屏蔽错误,从而提高了模型的可靠性。

FPGA和Others部分略去

六、讨论

6.1 各类别中的要点
GPU 类别
  • 晶体管布局:不同GPU的晶体管布局有不同的错误率。因此,各种GPU微架构(如Maxwell、Volta和Turing)影响错误从一个层次传播到另一个层次,直到它到达输出。
  • ECC 和 ABFT:虽然ECC已被证明是用于各种内存元素的非常有效的保护技术,但ABFT策略可以通过软件解决方案在GPU中更好地强化DNN。这是因为大多数DNN操作在GPU中都依赖于矩阵乘法,这是ABFT的基本任务。
ASIC 类别
  • 灵活性:尽管ASIC逐渐发展为更小的结构、低功耗和高性能,但代价是不灵活性。从可靠性角度来看,不同于GPU,ECC策略不能直接应用于ASIC的缓冲区,因为矩阵乘法和卷积更适合使用没有本地内存的矩阵阵列来实现。因此,当提出可靠性解决方案时,可能需要修改底层DNN架构。此外,由于Google的TPU目前是这一类别中唯一突出的加速器,基准测试问题对于设计师来说是一个不小的挑战。

为什么ECC不能直接应用于ASIC的缓冲区

对于ASIC(专用集成电路),尤其是专门用于DNN加速的ASIC(如TPU、Eyeriss),其设计和架构与GPU有很大不同。

1. 矩阵乘法和卷积操作的实现方式

在DNN计算中,矩阵乘法和卷积是非常重要的操作。这些操作通常通过矩阵阵列(systolic array)来实现。矩阵阵列是一种高度并行的硬件结构,可以高效地执行矩阵乘法和卷积操作。

  • 矩阵阵列的特点
    • 高度并行:矩阵阵列由许多处理单元组成,这些单元可以同时进行计算。
    • 流水线操作:数据从一个处理单元传递到下一个,像流水线一样,直到计算完成。
    • 没有本地内存:每个处理单元通常没有独立的本地存储,而是通过直接的数据传递实现高效计算。
2. 没有本地内存的影响

因为矩阵阵列通常没有独立的本地存储空间(如缓存或寄存器文件),所以ECC无法直接应用于这些处理单元之间的数据传递。

  • 没有本地存储:在矩阵阵列中,数据在处理单元之间直接传递,而不是存储在本地内存中。这意味着ECC无法在数据传递过程中进行错误检测和纠正。
  • 实时性要求:矩阵阵列需要高效的实时计算,增加ECC会引入额外的延迟和复杂性,不利于实现高效的DNN计算。
FPGA 类别
  • 灵活性和重配置:与其他加速器相比,FPGA的灵活性和重配置功能使其更容易评估DNN的韧性。大多数FPGA的DNN加速器设计仅针对一种数据流。例如,某些加速器仅针对CNN模型。因此,很难以相同的效率将DNN的各种层映射到这些加速器上。
  • SRAM基FPGA:SRAM基FPGA是最常用的一种类型。当遇到故障时,例如粒子撞击配置位,可能导致LUT、BRAM或路由连接的配置发生变化。为解决这一类别中的瞬态错误影响,通常采用硬件冗余解决方案。
6.2 类别比较

DNN加速器之间的架构差异使得全面比较成为一项不公平且具有挑战性的任务。然而,可以突出表明每个类别在软错误可靠性方面的优缺点。

本文比较了两种常用的DNN加速器(即GPU和FPGA),作为首次尝试回答“哪种加速器在面对瞬态故障时更可靠?”的问题。目的是展示当相同模型在不同加速器中遇到瞬态故障时,其韧性可能有不同的表现。为此,选择了一种特定的DNN架构作为基准。选择CNN架构,因为它已在两种类别中执行,并且每种类别的可靠性研究已被分析。

6.2.1 硬件资源

在GPU中,主流CNN严重依赖于密集的浮点矩阵乘法(即GEMM)。大约76%的GPU操作用于CNN模型与GEMM相关的操作。GPU的硬件资源包括寄存器文件、缓存、SM、调度器等,都是为了执行这些操作。

在FPGA中,主流CNN依赖于LUT、FF、Carry逻辑、I/O块和DSP单元来进行MAC操作,并使用块RAM作为内存元素。此外,配置位用于功能和路由,故障会被注入其中。

6.2.2 浮点(FxP) vs. 定点(FP)

FPGA比GPU更倾向于使用定点(FxP)格式而非浮点(FP)格式。FP的范围比FxP格式更广,因此其指数中的故障会导致值的显著变化。因此,对于相同长度(即位数),FP比FxP更易受到影响。实验表明,通过降低精度(例如,从双精度到单精度再到半精度),硬件资源利用率降低,从而减少了暴露于辐射的面积,因此FIT率也降低。然而,较低精度会增加软错误的影响,因此FPGA更易受到关键错误的影响。

6.2.3 错误传播行为

在CNN计算中,数据从输入层传播到中间(隐藏)层再到输出层。一旦发生错误,它也会遵循相同的规则传播。GPU中的全连接层(FC层)倾向于传播SDC错误,但本身不会产生SDC错误。这是因为FC层具有高度并行(冗余)的连接,意味着神经元排列成矢量而不是矩阵。因此,数据重用性比卷积层少。

在FPGA中,FC层比卷积和池化层更容易产生SDC错误。FPGA是可编程加速器,可以具有空间和时间架构。此外,FPGA的设计由存储在配置内存中的位流确定。因此,FC层的密度越高,其易感性越高。

6.2.4 缓解技术

在GPU中,尽管ECC是一种硬件解决方案(用于内存元素),但最常见的提高GPU应用可靠性的方式是软件解决方案,用于保护内存或逻辑资源。这是因为GPU的预设计架构阻止研究人员访问低级布局(RTL)。提出的软件技术包括程序模块复制(如DMR和TMR)、ABFT等。然而,文献中没有提供用于训练阶段的缓解技术,所有提出的方法仅用于推理阶段。

在FPGA中,缓解技术通常是硬件解决方案,使用硬件描述语言(HDL)表示的RTL。现有的硬件策略是基于冗余的解决方案,即构建与原始模块相同的冗余硬件模块。这种冗余可以是比较复制(DWC)或TMR。与GPU不同,FPGA案例中提出了一些解决方案,特别是用于训练阶段的,如容错训练。

综上所述,要决定哪种加速器更具韧性,需要综合考虑上述四个因素,因为它严格依赖于底层架构。

 

七、未来的挑战与方向

未来深度学习的主要挑战之一是其算法在易受故障影响的加速器上实现时的可靠性问题。因此,DNN在高保证应用中的适用性受到来自DNN加速器上软错误引发的可靠性问题的限制。

其他DNN架构

现代定制的深度学习系统由混合DNN组成,以实现现实生活中的认知任务。换句话说,同一系统中可能包含多种DNN架构。例如,Parana架构包含CNN、MLP和其他两种架构。虽然Yin等人在设计过程中提出了一种仅解决DRAM热问题的技术,但尚未评估这种复杂系统的错误韧性。因此,现有技术无法简单地评估这种加速器的处理和控制元素的可靠性问题。因此,需要新的评估和缓解技术,这些技术能够顺利适应这些混合架构。

DNN错误韧性评估工具

许多回顾的研究报告了用于评估DNN组件错误韧性的故障注入器或DNN框架较慢。因此,必须优化这些工具的评估时间,以更真实地模拟可靠性影响。这些工具对于研究DNN加速器/算法在可靠性问题方面的独特特性非常有用。这可能是一个对研究社区有价值的研究方向。

领域的快速发展

正如我们的回顾所揭示的那样,AI模型的演变正在进行中。因此,用于加速这些计算密集型模型的硬件的可用性在设计层面是一个显著问题。因此,全部注意力都集中在AI加速器的吞吐量优化上,而可靠性问题却被大大忽视。因此,可靠性研究人员应填补这一空白,为每个类别(即加速器)提供有效的解决方案。

评估不同的DNN阶段

大多数工作都评估了DNN在推理阶段的可靠性。相反,只有少数研究研究了训练阶段。此外,训练有两种类型:在线训练(在每个训练数据点后更新参数)和离线训练(在整个训练数据集后一次性更新参数)。研究人员可能需要确定这两种类型的训练是否在可靠性方面留下不同的影响。

数据集的大小

正如其有助于忽略小噪声一样,影响DNN韧性的重要因素之一是用于训练模型的数据集。因此,使用更多的训练数据来训练模型会提高其准确性。然而,大多数文献中的可靠性研究都研究了使用较小数据集(如CIFAR-10和MNIST)训练的DNN的可靠性,特别是FPGA和其他类别。因此,研究在更大基准数据集(如ImageNet)上训练的DNN的可靠性可能会产生有益的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D了一天bug忘了编译

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值