体系结构论文导读(三十六):Boosting Bit-Error Resilience of DNN Accelerators Through Median Feature Selection

目录

核心内容

可靠性实现方式

侧重点

 一、引言

深度学习在实际应用中的广泛应用

面临的挑战

本文提出的新技术

二、相关工作

错误注入框架

错误检测技术

对电压/频率缩放的抗比特错误能力

可靠性感知调度

对模拟硬件噪声的鲁棒DNN模型

应对DNN加速器永久性缺陷

三、技术路线

A.

1. 全连接层中的中值特征选择

2. 卷积层中的中值特征选择

3. 优化和性能

B.DNN模型与中值过滤器结合训练

1. 中值操作的集成

2. 实现方法

3. 训练过程

4. 训练中值特征选择模型的例子

C.中值特征选择技术集成到脉动阵列中的方法

1. 脉动阵列架构简介

2. 集成中值特征选择单元的步骤

图8:脉动阵列架构中的中值单元集成

图9:优化的Median-3单元设计

3. 性能优化和共享计算

 但对于这篇文章,我对中值过滤在矩阵上的应用有一些费解:

这个方法能否用来检测矩阵本身?如果一个矩阵 123 1 2 ;123 1 2 ;123 1 2; 这样处理完之后岂不是变化巨大,本身是对的处理完之后结果有问题了?对于用于DNN层目前来看应该没有问题


Boosting Bit-Error Resilience of DNN Accelerators Through Median Feature Selection
这篇文章的核心是提出一种名为“中值特征选择”的新技术,以提高DNN加速器在比特错误环境中的抗扰性。作者通过在每层DNN计算之前过滤比特错误的影响,极大地增强了系统在高错误率下的可靠性,同时保持了较低的面积和功耗开销。

  1. 核心内容

    • 引入了一种新的中值特征选择技术,通过在每层DNN计算之前过滤比特错误的影响,来提高系统的可靠性。
    • 这种技术利用了神经网络固有的冗余,不需要额外的参数或乘加操作,从而避免了传统技术通常带来的高昂开销。
    • 中值特征选择可以有效地在硬件中执行,并作为模块化插件无缝集成到嵌入式DNN加速器中。

可靠性实现方式

文章的可靠性实现主要是通过在每层计算之前进行中值特征选择过滤来实现的。该技术的核心思想是:

  • 通过滑动窗口对输入特征进行中值过滤,去除大幅度的数值偏差,从而减少比特错误对DNN计算的影响。
  • 这种方法可以在硬件中高效实现,并能与现有的DNN训练工具和技术无缝结合。

侧重点

  • 体系架构:该技术是一种体系架构级的解决方案,通过硬件模块的设计和集成来实现抗扰性提升。
  • 算法:中值特征选择本身是一种基于统计学的算法,用于识别和过滤异常值。
  • 推理:文章的主要工作在推理阶段,通过硬件实现中值过滤来增强DNN的抗扰性。

中值特征选择的原理:中值特征选择技术的核心思想是将图像处理中成功应用的中值滤波技术引入到神经网络中,以过滤掉激活值和权重中的尖峰错误。

操作步骤:

  1. 检测错误:在神经网络每一层的计算之前,检查输入数据中可能存在的异常值(错误信号)。

  2. 中值过滤

    • 使用一个“滑动窗口”覆盖输入数据的一部分。
    • 在每个窗口内,找出中间的那个值(即“中值”),把它当作代表,这样就能过滤掉那些特别大的错误值。
    • 例如,如果窗口大小是3,输入数据是 [1, 100, 2],中值是2,所以过滤后的值就是2。
  3. 替换输入:用这些中值替换原来的输入数据,确保进入下一层计算的数据更加“干净”。

