首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >APQ:联合搜索网络架构、剪枝和量化策略

APQ:联合搜索网络架构、剪枝和量化策略

作者头像
AI异构
发布2021-01-07 11:08:08
1.3K0
发布2021-01-07 11:08:08
举报
文章被收录于专栏:AI异构AI异构

APQ

本文为 MIT 韩松团队发表在 CVPR 2020上的模型压缩工作。本文以联合方式分别搜索神经体系结构,修剪策略和量化策略,相比于之前分阶段的策略有明显性能提升。

  • 论文题目:APQ: Joint Search for Nerwork Architecture, Pruning and Quantization Policy(CVPR 2020)
  • 论文链接:https://arxiv.org/pdf/2006.08509.pdf
  • 代码链接:https://github.com/mit-han-lab/apq

摘要

本文提出APQ,以便在资源受限的硬件上进行有效的深度学习推理。与以前分别搜索神经体系结构,修剪策略和量化策略的方法不同,本文以联合方式优化它们。为了应对它带来的更大的设计空间问题,一种有前途的方法是训练量化感知的准确性预测器,以快速获得量化模型的准确性,并将其提供给搜索引擎以选择最佳拟合。但是,训练此量化感知精度预测器需要收集大量量化的<model,precision>对,这涉及量化感知的微调,因此非常耗时。为了解决这一挑战,本文建议将知识从全精度(即fp32)精度预测器转移到量化感知(即int8)精度预测器,这将大大提高采样效率。此外,为fp32精度预测器收集数据集只需要通过从预训练的 once-for-all 网络中采样就可以评估神经网络,而无需任何训练成本。ImageNet 上的大量实验证明了联合优化方法的好处。与MobileNetV2 + HAQ 相比,APQ 以相同的精度将延迟降低2倍,能耗降低1.3倍。与单独的优化方法(ProxylessNAS + AMC + HAQ )相比,APQ可提高ImageNet精度2.3%,同时减少GPU数量级和CO2排放量,从而推动了绿色AI在环保方面的前沿。

动机

在无人驾驶,机器人技术和移动VR / AR等许多现实应用中,深度学习盛行,而效率是架起研究和部署的关键。给定目标硬件上受约束的资源预算(例如,延迟,模型大小和能耗),则需要精心设计网络架构以在约束内实现最佳性能。传统上,高效深度学习的部署可以分为模型架构设计和模型压缩(修剪和量化)。一些现有的工作表明,这样的顺序可以显着降低现有模型的成本。然而,需要仔细的超参数调整以获得最佳性能。当我们同时考虑这三个阶段时,超参数的数量呈指数增长,这将很快超过可接受的人力成本。

为了解决这个问题,最近的工作已经应用了 AutoML 技术来使过程自动化。研究人员提出了神经体系结构搜索(NAS)来使模型设计自动化,大大优于人工设计的模型。使用类似的技术,研究人员采用强化学习通过自动修剪和自动量化来压缩模型。但是,在不同阶段优化这三个因素将导致次优结果:例如,用于全精度模型的最佳网络体系结构不一定是经过修剪和量化后的最佳网络体系结构。此外,这三步策略还需要大量的搜索时间和能源消耗。因此,需要一种解决方案来针对某个硬件平台共同优化深度学习模型。

将现有的 AutoML 技术直接扩展到联合模型优化设置可能会遇到问题。首先,联合搜索空间比分阶段搜索要大得多(乘性增长),从而使搜索困难。修剪和量化通常需要耗时的微调过程才能恢复准确性,这会大大增加搜索成本。如下图所示,搜索每个部署(Proxyless-NAS + AMC + HAQ)将导致大量的CO2排放,这可能加剧温室效应并严重恶化环境。此外,每个步骤都有其自己的优化目标(例如,准确性,等待时间,精力),导致流水线的最终策略总是不尽人意。

二氧化碳排放量统计

为此,本文提出了 APQ,这是一种联合设计方法,可以以较低的成本实现对模型架构,修剪和量化策略的端到端搜索。APQ 的核心思想是使用量化感知的精度预测器来加快搜索过程,预测器将模型体系结构和量化方案作为输入,并可以快速预测其准确性。代替微调修剪和量化的网络以获得准确性,本文使用由预测变量生成的估计准确性,可以以可忽略的成本获得该准确性(因为预测变量仅需要几个FC层)。

