体系结构论文导读(二十八):DRQ: Dynamic Region-based Quantization for Deep Neural Network Acceleration

2020-ISCA:DRQ: Dynamic Region-based Quantization for Deep Neural Network Acceleration

一、文章核心

传统的量化技术通常在网络或层级别进行这可能无法利用细粒度的量化来进一步加速,或者仅应用于内核权重而忽略了特征图的动态性,可能导致较低的神经网络准确性。文章提出了一种动态区域量化方法DRQ,能够基于特征图中的敏感区域动态改变DNN模型的精度,从而在保持较高神经网络准确性的同时实现更大的加速。

二、文章背景

面对DNN对计算能力需求的不断增加,量化已被公认为一种有效的减轻推理负载的技术,并衍生出许多加速器设计,如Eyeriss、BitFusion和OLAccel。量化技术通过将浮点数据转换为整数数据或将数据分组,可以大大减少工作量和所需的内存带宽,从而整体上提高加速器的性能、能量效率和硅片面积。传统的量化技术通常基于权重值的静态分布进行量化,这简化了量化方案,使解决方案在任何内核执行开始时都是固定的。然而,输入特征图的值也很重要,并且对神经网络有不同程度的影响。现有的量化技术未能动态捕捉输入特征图值的敏感性和变化性,错过了进一步降低功耗和提高准确性的机会。因此,我们的动机是对特征图中的不同敏感度应用不同的量化级别。

DRQ方案

DRQ是一种新的动态区域量化方法,用于捕捉输入特征图中的特征,并基于敏感区域动态调整计算精度。通过动态跟踪输入特征图中的敏感区域(这些区域可能包含对最终推理结果重要的特征信息),并根据敏感度智能调整计算的权重和激活精度,从而保留输入特征图的特征,同时从非敏感区域节省大量计算资源和功率。

对比分析

DRQ与传统的静态量化技术不同,能够动态地根据敏感区域调整权重和输入值的量化。这使得高精度计算发生在特征图的关键位置,适应实时应用中的输入图像变化。传统方案仅支持网络级或层级量化,而DRQ能够支持子层甚至子特征图级别的量化,提供了更大的细粒度调整自由度。DRQ硬件友好,可以通过稍微修改现有的卷积阵列实现,大大保留神经网络的准确性并节省功率。

二、 确定输入特征图中的敏感区域

根据卷积神经网络(CNN)输入特征图中的值分布观察到,经过批量归一化和ReLU激活函数处理后,大多数输入特征图值接近或等于零,而少数值较大。由于量化这些值会影响神经网络的准确性,因此自然会产生两个问题:

  1. 输入特征图中是否存在对神经网络准确性重要的某些值?这些值如何影响准确性,影响到何种程度?
  2. 这些值在输入特征图中的位置如何分布?

为研究这两个问题,首先验证输入特征图中的少量关键值确实会影响准确性,称之为敏感值。即使添加少量噪声,这些敏感值也会对预测准确性产生重大影响。

此外,显示这些值在输入特征图的各个层次中倾向于在空间上聚集,形成敏感区域。因此,敏感值和区域应被仔细识别,并以细粒度方式量化,以保留神经网络的更多特征细节,而对其他不敏感区域则无需如此处理。

A. 敏感值

在本节中,将研究影响神经网络准确性的输入敏感值的存在及其程度。以CIFAR-10和ILSVRC-2012数据集上的ResNet-32为例,首先将输入特征图值按大小分为几个段。然后在不同段的值上添加噪声。使用常数因子u表示噪声的大小,通过改变u来调整噪声强度。最后,测量神经网络的准确性,通过改变u研究不同段的敏感性。图2展示了结果,不同曲线代表不同模式。例如,标记为“TFF”的曲线表示仅向段0添加噪声,而“FTT”曲线表示向段1和段2添加噪声。从图中可以得出以下几点观察:

  1. 仅向一个段添加噪声时,“TFF”曲线在较小的u时下降更快,而“FTF”和“FFT”曲线下降较慢。
  2. 只要向段0添加噪声,不论是否向其他段添加噪声,网络表现基本相同,因为“TFF”、“TFT”、“TTF”和“TTT”曲线几乎重合。
  3. 段2中的小值能容忍更大的噪声,只有当u变得很大时,“FFT”才开始下降。
  4. 不同数据集对噪声的反应类似。ILSVRC-2012比CIFAR-10稍微容易受到噪声影响,因为它分类的对象类型更多,需要更多图像细节。

这些观察清楚地表明,不同的输入值(在段内)对最终准确性有不同的影响(或敏感性)