类比:想象你在做一个平均分数的统计,但有些成绩单上有明显的错误,比如满分是100,有个成绩却写了999。为了不让这个错误影响整体结果,你可以:

  • 把所有成绩按顺序排好
  • 取中间的那个值作为代表(而不是简单地取平均值)
  • 这样,即使有极端错误,也不会对结果有太大影响。

 一、引言

深度学习在实际应用中的广泛应用
  • 广泛应用:深度学习技术已经被广泛应用于现实生活中,特别是在各种安全关键的嵌入式应用中,如自动驾驶、医疗设备、机器人和工业控制系统。
  • 高准确性:现代深度神经网络在诸如图像分类和目标检测等实际计算机视觉任务中达到了接近人类水平的准确性。
  • 降低设计成本:DNN通过消除手动特征工程的需求,降低了设计成本,这对于规模庞大的实际问题尤为重要。
面临的挑战
  • 硬件错误保护:神经网络计算需要防范硬件错误,但传统的错误容忍技术的开销非常大,限制了它们在资源有限的嵌入式平台上的使用。
  • 高错误率场景:在积极的能源和性能优化下,高错误率场景变得越来越普遍,这进一步限制了传统技术的应用。
本文提出的新技术
  • 中值特征选择技术:为了应对上述挑战,本文引入了一种新的中值特征选择技术,用于在每层执行之前过滤比特错误的影响。
  • 技术特点
    • 可以视为一种细粒度的模块化冗余方案,但它完全基于网络的固有冗余构建,不需要额外的参数或乘加操作,从而消除了传统技术通常带来的过高开销。
    • 中值特征选择可以高效地在硬件中执行,并作为模块化插件无缝集成到嵌入式深度学习加速器中。
    • 深度学习模型可以通过标准工具和技术进行训练,以确保与特征选择阶段的良好操作接口。

二、相关工作

错误注入框架
  • 研究内容:Li等人、Reagen等人和Neggaz等人通过广泛的错误注入实验评估了最先进神经网络模型的抗比特错误能力。提出的技术在DNN图抽象层面进行错误注入,以加速评估过程。
  • 方法:Dos Santos等人进行了架构级错误注入以及中子束实验,以评估深度学习算法在GPU设备上的可靠性。
错误检测技术
  • 研究内容:Li等人和Schorn等人提出了基于症状的错误检测技术,用于DNN计算。
  • 方法
    • Li等人检查激活幅度是否在预期范围内,以识别关键的比特错误。
    • Schorn等人使用一个较小的独立DNN模型来区分主网络中的关键和非关键比特错误。
    • Ozen和Orailoglu利用乘加运算(MAC)操作的线性特性构建全连接层和卷积层计算中的错误检测校验和。
    • Ozen和Orailoglu在DNN训练中使用额外的惩罚项,以嵌入有用的错误检查不变量。

这些技术主要处理错误检测问题,尽管[22]中提供了有限的错误校正能力,并且可以集成到[17]中,但当计算中存在大量错误时,这些方法都不能提供令人满意的错误校正结果。

对电压/频率缩放的抗比特错误能力
  • 研究内容:Zhang等人利用Razor触发器检测定时错误,并结合架构旁路阻止电压缩小DNN加速器中的比特错误传播。
  • 方法:Reagen等人采用Razor技术和错误掩蔽来处理电压缩小DNN加速器缓冲区中的SRAM读取错误。Pandey等人设计了一种自适应电压提升方案,利用Razor触发器和输入序列记忆技术,主动防止过时钟速率的时序错误。 这些技术通过最小化定时错误数量或控制错误影响,提升了电压/频率缩小加速器的准确性。
可靠性感知调度
  • 研究内容:Schorn等人和Choi等人观察到DNN模型中的脆弱性分布不对称(即某些神经元/滤波器在决策中占主导地位),并将关键计算调度到更可靠的处理单元。
  • 方法:错误率增加来源于激进的电压缩小。在[26]中,由于工艺差异,某些处理单元比其他单元运行得更快,因此不太可能出现定时错误。Schorn等人考虑了由高能粒子引起的单事件翻转,并假设一部分处理单元可以以成本效益高的方式进行硬化。 可靠性感知调度是一种必要且互补的技术,它允许在神经网络组件之间进行优先级排序,以最小化错误对网络决策的影响。
