体系结构论文(五十一):Drift: Leveraging Distribution-based Dynamic Precision Quantization for Efficien【DAC‘24】

Drift: Leveraging Distribution-based Dynamic Precision Quantization for Efficient Deep Neural Network Acceleration【DAC‘24】

介绍了一种新的DNN加速方法,Drift,通过基于数据分布的动态精度量化来提高深度学习模型的运行效率

一、文章背景

1. 背景

随着DNN模型变得越来越庞大(两年内增长了240倍),现有的静态量化方法不足以充分利用模型中的稀疏性和冗余性,尤其是对于越来越大的模型(例如LLMs)。

2. 动机

现有的静态量化方法固定了数据的精度(如权重和激活值),但DNN中的数据通常是动态的,各个区域的数据分布特性差异较大。因此,使用静态量化无法充分利用这些差异。例如,在图像分类任务中,物体的像素比背景像素更重要。这样的动态性无法通过静态量化来充分体现。

图1中的三张子图展示了子张量(张量的一部分,即从一个更大的张量中提取出来的一个较小的矩形或立方区域)在DNN中的动态性和分布情况:

  1. (a) Sub-tensor profiling in ViT:图像Transformer模型中的子张量分析,展示了子张量的最大值和平均值的分布,表明不同子张量之间的差异很大。
  2. (b) Sub-tensor profiling in BERT:在BERT模型中的子张量分析,展示了类似的现象,即不同子张量的最大值和平均值之间的差异。
  3. (c) Sub-tensor distribution in BERT:显示了BERT模型中的子张量分布,表明这些子张量的分布符合拉普拉斯分布。

3. 动态量化

一些研究已经开始探索动态量化,这种方法根据数据的动态性调整计算的精度。例如,DRQ是一种根据激活张量的不同区域动态选择4位或8位精度的算法,而DTQAtten则为自然语言处理模型中的每个token选择不同的精度。然而,现有的动态量化算法存在两个主要问题:

  1. 现有算法通常针对特定的场景设计,无法泛化到其他类型的DNN模型。例如,直接将DRQ应用于BERT模型会导致超过12%的精度下降。
  2. 现有的支持静态量化的加速器无法高效支持动态精度的计算。

4. Drift动态量化算法

为了解决上述问题,文提出动态精度量化算法,可以动态地选择不同的数据精度。具体来说,它会根据低精度格式的“表示能力”来选择合适的精度设置,同时保持计算精度不损失。

核心思想

  • 动态选择子张量(如激活张量中的部分区域)的精度。通过分析子张量的数值分布,算法能够判断哪些区域可以使用低精度进行计算,哪些区域需要更高的精度。
  • 这种方法可以利用现有的硬件资源,不需要额外的计算或芯片面积的开销。

5. Drift硬件架构

为了支持该算法,研究设计了一个新的加速器架构

  • Drift可以将不同精度的计算分配到不同的systolic arrays中,避免因动态精度计算带来的数据流阻塞问题。
  • Drift的在线调度策略可以在运行时动态平衡不同精度计算的资源分配。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

D了一天bug忘了编译

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

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

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

打赏作者

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

抵扣说明:

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

余额充值