HAQ:硬件感知自动化量化框架

本文出自论文 HAQ: Hardware-Aware Automated Quantization with Mixed Precision,利用强化学习来自动确定量化策略,并在设计过程中对硬件加速器进行反馈。



一、简介

  1. 传统的量化方法对所有层使用相同的比特数,但是当不同的层有着不同的冗余且在硬件平台上表现有差异性时,对不同的层使用灵活的位宽是很有必要的。然而目前所缺少的部分是如何确定不同硬件加速器上每层的权重和激活的位宽。随着神经网络越来越深,搜索空间也呈指数级增长,只依赖手工策略是不可行的。因此,这些基于规则的量化策略通常是次优的,它们不能从一个模型推广到另一个模型。在本文中,我们想要通过一个基于学习的框架来自动化这个探索过程。
  2. 另一个较大的挑战是如何衡量在硬件上被给定模型的延迟和能耗,一个广泛被接受的方案是依赖一些代理信号(FLOPs,内存引用数)。然而,当不同的硬件表现得非常不同时,在该硬件上一个模型的性能不可能总是精确地被代理信号所影响。另外,在一个硬件上的最优策略并不一定是另一硬件的最优策略。
  3. 我们提出来硬件感知自动化量化(HAQ)框架,它利用强化学习来自动预测给定硬件反馈的量化策略。RL代理方以分层的方式决定给定神经网络的带宽。对于每层,代理方接收到层配置和统计信息作为观察,然后输出动作行为即权值和激活的位宽。我们然后利用硬件加速器作为环境来获取硬件的直接反馈,以指导RL代理方满足资源约束。在所有层被量化过后,我们对量化模型进行了几个周期的微调,并将短期重训练后的验证精度作为对RL代理方的奖励信号。在探索过程中,我们利用深度确定性策略梯度(DDPG)来监督我们的RL代理方。
  4. 本文主要由4个方面组成:(1)自动化(2)硬件感知(3)特殊化(4)设计见解(提供了对神经网络架构设计和硬件架构设计的见解)。
    模型比较

二、相关工作

  1. 量化:传统的量化方法要么简单地将相同数量的比特分配给所有层,要么需要领域专家来确定不同层的比特宽度,而我们的框架将这个设计过程自动化,并且我们基于学习的策略由于基于规则的策略。
  2. AutoML:在自动框架的激励下,He等人利用强化学习来自动修建卷积通道。我们的框架进一步探索了网络权重和激活的自动量化,并且它将硬件架构也考虑入内。
  3. 效率模型:为了便于高效部署,研究者设计了一种硬件友好型的方法来精简神经网络模型。例如,使用粗粒度通道剪枝方法来对卷积核的整个通道进行剪枝来达到加速的目的。Yang等人提出了一种直接优化神经网络消耗的能量感知剪枝方法。然而,这些方法仍然是基于规则的,并且大部分集中于剪枝上。我们的框架使用基于学习的方法,将硬件特定的度量作为直接奖励,从而自动化量化过程。
    框架描述