B. 敏感区域

在本节中,将探讨这些敏感值在特征图中的空间分布。以LeNet-5与MNIST数据集为例,训练网络后,随机选择一个原始图像(例如数字“3”)进行推理过程。图3展示了前三层的输入特征图。不同颜色标记值为三段。从图中可以看到,段0中的大值并非随机分布在所有层的输入特征图中,而是倾向于在空间上聚集形成几个敏感区域。同时,段2和段3中的小值在特征图中占主导地位,作为不敏感区域。

可以将整个特征图划分为若干x×y矩形区域,每个区域可以被归为敏感或不敏感区域。接下来,可以对不同区域应用动态量化策略。考虑到敏感区域仅占小部分且不敏感区域在整个特征图中占主导地位,敏感度分析为通过运行时量化策略提高推理效率提供了新机遇。

因此,提出了一种动态特征图区域量化方案——软硬件协同设计方案,以在几乎不损失神经网络准确性的情况下加速推理性能。该方案包括DRQ算法和相应的架构设计。

三. 动态区域量化算法

A. 算法概述

DRQ算法如图4所示,包含两个步骤:

  1. 敏感区域预测: 首先设计一个预测算法来定位输入特征图中的敏感区域。对目标特征图执行均值滤波,然后使用阶跃激活函数生成二进制掩码,从而区分输入特征图中的敏感和不敏感区域。
  2. 混合精度卷积: 提出了一种用于推理计算的混合精度卷积,根据输入特征图的敏感度在运行时调整卷积核精度。例如,当卷积核滑过敏感区域(图4中的绿色块)时,卷积进入高精度模式,对权重和输入特征图进行细化量化。否则,卷积在不敏感区域(图4中的粉色块)使用低精度模式。
B. 敏感度预测

给定一个h×w维度的输入特征图,首先将输入特征图从FP32量化为INT8,这是传统量化方案中的一个典型步骤,因为INT8足以应对大多数推理工作负载。然后将特征图划分为若干x×y区域。对于每个区域,如图4所示,使用全1的x×y卷积核(均值滤波)进行点积运算,生成一个输出值。最终得到h×w/x×y个输出值。将所有输出值与预定义阈值进行比较,比较过程可以视为使用图4所示的阶跃激活函数。如果输出值大于阈值,则对应区域为敏感区域。最终生成一个h×w/x×y维度的二进制掩码图,掩码图中的“1”表示该区域为敏感区域,而“0”表示该区域为不敏感区域。这可以应用于每个输入通道进行敏感度预测。

C. 混合精度卷积

一旦区分出敏感和不敏感区域,便执行混合精度卷积。本文定义INT8卷积为高精度,INT4卷积为低精度。根据掩码图记录的敏感度信息,混合精度卷积有两种常见情况,如图5所示。注意,内核权重始终以INT8格式存储在DRAM中,但输入特征图的值可以根据其敏感度存储为INT8或INT4格式。

  • 情况1: 区域为敏感区域。当卷积核滑过该区域时,使用INT8表示权重和区域内的值,并执行8位卷积。
  • 情况2: 区域为不敏感区域,该区域内的值已存储为INT4格式。当卷积核滑过该区域时,将权重精度裁剪为INT4,并执行4位卷积。
D. 设计空间探索

敏感区域数量越少,可加速卷积的INT4计算越多,但可能影响神经网络准确性。敏感区域的大小也很重要。不同的神经网络模型可能需要不同的区域大小,具体取决于特征的特性。一般来说,较大的区域意味着粗粒度识别,这是硬件友好的选择,但代价是较低的神经网络准确性。相反,较小的区域可能保留细粒度特征,具有更高的神经网络准确性,但可能导致频繁的精度切换和更复杂的控制。

为了确保神经网络的准确性,需要重新训练预定义的神经网络模型,并微调权重,使其能够感知特征图中的敏感信息。在此过程中,还可以找到合适的阈值和区域大小。首先获取每层输入特征图的值分布,根据值分布选择初始阈值和区域大小,通常从较大值开始。然后重新训练模型以保证准确性,在前向传播过程中应用混合精度卷积,权重更新时使用全精度反向传播以最小化神经网络准确性的损失。重复上述训练过程直到神经网络收敛。接下来,进行混合精度卷积推理,评估神经网络准确性是否符合预期要求。如果符合,确定阈值和区域大小,否则通过减半区域大小或阈值重复上述步骤。虽然这种方法依赖于试错,但通常可以在几次迭代内找到满意的值。

算法本人不是很懂,以上基本复制的文章原本的翻译,本人将主要关注硬件设计方面