但是,训练精确的预测器具有挑战性:训练一个精确的预测器需要大量(量化的模型,量化的准确性)数据点。收集每个数据点可能会非常昂贵:

  • 需要训练网络以获取初始fp32权重;
  • 进一步进行微调以获取量化的int8权重以评估准确性。

这两个阶段都非常昂贵,需要数百个GPU小时。

Sequential Design vs. joint design

幸运的是,受最近的 one-shot neural architecture search 方法中的权重共享机制的启发,本文通过权重共享来训练包含搜索空间中所有子网的超级网络,从而降低了阶段1的成本,并直接评估子网的准确性,而无需进行进一步的微调。如下所示,与从头开始的训练相比,可以训练一个“once-for-all” 的超级网络,该超级网络可以支持所有子网,同时达到同等甚至更高的精度。这样,只需要评估子网,而无需训练以获得(fp32模型,fp32精度)数据点,这需要较小数量级的计算。

降低阶段2的成本更具挑战性。通常,不进行微调就直接进行低位量化通常会导致精度接近于零。因此,仍需要微调来收集(量化的模型,量化的精度)数据点。为了降低第2阶段的成本,本文提出了预测传输技术(predictor-transfer)。与其收集大量昂贵的(量化模型,量化精度)数据点不如直接训练量化预测器,本文首先基于once-for-all 网络(仅进行评估,无需培训)的权重共享,使用廉价(fp32模型,fp32精度)数据点来训练fp32模型精度预测器,然后通过在少量昂贵的(量化模型,量化精度)数据点上进行微调,将预测变量转移到量化模型域。传输技术极大地提高了量化网络域上的采样效率,并降低了训练预测变量的总成本。

训练了此量化感知预测器 P(arch,prune,quantization)之后,通过使用预测器,体系结构搜索变得超快。通过以上设计,可以有效地对模型体系结构,通道数和混合精度量化执行联合搜索。预测器也可以用于新硬件和部署方案。

大量的实验证明了APQ的优越性。与8位 ResNet 相比,APQ可实现8 BitOps 降低,同时具有更高的精度;APQ 不仅可以优化延迟和准确性,还可以优化能耗。本文获得与MobileNetV2 + HAQ相同的精度,并实现2x延迟降低和1.3x能耗节省;在相同的延迟限制下,APQ 优于使用 ProxylessNAS + AMC + HAQ 的单独的顺序优化,精度提高了 2.3%,同时减少了600 GPU 小时和 CO2 排放,从而有效地搜索了有效的模型,从而推动了绿色 AI 的环保前沿。

本文的贡献是:

  • 提出了一种方法,可以联合执行NAS修剪量化,将传统上分离的阶段统一为一个集成解决方案。
  • 提出了一种预测转移方法,以解决因需识别量化精度的预测变量的数据集收集<NN architecture, quantization policy, quantized accuracy>带来的高额费用。
  • 通过这种联合优化,可以显着提高通过量化策略搜索最佳网络架构的速度,并可以在各种部署方案中进行自动模型调整。

联合优化策略

APQ架构图

细粒度通道剪枝的 OFA 网络

神经架构搜索旨在从较大的搜索空间中找到一个好的子网。传统上,每个采样网络都经过训练以获得实际精度,这非常耗时。最近基于 one-shot 的 NAS 首先训练大型的多分支网络。每次都从大型网络中提取一个子网,以直接评估近似精度。如此大的网络称为“once-for-all network”。由于深度神经网络中不同层的选择在很大程度上是独立的,因此一种流行的方法是为每一层设计多个选择(例如卷积核大小,扩展率等)。

Once-For-All 网络的搜索空间

在本文中,使用MobileNetV2作为骨干网来构建一个支持

  • 所有卷积核大小(比如3、5、7)
  • 在Block-Level上的通道数量(即4xB到6xB,8作为间隔,B是block块内的基本通道数)
  • 在stage level上的不同深度(比如2、3、4)。

组合的搜索空间包含个以上的子网,其大小足以在其上执行搜索。

Once-For-All 网络的属性

为了确保有效的体系结构搜索,本文发现 OFA 网络必须满足以下属性:

  • 对于每个提取的子网,可以直接评估性能而无需重新训练,因此训练成本只需要一次。
  • 支持超大且细粒度的搜索空间,以支持通道数的搜索。

