Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プルーニング:ディープラーニング軽量化・高速化・ エッジデバイスの高速軽量化

プルーニング:ディープラーニング軽量化・高速化・ エッジデバイスの高速軽量化

2021.12.3 Fri 開催の【SenseTime Japan × Sansan】画像処理勉強会資料です。
https://sansan.connpass.com/event/230636/

title:プルーニング:ディープラーニング軽量化・高速化・
エッジデバイスの高速軽量化
speaker: 畠山雄気(Yuki HATAKEYAMA)
株式会社センスタイムジャパン(SenseTime Japan Ltd.)

株式会社センスタイムジャパンの公式アカウントです。
外部向け発表資料を公開しております。
TECH blog: https://tech.sensetime.jp/
会社web: https://www.sensetime.jp/
TW: https://twitter.com/SensetimeJ
FB: https://www.facebook.com/sensetimejapan

SenseTime Japan

December 03, 2021
Tweet

More Decks by SenseTime Japan

Other Decks in Technology

Transcript

  1. ©2021 SenseTime. All Rights Reserved. 1 自己紹介 畠山 雄気 (はたけやま

    ゆうき) センスタイムジャパン 京都ラボ勤務 2019年入社 • 業務 :ドライバー視線推定システムに関する研究開発 • 出身 : 秋田県 • 趣味 : 科学関係の読書、ゲーム
  2. ©2021 SenseTime. All Rights Reserved. 2 目次 目次 1. Introduction:

    DNN高速化 2. Pruning解説 3. Differentiable Markov Channel Pruning (DMCP) の紹介 4. 最近のPruning論文紹介
  3. ©2021 SenseTime. All Rights Reserved. 4 DNN高速化 • 巨大なDNNモデルによる性能向上 “Benchmark

    Analysis of Representative Deep Neural Network Architectures”, 2018 “Freely scalable and reconfigurable optical hardware for deep learning”, 2021
  4. ©2021 SenseTime. All Rights Reserved. 5 DNN高速化 • 実際には、巨大なモデルはそのまま使えないケースも多い •

    例:計算リソースが小さいデバイスでモデルを動かしたい • 例:リアルタイムでモデルを動かしたい →DNNモデルを高速化・軽量化する手法 • スマートフォン • 組み込みシステム • FPGA ・・・ • 自動運転 • ドライバーモニタリング • 異常検知 ・・・ “A Survey of Deep Learning Techniques for Autonomous Driving”, 2019
  5. ©2021 SenseTime. All Rights Reserved. 6 DNN高速化手法 • DNN高速化・軽量化の主な手法 •

    量子化(Quantization) • 軽量Backboneモデル • Neural Architecture Search(NAS) • 枝刈り(Pruning) -1.2 -2.3 -2.3 -1.9 0.6 4.7 -2.4 1.9 -0.3 2.3 -1.4 0.8 2.4 -3.3 0.3 -2.2 -1 -2 -2 -2 1 5 -2 2 0 2 -1 1 2 -3 0 -2
  6. ©2021 SenseTime. All Rights Reserved. 7 量子化(Quantization) • 量子化(Quantization) •

    DNNの重みや層出力を、FLOAT32から整数(例:INT8)に置き換える →浮動小数演算から整数演算への置き換え、転送データ量削減による高速化 • 量子化により認識精度が低下する→ Quantization-Aware Training • 高速化するかどうかは、使用するハードウェア・推論エンジンの実装の詳細に依存 -1.2 -2.3 -2.3 -1.9 0.6 4.7 -2.4 1.9 -0.3 2.3 -1.4 0.8 2.4 -3.3 0.3 -2.2 -1 -2 -2 -2 1 5 -2 2 0 2 -1 1 2 -3 0 -2 FLOAT32重み行列 INT8重み行列
  7. ©2021 SenseTime. All Rights Reserved. 8 軽量Backboneモデル • 軽量Backboneモデル •

    通常の畳み込み演算をより軽量な演算に置き換えたモデル構造を使用する “MobileNetV2: Inverted Residuals and Linear Bottlenecks”, CVPR2018 • MobileNetV2 • Inverted residual block(MBConv) • 実装済みのモデル構造に差し替えるだけでよいので試しやすい • ターゲット・タスク向けに最適化されたモデル構造ではない • EfficientNet “EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks”, ICML2019 https://developers-jp.googleblog.com/2019/07/efficientnet-automl-google.html
  8. ©2021 SenseTime. All Rights Reserved. 9 Neural Architecture Search(NAS) •

    Neural Architecture Search(NAS) • モデルの構造(例:各層でどの演算を使うのか)を自動的に探索する • ターゲット・タスク用に最適化されたモデル構造が得られる • 手法によっては探索に非常に時間がかかる • 例:軽量backboneの探索→MNASNet, MobileNetV3, EfficientNetV1/V2 、、、 “MnasNet: Platform-Aware Neural Architecture Search for Mobile”, CVPR2019
  9. ©2021 SenseTime. All Rights Reserved. 10 枝刈り(Pruning) • 枝刈り(Pruning) •

    モデル内部の重要な重み・チャネルを残し、不要な重み・チャネルを削除する • ターゲット・タスクに合わせて各層のサイズを最適化できる • 学習時間が現実的な範囲に収まりやすい
  10. ©2021 SenseTime. All Rights Reserved. 12 Structured Pruning • Structured

    Pruning • Unstructured Pruning • 削除方法の自由度が高い →より多くの重みを削除できる可能性 • スパースな重み行列に対応した演算の実装が必要, 密な重み行列での演算より非効率 • 削除方法の自由度が低い • 重み行列の削除した部分の隙間を詰める事で 密な重み行列での演算に戻せる →高速化に向いている • 重み行列 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 • 重み行列 :出力チャネル単位でのStructured Pruning
  11. ©2021 SenseTime. All Rights Reserved. 13 Pruningの手順 • Pruningの一般的な手順 1.

    DNNモデルの事前学習 • 重み・出力のスパース性を誘導するように 学習を工夫する事が多い (例: 重みにL1正則化を掛ける) 2. Pruningで削除するチャネルを決定 • Pruning 基準: チャネルの重要度を計測・推定して、 重要度が低いチャネルから削除 (例: チャネル重みのL1ノルム) 3. Pruningされたモデルを 再学習して精度を回復 • 大きなLRを使って学習する方が良い “Network Pruning That Matters: A Case Study on Retraining Variants”, ICLR2021 繰り返し(Optional) x Loss forward backprop. x x Loss forward backprop. Loss
  12. ©2021 SenseTime. All Rights Reserved. 14 Pruning学習結果の例 • タスク: CIFAR-10

    画像クラス分類 • ベースモデル: ResNet-56 (正解率: 93.46%) • Pruning基準 : チャネル重みのL1ノルム • L1ノルムが小さい方から20%のチャネルを削除→再学習して繰り返し • 再学習 : Cyclic LR schedule “Pruning Filters for Efficient ConvNets”, ICLR2017 “Network Pruning That Matters: A Case Study on Retraining Variants”, ICLR2021 • 学習結果 • Pruning学習結果の例
  13. ©2021 SenseTime. All Rights Reserved. 15 Pruningの新しい視点 • 宝くじ仮説(Lottery ticket

    hypothesis) : • Winning ticket: DNN内のスパースなサブネットワークで、 切り離して学習した場合に、元のDNNと同等の精度を同じ学習期間で達成可能なもの • 仮説:ランダム初期化された密なDNNの中にはWinning ticketが含まれている (“The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks”, ICLR2019) →Unstructured Pruning = 初期化時に既に存在するWinning ticketの発見 • Pruning at Initialization : 事前学習をせずに初期化時にPruningを行う • 例: SNIP:初期化時モデルの勾配情報から重みの重要度を推定 • 通常のPruningより精度が低い (“SNIP: Single-shot Network Pruning based on Connection Sensitivity”, ICLR2019) “Pruning Neural Networks at Initialization: Why are We Missing the Mark?”, ICLR2021
  14. ©2021 SenseTime. All Rights Reserved. 16 Pruningの新しい視点 • Structured Pruning

    = 探索空間をチャネル数に限定したNAS • Structured Pruningした後、モデルの重みを引き継いで再学習した場合と、 重みの値をランダム初期化し直して学習した場合で精度に大差がない →Pruningで得られるモデル構造が重要、学習された重みの値は必須ではない “Rethinking the Value of Network Pruning”, ICLR2019 • 例:Pruningしたモデル構造を別のデータセットに転用
  15. ©2021 SenseTime. All Rights Reserved. 18 Differentiable Markov Channel Pruning

    (DMCP) • CVPR 2020 Oral • Pruning手法:DMCPの紹介 • 解説記事 : https://tech.sensetime.jp/?p=883 • 学習コード: https://github.com/zx55/dmcp
  16. ©2021 SenseTime. All Rights Reserved. 19 Differentiable Markov Channel Pruning

    (DMCP) • DNNモデルの事前学習: 主要なアイデア (1) チャネル番号が小さいチャネルほど、精度のために重要な情報が集中するように工夫して学習する (2) Pruningの際は、チャネル番号が大きい順に削除していき、小さい番号のチャネルを残す
  17. ©2021 SenseTime. All Rights Reserved. 20 Differentiable Markov Channel Pruning

    (DMCP) (1) チャネル番号が小さいチャネルほど、精度のために重要な情報が集中するように工夫して学習する →(variant) sandwich ruleによる重みの学習 1. 元のモデルから、実際にPruningを行ったモデルを複数生成する • チャネル数が最小(約1/10)・最大のモデルは必ず生成する • 残りは、現状のチャネル残存確率に従ってランダムサンプリング 2. 各モデルごとに損失を計算して平均→Backprop. & Update • 番号が小さいチャネルほど頻繁にサンプリングされ、 重みがUpdateされる →番号が小さいチャネルに重要な情報が集中する
  18. ©2021 SenseTime. All Rights Reserved. 21 Differentiable Markov Channel Pruning

    (DMCP) • チャネル削除プロセスのマルコフ過程による確率モデル化 →各チャネルの残存確率を微分可能な形でパラメータ化でき、SGDで学習可能 (2) Pruningの際は、チャネル番号が大きい順に削除していき、小さい番号のチャネルを残す Ch1まで残す Ch kまで残す 最後のChまで残す • マルコフ過程:状態遷移確率が直前の状態のみに依存 • 残存確率の学習 • 各チャネルの出力の期待値(←残存確率)を使ってモデル出力計算 →残存確率パラメータに対してBackprop. & Update • モデルの計算量の期待値(←残存確率)を小さくするような正則化損失 →iterationごとに、重みの更新と交互に学習する
  19. ©2021 SenseTime. All Rights Reserved. 22 Differentiable Markov Channel Pruning

    (DMCP) • Pruning基準:学習で獲得したチャネル残存確率 • Pruningされたモデルの再学習:1回のみ
  20. ©2021 SenseTime. All Rights Reserved. 23 Differentiable Markov Channel Pruning

    (DMCP) • 実験結果(ImageNet 画像クラス分類) モデル 計算量 [FLOPs] Pruning手法 Top-1正解率 [%] ResNet50 4.1G Pruning無し (baseline) 76.6 2.3G一様削減 74.6 2.2GMetaPruning 75.4 2.0GAutoSlim* 75.6 2.2GDMCP 76.2 1.1G一様削減 71.9 1.1GMetaPruning 73.4 1.1GAutoSlim* 74.0 1.1GDMCP 74.4 *in-place distillation(最大チャネル数モデルからPruninigされたモデルへのdistillation)
  21. ©2021 SenseTime. All Rights Reserved. 25 GDP • “GDP: Stabilized

    Neural Network Pruning via Gates with Differentiable Polarization”: ICCV2021 • チャネルの出力値をマスクするゲート g を重みと同時に学習 • モデルの計算量の期待値を小さくするような正則化損失 • 学習が進むにつれ、ゲートの値が0 or 1に収束するようεを小さくしていく →Pruning後の再学習が不要
  22. ©2021 SenseTime. All Rights Reserved. 26 ResRep • “ResRep: Lossless

    CNN Pruning via Decoupling Remembering and Forgetting”: ICCV2021 • BNの直後に、単位行列で初期化した1x1Conv(Compactor)を挿入して学習 • Compactorの重みのノルムが小さいチャネルをforgotten channelに指定、 forgotten channelの重みが徐々に0になるように誘導する →Pruning後の再学習が不要
  23. ©2021 SenseTime. All Rights Reserved. 28 まとめ • DNN高速化手法のひとつ、Pruningについて紹介 •

    Structured Pruning→高速化に向いている • 一般的なPruningの手順 : 事前学習→Pruning→再学習 x Loss forward backprop. x x Loss forward backprop. • DMCPの紹介: 番号が小さいチャネルに重要な情報を残し、大きな番号のチャネルを削除 • 最近の研究紹介: GDP, ResRep Loss • Pruningの新しい見方: Pruning at Initialization, NAS センスタイム テックブログ DMCP解説記事