四、动态区域量化的架构设计

A. 架构概述

传统加速器无法支持DRQ算法,原因有两个主要挑战:

  1. DRQ算法需要根据输入特征图的值进行动态混合精度卷积,而这些值无法像权重那样离线学习。这需要架构能够随时处理随机精度切换。
  2. 不同的精度级别可以在单个PE阵列内部交错,导致不同的计算和内存吞吐量。

图6展示了提出的DRQ架构,主要由多个处理单元(PE)页组成,这些页面通过全局缓冲与内存通信。每个PE页主要包括行缓冲器、混合精度卷积阵列、累加单元、输出缓冲器、激活和池化单元、敏感度预测器以及相关控制逻辑。

架构工作流程如下:

  • 全局缓冲器存储原始输入特征图和权重。每个PE页中有一个im2col/pack引擎,从全局缓冲器中提取特征图,将其转换为规则格式并打包到输入行缓冲器中。
  • 关键部分是支持混合精度卷积的卷积阵列,部分和变量核大小的累加在输出缓冲器中进行。激活和池化功能后,输出特征图被送到敏感度预测器,以识别下一个卷积层的敏感区域。
  • 最终,输出结果存储到全局缓冲器中。DRQ加速器可以通过良好的调度避免PE页之间的数据通信。
B. 行缓冲器和输入数据打包

行缓冲器位于全局缓冲器和卷积阵列之间。在每个PE页中,输入特征图从全局缓冲器读取,将其转换为适合混合精度卷积的格式,并与二进制掩码一起打包到行缓冲器中,然后输入特征图值被馈送到卷积阵列的最左侧PE中。

如图7(a)所示,输入特征图被转换为列状排列并以交错方式存储在行缓冲器中。为了适应混合精度卷积,输入特征图被密集打包以提高行缓冲器存储利用率。不敏感值打包为4位寄存器,如F00,而敏感值打包为8位寄存器,如F04。掩码缓冲器中的二进制掩码决定卷积阵列中PE的工作模式。

C. 可变速卷积阵列

图6显示了由支持混合精度计算的PE组成的卷积阵列。在DRQ架构中,权重始终以INT8格式量化并在卷积过程中保持在每个PE中。左列PE每个时钟周期从行缓冲器接受新的特征图值,特征图值向右移动,部分和向下移动到相邻的PE中。

  1. 多精度PE: 图8展示了PE的多精度功能。PE设计为能够执行两种不同精度(INT4和INT8)的MAC操作。PE有两个8位寄存器W和F,分别保存权重值和输入值,16位寄存器P存储部分结果。PE默认处于INT4模式,当需要时可以切换到INT8模式,具体过程如图所示。

  2. 混合精度执行流程: 图7(b)展示了混合精度卷积阵列的执行流程。当所有PE接收到不敏感值时,它们表现为INT4单元。当接收到敏感值时,卷积阵列仍以可变速方式工作,INT8模式下需要四个时钟周期完成计算,INT4模式下只需一个周期。为了同步,接收到INT8值的PE将等待三个周期。

  3. 阵列控制方案: 混合精度卷积阵列的控制方案遵循与数据流相似的方式。通常,所有PE在INT4模式下工作。当任何PE接收到INT8特征图值时,切换该列到INT8模式。其他PE如果接收到INT4值,需要等待三个周期以同步执行。

D. 输出缓冲器和累加单元

输出缓冲器位于卷积阵列和预测器之间,临时存储部分结果并进行输出特征图的就地累加。结果送到激活/池化单元,其结果再送到敏感度预测器,用二进制掩码量化输出特征图。

设计了双缓冲方案以并行化卷积累加和“激活-池化-预测”过程。卷积阵列优先处理大多数神经网络模型中的3×3核大小,也支持其他配置,如5×5和7×7。

E. 敏感度预测器

敏感度预测是实现DRQ的关键。根据第三部分讨论的预测方案,提出了可重用池化单元的敏感度预测器设计。

图9展示了池化和预测过程。将当前特征图的池化结果用作下一层卷积的输入,通过池化结果进行预测生成二进制掩码图。

如图10所示,池化和预测过程中激活的访问顺序不同。需要在预测器中暂时存储池化结果,用于后续计算。实验显示,较大y和较小x的条形区域更经济,有利于节省存储空间。

这种敏感度预测器设计支持大多数神经网络模型,即使卷积层未跟随平均池化或其他操作,也需执行上述预测步骤,只是不将池化结果存储回全局缓冲器。

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

D了一天bug忘了编译

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

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

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

打赏作者

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

抵扣说明:

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

余额充值