APQ
2020-CVPR-APQ Joint Search for Network Architecture Pruning and Quantization Policy
來源:ChenBong 博客園
- Institute:SJTU,MIT
- Author:Tianzhe Wang,Han Song
- GitHub:https://github.com/mit-han-lab/apq 60+
- Citation:9+
Introduction
端到端的結構搜索,通道剪枝,混合精度量化 聯合優化。
pipeline:
Motivation
模型的部署分為 模型結構設計(Architecture),剪枝(Pruning),量化(Quantization)三個步驟。
這三步的pipeline可以顯著減少模型開銷,但當同時考慮這三個優化目標時,待優化的參數/時間開銷會急劇增加;且三個步驟單獨搜索可能會導致最終的結果陷入局部最優(如,全精度下最佳的結構,可能並不適合量化)。
因此我們提出一種將 結構搜索,剪枝,量化三個步驟聯合進行端到端的搜索的方法。
Contribution
- 將3個步驟整合為1個端到端的搜索方案
- 提出了使用 量化感知精度預測器(quantization-aware accuracy predictor),直接根據訓練好的全精度網絡結構,權重,以及混合量化的方案,直接預測量化后的精度
- 對 量化感知精度預測器 采用先在全精度網絡數據集 <Arch,Acc> 上訓練,再遷移到量化網絡數據集 <Quantization Arch,Quantization Acc> 上訓練的 predictor-transfer 方法
- 整個搜索方案開銷小
Method
Pipeline
- 將通道搜索(剪枝)結合到 結構搜索(NAS)的步驟中
- 搜索空間:模型結構空間(包括通道結構)+ 混合精度量化策略空間
- 指標:量化網絡精度
- 現在pipeline變為:
- 模型結構空間 => 全精度網絡結構 (=> 全精度網絡精度)
- 全精度網絡結構 => 施加混合精度量化策略 => 量化網絡結構 => 預測器預測 => 量化網絡精度
- 其中的預測器是一個全連接網絡(3 layer FC)
- 問題:訓練 預測器 需要大量的數據對 <量化網絡結構,量化網絡精度>,但獲得這些數據對是很耗時的:
- 訓練全精度的網絡,獲得全精度網絡的數據對:<Arch,Acc>
- 對訓練后的全精度網絡采用某種混合量化方案后,fine-tune,得到。
- 解決:
- 對於第 1 點,我們使用nas中supernet的思想,訓練一個supernet,從supernet中采樣subnet直接eval,可以直接得到很多全精度網絡的數據對:<全精度網絡結構,全精度網絡精度>
- 對於第 2 點,采用 transfer 的思想,先在大量全精度網絡的數據對(容易獲得:直接采樣subnet,eval)上訓練,再在少量的量化網絡的數據對上fine-tune
Once-For-All Network with Fine-grained Channel Pruning
這個階段主要任務就是訓練supernet:
使用mobilenet v2 的block作為基本blcok(conv 1×1 => dw conv 3×3 => conv 1×1)

block的結構空間:
- (dw conv) kernel size:3, 5, 7
- channel num:16, 24, 32, 40
使用 one-hot vector 進行編碼,例如某一 dw conv 的 kernel size=3(1,0,0),channel num=32(0,0,1,0)
則該 block 的結構編碼為(1,0,0, 0,0,1,0)
Quantization-Aware Accuracy Predictor
block的混合精度量化策略空間:
- weight bit:4, 8
- activation bit:4, 8
使用 one-hot vector 進行編碼,例如某一 block 的4個layer 的 weight bit=(8,4,4,8),activation bit=(4,8,8,4)
則該blcok的 Quantization policy 編碼為(1,0,0,1,0,1,1,0)
則該block的總結構編碼為:(1,0,0, 0,0,1,0, 1,0,0,1, 0,1,1,0)
Architecture and Quantization Policy Encoding
若一個網絡有5個blcok,則整個網絡編碼長度為75-dim: (5×(3+4+2×4)=75)
Transfer Predictor to Quantized Models
Predictor 的遷移學習:先在大量 全精度網絡數據對 上學習,再少量 量化網絡數據對 上學習:
Data Preparation for Quantization-aware Accuracy Predictor
全精度網絡數據對:
The number of data to train a full precision predictor is 80,000.
量化網絡數據對:
We generate two kinds of data (2,500 for each):
- random sample both architecture and quantization policy;
- random sample architecture, and sample 10 quantization policies for each architecture configuration.
We mix the data (5000 total) for training the quantization-aware accuracy predictor, and use full-precision pretrained predictor’s weights to transfer.
Hardware-Aware Evolutionary Search
Measuring Latency and Energy
根據不同類型的網絡層,在目標機器上的(延時,能耗),構造查找表,之后就可以根據量化網絡結構,直接估計其(延時,能耗)
Resource-Constrained Evolution Search
使用進化算法,對不符合(延時,能耗)目標的后代進行淘汰。