当我们希望将修剪策略合并到体系结构空间中时,Once-For-All 不仅需要支持不同的操作,而且还需要细粒度的通道数(间隔为8)。因此,新空间显着扩大(从到)。

但是,由于 OFA 网络训练的性质,很难同时实现两个目标:通常认为,如果搜索空间太大(例如,支持细粒度的通道数),精度近似将是不准确的。训练 OFA 网络时,较大的搜索空间将导致较大的差异。为了解决这个问题,本文采用渐进收缩(PS)算法来训练 OFA 网络。具体来说,首先在 OFA 网中训练一个具有最大的卷积核大小,通道数和深度的完整子网,然后将其用作教师逐步提取从OFA 网中采样较小子网。在蒸馏过程中,训练有素的子网仍会更新权重,以防止准确性下降。PS 算法有效地降低了 OFA 网络训练中的差异。通过这样做,可以确保从一次性网络中提取的子网保持竞争准确性,而无需重新训练。

面向量化的精度预测器

为了降低各种部署方案中的设计成本,本文建议构建一个可识别量化的精度预测器 P,该预测器 P 可根据体系结构配置和量化策略预测混合精度(MP)模型的精度。在搜索过程中,本文使用预测的准确度 arch, prune, quantize 代替了测量后的准确度。预测器 P 的输入是(网络体系结构的编码,修剪策略和量化策略)。

体系结构和量化策略编码

本文对网络体系结构进行逐块(block by block)编码:对于每个构件块(例如,瓶颈残差块,如MobileNetV2),本文针对逐点卷积和深度可分离卷积的卷积核大小,通道数,权重/激活 bit 位编码为 one-hot 向量,将这些向量串联在一起作为块的编码。例如,一个块有3个内核大小选择(例如3、5、7)和4个通道选择(例如16、24、32、40),如果我们选择卷积核大小=3和通道数=32,则我们得到两个向量 [1,0,0] 和 [0,0,1,0],并将它们连接在一起,并使用 [1,0,0,0,0,1,0] 表示此块的体系结构。同样,我们也使用 one-hot 向量来表示针对某些权重/激活点层和深度层的位宽的选择,例如假设逐点/深度可分离层的权重/激活位宽选择为 4 或 8,我们使用 [1,0,0,1,0,1,1,0] 表示量化的选择为(4,8,8,4)。如果跳过此块,则将向量的所有值设置为0。我们将所有块的特征进一步串联为整个网络的编码。然后对于5层网络,我们可以使用75维 向量表示这种编码。在本文的设置中,卷积核大小的选择为[3,5,7],通道数的选择取决于每个块的基本通道数,位宽的选择为[4,6,8],其中总共有21个块可以设计。

精度预测器

精度预测器结构

本文使用的预测器是一个三层前馈神经网络,每个嵌入的dim等于400。如上图的左侧所示,预测器的输入是上述的 one-hot 编码,输出是预测的准确性。与现有方法不同,基于预测器的方法不需要在搜索阶段就频繁评估目标数据集上的体系结构。有了预测器后,可以将其与任何搜索方法(例如强化学习,计划算法,贝叶斯优化等)集成在一起,从而以可忽略的成本在体系结构修剪量化上执行联合设计。然而,最大的挑战是如何收集<architecture, quantization policy, accuracy>数据集以训练量化模型的预测器,造成挑战的主要原因是:

  • 收集量化模型的准确性非常耗时:需要进行微调以恢复量化后的准确性,每个数据点大约需要0.2个GPU小时。实际上,本文发现,要训练一个好的全精度精度预测器,80K <architecture, ImageNet accuracyi>数据对就足够了。但是,如果收集的量化数据集的大小与全精度数据集的大小相同,那么它将花费16,000 GPU小时,这远远超出了人们的承受能力。
  • 基于量化的准确性预测器比传统的精度预测器在全精度模型上更难训练:体系结构设计和量化策略这两个单独的方面均会影响网络性能,因此很难对相互影响进行建模。

因此,使用传统的方法来训练可识别量化的精度预测器可能会导致性能显着下降。

预测器转移到量化模型