对模拟硬件噪声的鲁棒DNN模型
  • 研究内容:先前的工作表明,通过噪声训练可以帮助网络适应模拟域DNN处理(如ReRAM)的不准确性。
  • 方法:Liu等人提出了一种通过错误纠正输出码来提升DNN模型固有自我校正能力的替代技术。尽管该技术提高了针对ReRAM不准确性的可靠性,但对于网络初始阶段出现的错误,其效果有限。
应对DNN加速器永久性缺陷
  • 研究内容:先前文献提出了多种技术来应对CMOS和ReRAM DNN加速器中的永久性缺陷。
  • 方法:这些技术包括设备测试(如[30]中的额外缺陷旁路)和设备特定的缺陷训练,以确保目标模型在有缺陷的设备上部署时能达到竞争性的准确性。

三、技术路线

A.

1. 全连接层中的中值特征选择

在全连接层中,中值特征选择操作如下:

  • 输入处理:全连接层的输入被视为一维向量。
  • 滑动窗口:在输入向量上应用一个滑动窗口,通过中值过滤器选出中值特征,然后将这些选定的特征传递到下一层。
  • 公式其中,I 和 I^\hat{I}分别为层 l 的原始输入特征和选定输入特征。中值过滤窗口的大小为 w,层 l−1的输出大小为 n_{l-1}。

图4展示了一个具体的例子,输入特征中包含异常值(标记为红色闪电),通过中值过滤,这些异常值被过滤掉,输出更为平滑的特征。

2. 卷积层中的中值特征选择

在卷积层中,中值特征选择操作如下:

  • 输入处理:卷积层的输入是一个三维张量(通常为多个特征图)。
  • 应用方向:中值过滤可以应用于输入张量的任意维度(x, y, z),或多维补丁上。
  • 矩阵转换:为了在现代处理平台上加速卷积层操作,输入特征图在进行矩阵运算前,首先被转换为适当的表示形式。输入特征图被分割成小的3D补丁,并展平为一维向量,然后行连接形成特征矩阵。
  • 中值过滤:在输入特征图转换为矩阵之前,应用中值特征选择技术,确保中值过滤操作在展平后的输入补丁上进行。这种方法简化了过滤技术,实现了全连接层和卷积层操作的统一。
  • 通道维度过滤(图5):在卷积层中,通过在通道维度(z轴)上进行中值过滤,可以有效过滤掉权重错误的影响。输入特征图在z轴上进行中值过滤后,生成输出特征图,过滤掉异常值。

3. 优化和性能
  • 窗口大小和步幅:小的过滤窗口大小(如w=3)可以通过仅需三次比较就能计算出中值。使用单元素步幅(s=1)可以保持输出大小,同时在多个过滤窗口中重复大的错误,确保所有窗口都能过滤掉该错误。
  • 硬件实现:为了在硬件中高效实现中值特征选择技术,可以通过优化设计的硬件单元来实现中值过滤操作。例如,使用简单的比较器和多路复用器构建高效的中值过滤单元(如图7所示)。

 

B.DNN模型与中值过滤器结合训练

1. 中值操作的集成
  • 抑制尖峰输出:中值操作会抑制单个神经元的尖峰输出,因此层的输出应具有局部平滑性,以便与中值特征选择阶段配合。
  • 引入平滑性:在训练阶段引入中值特征选择操作,可以使目标模型具备所需的平滑性。
2. 实现方法
  • 现有库支持:DNN库通常提供现成的中值操作实现,或通过基本操作(如min和max)构建中值功能。
  • 自动微分:使用现有库函数确保自动微分功能,使目标模型可以与现有库例程无缝训练。
  • 训练模拟:在深度学习框架的抽象层上实现中值特征选择操作,并将其集成到目标DNN架构中,模拟中值过滤器在前向和后向阶段的行为。