三、方法

  1. HAQ框架:我们利用强化学习在循环中自动化搜索庞大的量化设计空间与硬件。代理方在给定计算资源数量下提出了一个最佳的位宽分配策略。我们的RL代理方将硬件加速器集成到探测回路中,从而它能够从硬件中获得直接的反馈,而不是依赖于间接的代理信号。
  2. 观察(状态空间):我们的代理以分层的方式处理神经网络。对于每层,我们的代理方采取两个步骤:一个用于权重,一个用于激活。在本文中,我们引入了一个十维特征向量作为我们的观测。对于观测向量中每个维数,我们将其标准化为[0,1],来使它们在相同的规模内。
  3. 动作空间:我们使用一个连续的动作空间来决定位宽。我们不使用离散动作空间的原因是因为其失去了相对的顺序。我们鼓励agent通过限制动作空间来满足计算预算。在RL代理为所有层提供动作后,我们度量被量化模型所使用的资源量,反馈直接来自于硬件加速器。
  4. 来自硬件加速器的直接反馈:我们使用来自硬件加速器的直接延迟和能量反馈来优化性能,这使我们的RL代理能够从不同层之间的细微差别来确定位宽分配策略。
  5. 量化:由于线性量化模型只需要一个有效的固定点算术单元,因为我们使用代理给出的动作来对每一层的权重和激活进行线性量化。在本文中,我们通过寻找在原始权值分布和量化权值分布中最小化KL散度的最优质x来选择c值。
    a r g m i n x D K L ( W k q u a n t i z e ( W k , a k , x ) ) argmin_x D_{KL}(W_k||quantize(W_k,a_k,x))
    对于激活,我们除了将其调整到[0,c]的范围内,还需用类似的方法量化这些值。
  6. 奖励信号:在量化后,我们对量化过的模型进行几个周期的再训练,从而来恢复性能。我们定义奖励直接与精度相关的函数R。
    R = λ × ( a c c q u a n t a c c o r i g i n ) R=\lambda \times(acc_{quant}-acc_{origin})
    其中 a c c o r i g i n acc_{origin} 是原始模型的精度, a c c q u a n t acc_{quant} 是细化后的量化模型精度。
  7. 代理方:对于我们的agent,我们利用了深度确定性策略梯度(DDPG),这是一种用于连续控制问题的非策略参与者-批评家算法。
  8. 实施细节:DDPG代理由一个动作网络和一个批评网络组成,两者都遵守相同的网络架构,它们将状态向量和上次步骤中的动作作为输入,并将它们输入到两个单独的全连接层(隐藏大小为400)。然后我们将两个隐藏向量相加,在经过两个全连接层。至于动作网络,我们使用一个附加的sigmoid函数来将输入映射到[0,1]范围内。DDPG代理的优化则使用ADAM优化算法,并且在探索过程中我们使用随机噪声。在探索过程中,我们对一个阶段的量化模型进行微调来帮助恢复性能(使用固定学习率为0.001的SGD和0.9的动量)。在探索后,我们使用最好的策略来量化模型,并对整个数据集进行微调。

四、实验

  1. 延迟约束量化:我们在两个典型的硬件架构(用于多精度CNN的空间和时间架构)的延迟约束下评估我们的框架,其架构为时间架构和空间架构。在相同的延迟下,HAQ始终比云和边缘上的基线获得更好的精度。
    在边缘加速器上,我们的RL代理将较少的激活位分配给深度卷积,响应深度卷积是内存有界的,并激活控制内存访问。在云加速器上,我们的代理为深度卷积分配了更多的位,而为点卷积分配了更少的位,由于云设备具有更大的内存带宽和更高的并行性,网络似乎是有计算边界的。深度卷积是内存受限的操作,而点卷积是计算受限的操作。我们的实验展示了,当运行MobileNet-V1在批量较小的边缘设备上,其延迟主要由深度卷积层控制。
    延迟约束
  2. 能量约束量化:我们在BitFusion架构的能量约束下评估了我们的框架,我们的框架比基于规则的基线表现得更好,它在消耗相同数量的能量的同时实现了更好的性能。特别地,我们的框架实现几乎没有损失精度与近一半的能量消耗的原始MobileNet-V1模型,这表明,灵活的位宽确实有助于降低功耗。
    能量约束
  3. 模型大小约束量化:我们使用k-means算法将值量化为k个不同的质心,而不是使用线性量化进行压缩。我们的框架执行的比深度压缩好得多,它在相同模型大小的情况下实现了更好的精度。在不同的优化目标下,执行策略有很大的不同(延迟优化下的深度卷积使用更少的位宽,模型大小优化下的深度卷积使用更多的位宽)。我们的框架成功地学会了在不同的约束条件下调整位宽策略。
    模型大小
    模型大小约束

五、结论

在本文中,我们提出来硬件感知自动化量化(HAQ),一个自动化的量化框架,它不需要任何领域专家和基于规则的启发式。我们提出来一种基于学习的基于硬件反馈的搜索量化策略,与间接代理信号相比,我们的框架可以为不同的硬件平台提供专门的量化解决方案。大量实验表明:我们的框架在多个目标(延迟、能量和模型大小)方面的性能优于传统的基于规则的方法。我们的框架揭示了不同硬件体系结构上的最佳策略是截然不同的,并且我们解释了这些策略的含义。我们相信这些见解将启发未来的软件和硬件协同设计,从而有效部署深度神经网络。

发布了31 篇原创文章 · 获赞 40 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/librahfacebook/article/details/95733314