Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

高速な深層学習モデルアーキテクチャ2023

yu4u
May 30, 2023

 高速な深層学習モデルアーキテクチャ2023

深層学習モデル(畳み込みニューラルネットワーク; CNN、Vision Transformer; ViT)の高速化手法のまとめ
より詳細な資料は下記

CNN:
https://speakerdeck.com/yu4u/moteruakitekutiyaguan-dian-karanogao-su-hua-2019

Vision Transformer:
https://speakerdeck.com/yu4u/jin-nian-nohierarchical-vision-transformer

yu4u

May 30, 2023
Tweet

More Decks by yu4u

Other Decks in Technology

Transcript

  1. AI 3 ▪ モデルアーキテクチャ観点からのDeep Neural Network高速化 ▪ 畳み込みニューラルネットワークの研究動向 ▪ 畳み込みニューラルネットワークの高精度化と高速化

    ▪ モデルアーキテクチャ観点からの高速化2019 ▪ 近年のHierarchical Vision Transformer モデルアーキテクチャ好き ここからどのくらい 進化したのか︖
  2. AI 6 ▪エッジデバイス等リソース制限があるユースケースで重要 ▪色々な観点 ▪モデルパラメータ数の削減 ▪FLOPs (MACs) 数の削減 ▪モデルファイルサイズの削減 ▪推論時間の削減

    ▪訓練時間の削減 ▪微妙に違うので、使うときは何を重視すべきか、 論文を読むときは何が改善しているのかを気にする ▪本資料は基本的にはFLOPsの削減手法 ▪実デバイスでの推論速度を意識した研究も増加しており 最後に紹介する2モデル(CNN/ViT)は推論速度を意識 モデルの高速化・軽量化
  3. AI 7 ▪軽量なモデルアーキテクチャを利用する ▪アーキテクチャ探索 (Neural Architecture Search; NAS) ▪枝刈り (Pruning)

    ▪アーキテクチャ探索に含まれると考えても良い ▪蒸留 (Distillation) ▪量子化 (Quantization) ▪早期終了、動的計算グラフ (Early Termination, Dynamic Computation Graph) モデル軽量化手法
  4. AI 8 ▪軽量なモデルアーキテクチャを利用する ▪アーキテクチャ探索 (Neural Architecture Search; NAS) ▪枝刈り (Pruning)

    ▪アーキテクチャ探索に含まれると考えても良い ▪蒸留 (Distillation) ▪量子化 (Quantization) ▪早期終了、動的計算グラフ (Early Termination, Dynamic Computation Graph) モデル軽量化手法 今⽇のメイン
  5. AI 9 ▪モデルのパラメータを削ることで高速化 ▪Unstructured pruning ▪Structured pruning ▪Structured(チャネル単位)のpruningが一般的 ▪重みのL1/L2 normが小さいフィルタを削除するといった手法[1]から

    activationの誤差を最小にするといった手法まで色々な手法が存在 枝刈り (Pruning) … … 計算量vs.精度のtrade-offは優れているが 専⽤のハードウェアでないと⾼速化できない 単にチャネル数が減少したネットワークに 再構築が可能で⾼速化の恩恵を受けやすい [1] H. Li, et al., "Pruning Filters for Efficient ConvNets," in Proc. of ICLR’17.
  6. AI 10 ▪大規模モデルや複数モデルの知識(e.g. 出力) を利用して小規模なモデルを学習[1] ▪学習データのみで学習するより高精度 ▪最近の手法[2]だとResNet50で ImageNet top-1 77.2→82.8

    蒸留 (Distillation) … … 学習画像 学習済みモデル (教師モデル) 学習するモデル (⽣徒モデル) … 正解ラベル (ハード ターゲッ ト) … ソフトターゲット ソフト ターゲット ハード ターゲット [1] G. Hinton, et al., "Distilling the Knowledge in a Neural Network," in Proc. of NIPS Workshop, 2014. [2] L. Beyer, "Knowledge distillation: A good teacher is patient and consistent," in Proc. of CVPR'22.
  7. AI 14 ▪入力レイヤサイズ:H x W x N ▪畳み込みカーネル:K x K

    x N x M convKxK, M と表記 (e.g. conv 3x3, 64) ▪出力レイヤサイズ:H x W x M ▪畳み込みの計算量:H・W・N・K2・M(バイアス項を無視) 畳み込み層の計算量 W H N M K K W H ⼊⼒特徴マップ 畳み込み カーネル N 出⼒特徴マップ * 和 要素積 × M convK×K, M 畳み込み層の計算量は ・画像/特徴マップのサイズ(HW) ・⼊出⼒チャネル数(NM) ・カーネルサイズ(K2) に⽐例
  8. AI 15 ▪軽量モデルの始祖的存在 ▪3x3の代わりに1x1のフィルタを利用する(一部をサボる) ▪3x3への入力となるチャネル数を少なくする(1x1で次元圧縮) SqueezeNet conv 1x1, s1x1 conv

    1x1, e1x1 conv 3x3, e3x3 concat Fire module 32 128 128 256 256 Squeeze layer Expand layer F. Iandola, et al., "SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size," in arXiv:1602.07360.
  9. AI 16 ▪conv3x3のかわりにseparable convを利用 ▪高速モデルのベースライン ▪MobileNetV2**/V3***も存在 MobileNet 通常の畳み込み MobileNetの モジュール

    A. Howard, et al., "MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications," in arXiv:1704.04861.
  10. AI 17 ▪空間方向とチャネル方向の畳み込みを独立に行う ▪Depthwise畳み込み(空間方向) ▪特徴マップに対しチャネル毎に畳み込み ▪計算量:H・W・N・K2・M (M=N) H・W・K2・N ▪Pointwise畳み込み(チャネル方向) ▪1x1の畳み込み

    ▪計算量:H・W・N・K2・M (K=1) H・W・N・M ▪Depthwise + pointwise (separable) ▪計算量:H・W・N・(K2 + M) ≒ H・W・N・M (※M >> K2) ▪H・W・N・K2・M から大幅に計算量を削減 ▪K2が消える Separable conv W H W H N 1 1 M W H W H N K K N W H W H N M K K 通常 depthwise pointwise
  11. AI 18 ▪V2ではボトルネック構造を採用、conv1x1の計算量を相対的に削減 ▪V1ではconv1x1が重く、depthwise3x3は軽すぎ、アンバランスだった MobileNetV1 vs. V2 depthwise conv conv

    1x1 depthwise conv conv 1x1 conv 1x1 spatial channel MobileNetV1 MobileNetV2 M. Sandler, et al., "MobileNetV2: Inverted Residuals and Linear Bottlenecks," in Proc. of CVPR'18.
  12. AI 19 ▪アーキテクチャ探索手法 ▪Mobile inverted bottleneck にSEモジュールを追加 (MBConv) ▪MBConv3 (k5x5)

    →ボトルネックでチャネル数を3倍 depthwiseのカーネルが5x5 MNasNet M. Tan, et al., "MnasNet: Platform-Aware Neural Architecture Search for Mobile," in Proc. of CVPR, 2019.
  13. AI 21 ▪MobileNetのボトルネックとなっているconv1x1を group conv1x1 + channel shuffleに置換 ▪group conv:

    入力の特徴マップをG個にグループ化し 各グループ内で個別に畳み込みを行う (計算量 H・W・N・K2・M → H・W・N・K2・M / G) ▪channel shuffle: チャネルの順序を入れ替える reshape + transposeの操作で実現可能 ShuffleNet c shuffle depthwise conv gconv 1x1 spatial channel gconv 1x1 X. Zhang, et al., "ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices," in arXiv:1707.01083.
  14. AI 22 ▪FLOPsではなく対象プラットフォームでの実速度を見るべき ▪効率的なネットワーク設計のための4つのガイドラインを提言 1. メモリアクセス最小化のためconv1x1は入力と出力を同じにすべし 2. 行き過ぎたgroup convはメモリアクセスコストを増加させる 3.

    モジュールを細分化しすぎると並列度を低下させる 4. 要素毎の演算(ReLUとかaddとか)コストは無視できない ▪これらの妥当性がtoyネットワークを通して実験的に示されている ShuffleNet V2 N. Ma, X. Zhang, H. Zheng, and J. Sun, "ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design," in Proc. of ECCV’18.
  15. AI 27 ▪ Self-attentionの計算量が系列長の二乗に比例する(𝑄𝐾Tの内積) ▪ 画像の場合は系列長=画像サイズ(特徴マップのH×W) ▪ ViTの場合は入力画像サイズ224で14x14(入力の1/16)の特徴マップ ▪ 画像サイズを大きくして(e.g.

    1280)、高解像度化(e.g. 入力の1/4) すると大変なことになる ▪ この課題をどう解決するかで様々な手法が提案されている ▪ Attentionの範囲を局所的に制限するwindow (local) attention ▪ K, Vの空間サイズを小さくするspatial-reduction attention(Qはそのまま ▪ 実はほぼ上記の2パターン Vision Transformerの計算量
  16. AI 28 ▪ 様々なVision Transformerはほぼこの形で表現可能 ▪ Transformer blockのtoken mixerが主な違い ▪

    MLP-Mixer, PoolFormer, ShiftViT等のattentionを使わないモデルも token mixerが違うだけのViTと言える ▪ この構造を [1] ではMetaFormerと呼び、この構造が性能に寄与していると主張 階層的Vision Transformerの一般系(CNN的な階層構造) Transformer Block !! × # 4 × % 4 Stage 1 !" × # 8 × % 8 Stage 2 !# × # 16 × % 16 Stage 3 !$ × # 32 × % 32 Stage 4 3×#×% Input Norm Token Mixer FFN Norm + + Patch Embedding Transformer Blocks Patch Merging Transformer Blocks Patch Merging Transformer Blocks Patch Merging Transformer Blocks [1] W. Yu, et al., "MetaFormer is Actually What You Need for Vision," in Proc. of CVPR’22.
  17. AI 29 ▪ Token mixer: Shifted Window-based Multi-head Self-attention Swin

    Transformer Two Successive Swin Transformer Blocks ココがポイント Swin Transformer (ICCV'21 Best Paper) を 完璧に理解する資料 も見てネ! Z. Liu, et al., "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows," in Proc. of ICCV'21.
  18. AI 30 ▪ 特徴マップをサイズがMxMのwindowに区切り window内でのみself-attentionを求める ▪ hxw個のパッチが存在する特徴マップにおいて、 (hw)x(hw)の計算量が、M2xM2 x (h/M)x(w/M)

    = M2hwに削減 ▪ M=7 (入力サイズ224の場合) ▪ C2(stride=4, 56x56のfeature map)だと、8x8個のwindow Window-based Multi-head Self-attention (W-MSA) per window window数 パッチ数の2乗
  19. AI 32 ▪ Token mixer: Spatial-Reduction Attention (SRA) Pyramid Vision

    Transformer (PVT) Spatial-Reduction Attention (SRA) がポイント W. Wang, et al., "Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions," in Proc. of ICCV’21.
  20. AI 33 ▪ K, V(辞書側)のみ空間サイズを縮小 ▪ 実装としてはConv2D -> LayerNorm ▪

    Qはそのままなので 出力サイズは変わらない ▪ 各stageの削減率は8, 4, 2, 1 と 特徴マップの縮小率と整合させる Spatial-Reduction Attention (SRA)
  21. AI 34 最近のVision Transformerたち(全部同じじゃないですか!? Swin Trasnformer PoolFormer ShiftViT AS-MLP Shunted

    Transformer CSWin Transformer ResT SepViT Lite Vision Transformer Pyramid Vision Transformer
  22. AI 37 ▪モバイル環境ではactivationとbranchingがボトルネックとなる ▪branching: skip connection等の分岐構造。メモリや同期にオーバーヘッ ドが発生する ▪PyTorch → ONNX

    →CoreMLと変換したモデルをiPhone12で推論時 間を評価 MobileOne P. Kumar, et al., "MobileOne: An Improved One millisecond Mobile Backbone," in Proc. of CVPR'23.
  23. AI 39 ▪学習時は性能向上が見込める multi branchで学習し、 推論時は高速なsingle branchの モデルに変換する ▪VGG⇔RepVGG ▪MobileNet-V1⇔MobileOne

    ▪みんな大好きYOLOv7 [2] でも (少しだけ)使われている Re-parameterization [1] [1] X. Ding, et al., "RepVGG: Making VGG-style ConvNets Great Again," in Proc. of CVPR’21. [2] C. Wang, et al., "YOLOv7: Trainable Bag-of-freebies Sets New State-of-the-art for Real-time Object Detectors," in Proc. of CVPR'23.
  24. AI 40 ▪ Mobile: iPhone 12, Core ML CPU: 2.3GHz

    Intel Xeon Gold 5118 GPU: RTX-2080Ti, NVIDIA TensorRT ※CPU/GPUはUbuntu desktop GPUはバッチサイズ1 ▪ 網羅的に実際の推論時間が載っていて 参考になる ▪ MobileがGPUと遜色ないのは Apple Neural Engineのおかげ? 精度 vs. 推論時間
  25. AI 45 ▪ NPU: iPhone 12, Core ML CPU: iPhone12

    CPU GPU: A100, TensorRT ※GPUはバッチサイズ64 精度 vs. 推論時間
  26. AI 47 EfficientFormerV2 Y. Li, "Rethinking Vision Transformers for MobileNet

    Size and Speed," in arXiv:2212.08059. もうCNNで良くない…︖
  27. AI 48 ▪ iPhone 12, Core ML Pixel 6 CPU,

    XNNPACK A100, TensorRT ※GPUはバッチサイズ64 精度 vs. 推論時間
  28. AI 49 MobileOne vs. EfficientFormerV2 iPhone 12 推論時間 ImageNet top-1

    acc ImageNet top-1 acc ・MobileOne-S1≒EffFormerV2-S0 ・⼤きいモデルはEffFormerV2の⽅が良い ・昔ながらのMobileNet系や ShuffleNetも善戦している
  29. AI 50 ▪ 高速化の基本は軽量モデルをベースとし、蒸留、量子化 ▪ 以前のサーベイ (2019) からの進化 ▪CNNは分かりやすい進化はない(RepVGGくらい?) ▪ViT系は急速に進化、モバイル実測でも早くなった!

    ▪ 実デバイスに応じたプロファイリング、設計が重要 ▪オーバーヘッドとなる可能性のある処理を知っておく! ▪これもShuffleNetV2の時代から言われていたが ▪今回のMobileOne、EfficientFormerは、iPhone+Core MLという GPU的な処理性能とモバイルのオーバヘッドを併せ持つ 最適化の効果が分かりやすい環境での出来事かもしれない まとめ