3. 训练过程
  • 前向传播:在前向传播中,只有中值窗口中的中值被传递到下一层。
  • 后向传播:在后向传播中,中值操作输出的梯度只回传到贡献的输入值上。
4. 训练中值特征选择模型的例子
  • “追逐现象”
    • 例如,在一个3窗口的中值过滤器中,当需要增加中值输出以减少神经网络输出的损失函数时,通过反向传播的梯度更新中值输入值(如I1),直到它超过最大输入值(如I2)。
    • 当I2成为新的中值时,它接收输出梯度并更新,直到再次成为最大值。I1落后于I2后继续更新,如此循环。
    • 这种过程会导致神经元输出相互增强,直到梯度在过滤器输出处稳定下来。

C.中值特征选择技术集成到脉动阵列中的方法

1. 脉动阵列架构简介

脉动阵列是一种常用于深度学习加速器的架构,由乘加单元(MAC单元)组成的二维网格构成。每个MAC单元负责接收和处理部分和,执行乘法和累加操作,然后将结果传递给下一个MAC单元。该架构通过流水线操作,实现高效的并行计算。

2. 集成中值特征选择单元的步骤

中值特征选择单元可以高效地集成到脉动阵列架构中,具体步骤如下:

图8:脉动阵列架构中的中值单元集成
  1. 中值单元阵列

    • 在输入同步阶段之前添加一组中值单元。
    • 这些中值单元负责在输入激活值之间执行指定的中值操作,确保每个窗口的过滤操作在一个时钟周期内完成。
  2. 输入同步

    • 输入激活值经过中值单元处理后,进入输入同步阶段。
    • 输入同步阶段确保输入激活值在正确的时刻传递给MAC单元,保证部分和与正确的乘法结果相累加。
  3. MAC单元网格

    • MAC单元负责接收经过中值过滤的激活值,执行乘法和累加操作,并将结果传递给下一个MAC单元。
    • 整个架构以流水线方式运行,确保高效的并行计算。

图9:优化的Median-3单元设计
  1. Sort-2单元

    • 基本构建块是Sort-2单元,由比较器和两个多路复用器组成,负责排序两个输入值。
  2. Median-3单元

    • 使用三个Sort-2单元构建Median-3单元,通过修剪不使用的多路复用器,优化设计。
    • 优化后的Median-3单元使用三个比较器和两个多路复用器来计算中值。
  3. 集成到脉动阵列

    • Median-3单元可以集成到脉动阵列的输入连接中,在同步阶段之前执行中值操作。
    • 每个中值窗口由独立单元并行处理,确保整个向量的过滤操作在一个时钟周期内完成,并作为流水线阶段集成,避免性能瓶颈。
3. 性能优化和共享计算
  1. 共享重叠计算结果

    • 通过在Median-3单元之间共享比较器,减少硬件资源需求。
    • 例如,当两个Median-3单元操作连续的三元素组{I0, I1, I2}和{I1, I2, I3}时,可以共享I1和I2的排序结果。
  2. 减少比较器和多路复用器

    • 通过共享比较器,将每个模块的比较器数量从3个减少到2个,多路复用器数量从4个减少到2个。
    • 这种优化设计最小化模块延迟,并实现规则的流水线操作。

 

 但对于这篇文章,我对中值过滤在矩阵上的应用有一些费解:
这个方法能否用来检测矩阵本身?
如果一个矩阵 123 1 2 ;123 1 2 ;123 1 2; 这样处理完之后岂不是变化巨大,本身是对的处理完之后结果有问题了?

对于用于DNN层目前来看应该没有问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

D了一天bug忘了编译

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

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

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

打赏作者

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

抵扣说明:

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

余额充值