Soft errors in DNN accelerators: A comprehensive review
DNN 加速器中的软错误:全面回顾
一、文章核心
深度学习任务覆盖了广泛应用。DNN算法被实现于不同系统上,从小型嵌入式设备到数据中心。DNN加速器(例如GPU、FPGA、ASIC)因为其效率比CPU高而成为DNN算法的主要执行硬件。然而,这些加速器容易受到多种故障的影响,其中软错误特别具有威胁性,因为高水平的并行性可能会将单个故障传播成多个错误,最终影响模型预测的输出。本文对DNN加速器的可靠性进行了全面的综述,探讨了DNN加速器在瞬态故障下的可靠性,并对未来的研究方向进行了预测。
二、INTRO
近年来深度神经网络(DNN)发展迅速,获得了前所未有的流行。根据国际数据公司(IDC)的最新报告,仅在2019年,人工智能(AI)系统的支出就达到了240亿美元,预计到2023年将达到979亿美元,其中大部分支出在AI硬件上。DNN被广泛应用于计算机视觉、语音识别和自然语言处理等领域,并在诸如自动驾驶汽车和医疗保健等复杂任务关键系统中得到了广泛应用。
DNN的容错能力
DNN的容错能力:人工神经网络(ANN)被认为对瞬态故障(软错误)具有容错能力,基于以下几点观察:
- 神经网络包含大量神经元,即使部分神经元失效,仍能完成整体任务。
- 神经网络模拟人脑,能够容忍一定程度的神经元故障,甚至可以利用噪声作为计算来源。
- 研究工作主要关注性能最大化,而忽略了可靠性。
- 学习能力使得神经网络能够在训练过程中和训练后处理不完整数据和噪声。
然而,这些特性不易扩展到现代DNN系统,原因包括现代DNN模型结构更复杂、安全关键系统需要更高的安全标准、DNN加速器成为DNN模型的主要执行硬件,以及物联网设备带来的存储和功耗限制。
图1展示了软错误如何从DNN加速器传播到神经网络模型的输出。具体来说:
- 硬件中的瞬态故障会导致计算或存储数据的错误。
- 这些错误会在神经网络模型中传播,导致最终输出的错误,如卡车被错误分类为鸟。
三、MOTI AND BACKGROUND
图2展示了一个DNN(深度神经网络)中单个神经元的工作原理及其主要组成部分。具体如下:
- 输入(Inputs)
- 权重(Weights)
- 加权和(Sum-of-product)
- 偏置(Bias)
- 激活函数(Activation Function, F(g))
图3展示了DNN加速器的架构及其主要组件。具体如下:
- 全局内存(Global Memory, GBM):
- 存储需要处理的数据和中间结果。
- 处理单元(Processing Elements, PE):
- 多个PE组成阵列,每个PE包含一个算术逻辑单元(ALU),用于执行乘-加(MAC)操作。
- PE负责进行大量并行计算,提高DNN模型的计算效率。
- DRAM:
- 外部存储器,用于提供更大的存储空间,与GBM进行数据交换。
3.1 深度神经网络(DNN)
DNN是具有多个隐藏层的ANN,即“深度”意味着更多的层次。DNN通过对输入值进行加权和计算输出。常见的DNN架构包括多层感知器(MLP)和卷积神经网络(CNN)。
-
基本操作:
- DNN的基本操作是矩阵乘法,神经元接收输入并进行点积或卷积操作,然后通过激活函数计算输出。这些操作可以总结为乘-加(MAC)操作,是DNN计算的核心。
-
MLP和CNN的区别:
- MLP(多层感知器):由全连接层组成,每个神经元与前一层的所有神经元相连。
- CNN(卷积神经网络):由卷积层组成,卷积层通过局部连接的滤波器在输入空间滑动,应用于输入的每个区域。卷积层比全连接层更适合处理图像数据,因为它们能够捕捉空间关系。
-
学习过程:
- DNN模型通过监督学习进行训练。训练过程中,模型通过大量的计算和存储需求,调整权重和偏置以最小化损失函数。训练好的模型在推理阶段用于对新数据进行预测。
3.2 DNN加速器
-
加速器定义:
- 加速器是一种与CPU协同工作的硅芯片,设计用于计算密集型应用(如深度学习算法),提供比多核CPU更高的性能。
-
加速器组成:
- DNN加速器由全局内存(GBM)和处理单元(PE)组成。每个PE包含一个算术逻辑单元(ALU),用于执行乘-加(MAC)操作。ALU负责进行大部分计算。
-
CPU与加速器:
- 尽管CPU在灵活性和易用性方面具有优势,但在并行计算(如DNN)方面,CPU效率低于专用加速器。加速器通过并行处理提高了DNN模型的计算效率。
3.3 软错误
-
系统/设备的可靠性:
- 系统/设备在存在故障时仍能持续工作的能力,即设备抵御电子元件故障的能力。
-
软错误的来源:
- 辐射引起的错误:由电离辐射引起的错误,可能永久损坏设备或导致系统故障。
- 老化:电路特性(如延迟)随时间的退化。
- 工艺变异:芯片制造过程中的晶体管属性变异。
- 温度:热问题通过增加软错误率以及电路老化率影响可靠性。
-
软错误的影响:
- 软错误不会永久损坏设备,但可以修改存储在存储元件中的值或更改信号状态,导致DNN加速器产生错误的计算结果或错误的预测。特别是在任务关键系统和空间应用中,软错误已经成为主要问题。
- 与传统电子设备不同,DNN 加速器是采用尖端技术和大量并行结构构建的协处理器。它们极易因软错误而损坏 。此外,加速器是当今所有复杂计算机系统的生命力,例如 DNN 模型。瞬态故障可以通过多种方式扰乱加速器的运行。然而,在 DNN 加速器中造成瞬态故障的两个原因值得更多关注:(1) 这些加速器内用于改善延迟的复杂内存层次结构 ; (2)DNN加速器的大规模并行结构,倾向于将单一故障扩展到多个故障。
3.4 相关前期工作
-
现有研究的局限性:
- 一些研究回顾了DNN系统(包括加速器和算法)中的瞬态故障影响,但研究范围有限,未涵盖所有类型的DNN加速器(如GPU和FPGA)。
四.DNN加速器分类
3.1 GPU(图形处理单元)
GPU目前是最突出和最主要的DNN加速器。这是由于GPU的计算能力和大规模并行架构,能够轻松满足DNN的需求。GPU已被用于加速AI算法超过十年,包括训练和推理阶段。主要GPU制造商包括NVIDIA、Intel和AMD。
- 离线训练系统:当前的基本训练系统采用离线训练方法在GPU上进行。例如,NVIDIA的Tesla V100专为深度学习训练设计,支持世界上最强大的计算机。
- 嵌入式产品:NVIDIA的Xavier GPU专为嵌入式产品设计,用于如自动驾驶汽车等需要实时物体检测的系统,通常用于推理。
- 内部结构:GPU的内部结构非常复杂,流处理器(Streaming Multiprocessors, SMs)是并行性的基本单元,每个SM可能有数百到数千个核心,这些核心是基本的处理单元。此外,GPU的内存层次结构高度并行,并在各种资源之间共享。
尽管GPU有其优势,但也有一些局限性,如高功耗,这促使了其他加速器的创新。由于物联网(IoT)设备提供的移动特性,功耗和响应时间是使GPU在某些场景中不合适的两个主要原因。
3.2 ASIC(专用集成电路)
ASIC是一种专门为单一任务定制的处理器,这个任务在设计后无法更改。使用ASIC加速AI算法的目的是解决GPU的功耗限制。由于DNN计算的关键瓶颈是内存访问,ASIC加速器利用数据重用模式来减少片外内存访问,使其速度极快。这些加速器提供了接近GPU的性能,但能效更高。
- 示例:Google的TPU(张量处理单元)目前用于Google云平台和数据中心的训练和推理。其他示例包括DianNao系列、Cambricon-X、Eyeriss和MAERI。
- 架构:这些加速器通常使用256×256的MAC单元阵列作为其核心,并配有大量片上内存。然而,随着芯片密度的增加,软错误率也会随之上升。
3.3 FPGA
FPGA的可重配置性、多功能性和低功耗使其成为在特定场景中加速DNN算法的明智选择。FPGA加速器在物联网和移动设备中因其能效而受到欢迎,是深度学习推理的理想选择。此外,FPGA最近在数据中心(如Microsoft Brainwave)中也变得流行,因其出色的推理能力,尽管在一定程度上也用于训练。
- 实现方法:在FPGA中实现MAC操作有两种方法:使用FPGA的可配置逻辑块(CLB)资源(如查找表、触发器和进位逻辑)或使用数字信号处理(DSP)切片。然而,这两种单元都容易受到软错误的影响,最终可能导致DNN模型输出失败。
3.4 其他
DNN加速器也可以以数字信号处理器(DSP)的形式开发。然而,DSP经常与CPU、FPGA和GPU在异构系统中协同工作,因此将DSP作为独立的DNN加速器分类并不明确。相反,本部分涵盖了不依赖于特定加速器类别的研究,特别是那些针对加速器的内存元素提出的可靠性解决方案。这些解决方案可以应用于不同类别的DNN加速器。
五、方法综述
图4展示了软错误(如辐射)如何影响DNN加速器和DNN模型的可靠性,并通过不同的组件进行可靠性分析。
故障来源(Source of Faults):
- 例如辐射,可以引起软错误。
软错误(Soft Errors):
- 软错误会影响DNN加速器的内存元素、控制元素和处理元素,进而引发可靠性问题,导致模型不可靠。
DNN加速器(DNN Accelerator):
- 包括GPU、ASIC、FPGA和其他类型的加速器。这些加速器的不同组件(如内存、控制和处理单元)会受到软错误的影响。
DNN架构(DNN Architecture):
- 包括CNN和MLP等DNN模型架构。模型的激活、参数、层、激活函数/层等组件会受到软错误的影响。
可靠性问题(Reliability Issues):
- 软错误引发的可靠性问题会导致模型不可靠。为了提高可靠性,需要采用各种缓解技术(Mitigation Techniques)。
4.1 DNN组件
为了评估每个类别的可靠性,至少应考虑以下DNN组件/指标之一:
-
激活和参数(Activations and Parameters):
- 数据用于DNN模型完成任务。激活指输入、中间输出(特征图)和输出信号。参数指模型的权重和偏置。
-
激活函数(Activation Functions):
- 引入非线性到DNN网络的计算中。激活函数跟随每个神经元/层,输出激活信号。常见的激活函数包括ReLU、Sigmoid和Tanh。
-
层(Layers):
- DNN的计算取决于层的类型。层在神经网络的特定深度同时对一组神经元执行MAC操作。一些层可以掩盖大部分错误,阻止它们到达输出层。
-
DNN阶段(DNN Phases):
- DNN的部署分为两个阶段:(1)训练阶段,创建调优的DNN模型。(2)推理阶段,使用训练好的模型对新数据进行预测。
-
数据格式(Data Formats):
- DNN的数据(如激活和参数)以固定点(FxP)或浮点(FP)格式存储在内存元素中。浮点格式包括半精度(FP16)、单精度(FP32)和双精度(FP64)。
-
数据集(Considered Dataset):
- 为了构建高精度模型,需要在更多的数据样本上进行训练。数据集的大小、噪声特征、标签错误、省略值和适用性都是影响模型性能的重要因素。
-
DNN的目的(Purpose of the DNN):
- DNN模型的最终目标。常见的有图像分类(识别图像所属类别)和物体检测(定位图像/场景中的物体并识别每个物体)。DNN模型通常通过精度、精准度和召回率等指标进行优化。
-
DNN架构(DNN Architecture):
- 指DNN网络中组件的排列方式,如神经元的层和层间连接模式。不同的架构(如MLP和CNN)以不同的方式执行DNN操作,并由不同类型的层组成。
4.2 加速器元素
为了评估每个类别的可靠性,至少应考虑以下加速器的元素/因素之一:
-
内存元素(Memory Element):
- 指DNN数据临时存储的位置,包括DRAM(主内存)、SRAM(片上内存)和寄存器。分析这些元素的值/地址中的故障影响。
-
处理/控制元素(Processing/Control Element):
- 执行DNN的MAC操作和其他逻辑计算,协调加速器的操作/指令。DNN加速器有多个并行的处理/控制元素,包括算术逻辑单元(ALU)、浮点单元(FPU)、加载存储单元(LSU)、触发器、逻辑门、取指和解码单元、调度器以及SRAM基FPGA的配置位。
-
评估方法(Evaluation Approaches):
- 有两种主要策略评估DNN加速器的易损性:硬件故障注入(如束实验)和软件故障注入(如仿真工具)。评估的影响因素包括特定研究使用的故障注入工具、注入故障的层次和注入率(高vs.低)。
-
故障/错误模型(Fault/Error Model):
- 是可靠性评估中最有影响力的因素之一。确定了特定研究中评估的方向和范围,回答了哪些加速器组件会被考虑及其行为、考虑的错误类型(如SEU或SET)以及特定研究中如何定义错误严重性的问题。
-
错误传播行为(Error Propagation Behaviors):
- 一旦在早期层发生错误,它可能会传播到随后的各层,直到到达模型的输出。错误传播过程根据每个类别的底层硬件结构不同而表现不同。
-
缓解技术(Mitigation Techniques):
- 用于保护DNN系统免受瞬态故障的影响。每种DNN加速器类别需要不同的缓解方法,以保护其组件免受软错误的影响。