收集量化的NN数据集来训练预测变量很困难(需要微调),但是收集精确的NN数据集很容易:我们可以直接从 OFA 的网络中选择子网,并测量其准确性。本文提出了预测器转移技术,以提高采样效率并弥补数据的不足。由于通常会保留量化前后的准确性顺序,因此首先在大型数据集上对预测器进行预训练,以预测全精度模型的准确性,然后转移到量化模型中。量化精度数据集要小得多,我们仅执行短期微调。如上图右侧所示,将当前块的量化位(权重和激活)添加到输入嵌入中,以构建可感知量化的精度预测器。然后,使用预先训练的FP预测器的权重作为初始化来进一步微调量化感知精度的预测器。由于大多数权重都是从高精度预测器继承的,因此与从头开始训练相比,训练所需的数据要少得多。

面向硬件的进化搜索

由于不同的硬件可能具有完全不同的属性(例如,缓存大小,并行度),因此一种硬件的最佳网络体系结构和量化策略不一定适用于另一种硬件。因此,本文的优化不是直接依赖某些间接信号(例如,BitOps),而是直接基于目标硬件上测得的延迟和能量。

测量延迟和能量

在实际硬件上评估每个候选策略可能会非常昂贵。由于神经网络的顺序结构,我们可以通过汇总每一层的延迟(或能量)来近似模型的延迟(或能量)。首先可以建立一个查找表,其中包含不同架构配置和位宽下每一层的等待时间和能量。之后,对于任何候选策略,都可以对其进行细分并查询查找表,从而以可忽略的成本直接计算延迟(或能量)。在实践中发现这样的实践可以精确地估算实际的推理成本。

资源受限的进化搜索

本文采用基于进化的架构搜索来探索最佳的资源受限模型。基于此,本文进一步用量化感知精度预测器代替了评估过程,以直接评估每个候选者的表现。然后,可以将每个候选者的成本从模型推断的N倍减少到预测因子推断的1倍(其中N是验证集的大小)。此外,可以通过延迟/能量查找表来验证资源约束,以避免与目标硬件的直接交互。在给定资源预算的情况下,可以直接淘汰超出限制的候选项。

实现细节

量化感知精度预测器的数据准备

本文生成两种数据(每种为2500):1.对体系结构和量化策略进行随机抽样;2.随机抽样架构,并为每种架构配置抽样 10 种量化策略。本文混合使用数据来训练量化感知的准确性预测器,并使用全精确的预训练预测器的权重进行传递。训练一个完整的精度预测器的数据量为80,000。这样,量化精度预测器可以具有在不同体系结构/量化策略对之间进行归纳并了解体系结构和量化策略之间相互关系的能力。

进化架构搜索

对于进化架构搜索,本文将种群数量设置为100,并选择排名前25位的候选基因来产生下一代(突变产生50个,交叉产生50个)。每个种群都是具有量化策略的网络体系结构,使用与量化感知准确性预测器相同的编码。每层的突变率为0.1,与 Single path one-shot 中的相同,随机选择新的卷积核大小和通道数进行突变。对于交叉,每层都是从其父级的层配置中随机选择的。本文将最大迭代次数设置为500,然后在最终总体中选择最佳候选者。

量化

本文按照 HAQ 中的实现进行量化。具体来说,我们使用特定的量化策略量化权重和激活。对于具有量化位 b 的权重为 w 的每一层,我们将其线性量化为 ,量化权重为:

我们为每层设置不同的v,以最小化原始权重w和量化权重w0之间的KL散度 。对于激活权重,我们将其量化为 ,因为在ReLU6层之后该值是非负的。

实验结果

与SOTA高效模型的比较

与SOTA对比结果

联合设计的有效性
与MobileNetV2+HAQ对比

MobileNetV2+HAQ对比结果

与多阶段优化和BitOps对比

多阶段优化和BitOps对比结果

预测器-转移的有效性

predictor-transfer技术结果

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI异构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • APQ
    • 摘要
      • 动机
        • 联合优化策略
          • 细粒度通道剪枝的 OFA 网络
          • 面向量化的精度预测器
          • 面向硬件的进化搜索
        • 实现细节
          • 量化感知精度预测器的数据准备
          • 进化架构搜索
          • 量化
        • 实验结果
          • 与SOTA高效模型的比较
          • 联合设计的有效性
          • 预测器-转移的有效性
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档