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

高速な深層学習モデルアーキテクチャ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
    2023/05/25
    内田 祐介
    株式会社ディー・エヌ・エー + GO株式会社
    高速な深層学習モデル
    アーキテクチャ2023

    View Slide

  2. AI 2
    ▪ モデルアーキテクチャ観点からのDeep Neural Network高速化
    ▪ 畳み込みニューラルネットワークの研究動向
    ▪ 畳み込みニューラルネットワークの高精度化と高速化
    ▪ モデルアーキテクチャ観点からの高速化2019
    ▪ 近年のHierarchical Vision Transformer
    モデルアーキテクチャ好き

    View Slide

  3. AI 3
    ▪ モデルアーキテクチャ観点からのDeep Neural Network高速化
    ▪ 畳み込みニューラルネットワークの研究動向
    ▪ 畳み込みニューラルネットワークの高精度化と高速化
    ▪ モデルアーキテクチャ観点からの高速化2019
    ▪ 近年のHierarchical Vision Transformer
    モデルアーキテクチャ好き
    ここからどのくらい
    進化したのか︖

    View Slide

  4. AI 4
    ▪ モデルの高速化・軽量化概略
    ▪ 軽量なモデルアーキテクチャ (CNN)
    ▪ 軽量なモデルアーキテクチャ (ViT)
    ▪ 最近の軽量モデル
    アウトライン

    View Slide

  5. AI 5
    モデルの高速化・軽量化概略

    View Slide

  6. AI 6
    ▪エッジデバイス等リソース制限があるユースケースで重要
    ▪色々な観点
    ▪モデルパラメータ数の削減
    ▪FLOPs (MACs) 数の削減
    ▪モデルファイルサイズの削減
    ▪推論時間の削減
    ▪訓練時間の削減
    ▪微妙に違うので、使うときは何を重視すべきか、
    論文を読むときは何が改善しているのかを気にする
    ▪本資料は基本的にはFLOPsの削減手法
    ▪実デバイスでの推論速度を意識した研究も増加しており
    最後に紹介する2モデル(CNN/ViT)は推論速度を意識
    モデルの高速化・軽量化

    View Slide

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

    View Slide

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

    View Slide

  9. 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.

    View Slide

  10. 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.

    View Slide

  11. AI 11
    ▪浮動小数点数として扱われるニューラルネットワークのweightや
    activationを整数近似
    ▪int8が一般的
    ▪一時期binary化が流行った(e.g. XNOR-Net)が最近見ない気が
    ▪モデルサイズや推論時間が削減できるが量子化誤差により精度低下も
    発生する
    ▪学習済みモデルを量子化する、学習時に量子化を意識した学習をする
    等、量子化方法も様々
    量子化 (Quantization)
    B. Jacob, et al., "Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference," in Proc. of
    CVPR, 2018.

    View Slide

  12. AI 12
    ▪モデルのforwardの途中で信頼性が高い場合に結果を出力してしまう
    ことで高速化
    ▪別に1つのモデルに閉じている必要はない
    ▪カスケード型分類器の時代から当たり前といえば当たり前
    ▪例えばBranchyNetでは
    出力のエントロピーが低い場合に
    exit
    早期終了 (Early Termination)
    S. Teerapittayanon, et al., "BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks," in Proc. of ICPR’16.

    View Slide

  13. AI 13
    軽量なモデルアーキテクチャ (CNN)

    View Slide

  14. 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)
    に⽐例

    View Slide

  15. 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.

    View Slide

  16. 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.

    View Slide

  17. 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

    View Slide

  18. 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.

    View Slide

  19. 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.

    View Slide

  20. AI 20
    ▪MnasNetをベースに最適化
    ▪SEモジュールを大きめにする
    ▪(h-)swishの利用、実装の最適化
    ▪NetAdaptによるPruning
    ▪Compactation↓
    MobileNetV3
    swishが⼊ったMBConvは
    みんな⼤好きのEfficientNetでも
    基本モジュールとして採⽤
    A. Howard, et al., "Searching for MobileNetV3," in Proc. of ICCV'19.

    View Slide

  21. 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.

    View Slide

  22. 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.

    View Slide

  23. AI 23
    ShuffleNet V2

    View Slide

  24. AI 24
    ▪チャネルをグループ化し、各グループごとに空間的にシフ
    トするshift演算 (0 FLOPs) とconv1x1でモジュールを構

    ShiftNet
    B. Wu, et al., "Shift: A Zero FLOP, Zero Parameter," in arXiv:1711.08141, 2017.

    View Slide

  25. AI 25
    ▪畳み込み演算をどのようにサボるかがポイント
    ▪空間方向とチャネル方向を分けて計算
    ▪空間方向の畳み込み
    ▪depthwise conv
    ▪spatial shift
    ▪チャネル方向の畳み込み
    ▪conv1x1
    ▪channel shuffle,
    ▪bottleneck, expansion
    CNN高速化のまとめ

    View Slide

  26. AI 26
    軽量なモデルアーキテクチャ (ViT)

    View Slide

  27. 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の計算量

    View Slide

  28. 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.

    View Slide

  29. 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.

    View Slide

  30. 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乗

    View Slide

  31. AI 31
    ▪ (M/2, M/2) だけwindowをshiftしたW-MSA
    ▪ 通常のwindow-basedと交互に適用することで
    隣接したwindow間でのconnectionが生まれる
    Shifted Window-based Multi-head Self-attention (SW-MSA)
    h=w=8, M=4の例

    View Slide

  32. 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.

    View Slide

  33. AI 33
    ▪ K, V(辞書側)のみ空間サイズを縮小
    ▪ 実装としてはConv2D -> LayerNorm
    ▪ Qはそのままなので
    出力サイズは変わらない
    ▪ 各stageの削減率は8, 4, 2, 1 と
    特徴マップの縮小率と整合させる
    Spatial-Reduction Attention (SRA)

    View Slide

  34. AI 34
    最近のVision Transformerたち(全部同じじゃないですか!?
    Swin Trasnformer
    PoolFormer
    ShiftViT
    AS-MLP
    Shunted Transformer CSWin Transformer
    ResT
    SepViT
    Lite Vision Transformer
    Pyramid Vision Transformer

    View Slide

  35. AI 35
    最近の軽量モデル

    View Slide

  36. 36
    ▪CNN, ViTからそれぞれエッジデバイスを意識したモデルを紹介
    ▪MobileOne (CNN)
    ▪EfficientFormer (ViT)
    最近の軽量モデル

    View Slide

  37. 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.

    View Slide

  38. AI 38
    ▪MobileNet-V1をベースとしたMobileOne Blockをスタック
    ▪kブロックを利用したover-parameterizationにより小さいモデルの学習を改善
    ▪学習時と推論時で構造が異なるre-parameterizationを利用
    MobileOneアーキテクチャ
    MobileOne Block 各ステージのMobileOne Blockパラメータ
    kブロックを利用したover-
    parameterizationはS0のみ
    (それ以上大きいモデルは改善しない)
    3x3 convはdepthwise

    View Slide

  39. 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.

    View Slide

  40. 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. 推論時間

    View Slide

  41. AI 41
    ▪ ViT系はFLOPsの割に遅い
    おまけ

    View Slide

  42. AI 42
    ▪ViTの軽量モデルは提案されているが実デバイスでの推論時間は遅い
    ▪オリジナルのViTはPatch embedding, CNN的な構造を取り入れたLeViTは
    4D⇔3D間のreshapeがオーバーヘッドとなっている
    EfficientFormer
    Y. Li, "EfficientFormer: Vision Transformers at MobileNet Speed," in Proc. of NeurIPS 2022.
    iPhone12での推論時間
    Reshape overhead
    Patch embed overhead
    Patch embed overhead

    View Slide

  43. AI 43
    ▪Patch embedding→stride=2のconv3x3
    ▪前半はPoolFormer的構造、FFNは推論時にfuseできるconv+BN
    ▪後半は普通のglobal attention
    ▪特徴マップの小さい後半ステージのみで利用→精度と速度のトレードオフを改善
    ▪4D区間と3D区間を分けreshape overheadをなくす
    EfficientFormer

    View Slide

  44. AI 44
    ▪アーキテクチャ探索を行いモデルのwidth, depth等を決定
    ▪Supernetの学習→slimmingにより、実デバイスの推論時間を制約として
    精度を最大化
    EfficientFormer

    View Slide

  45. AI 45
    ▪ NPU: iPhone 12, Core ML
    CPU: iPhone12 CPU
    GPU: A100, TensorRT
    ※GPUはバッチサイズ64
    精度 vs. 推論時間

    View Slide

  46. AI 46
    EfficientFormerV2
    Y. Li, "Rethinking Vision Transformers for MobileNet Size and Speed," in arXiv:2212.08059.

    View Slide

  47. AI 47
    EfficientFormerV2
    Y. Li, "Rethinking Vision Transformers for MobileNet Size and Speed," in arXiv:2212.08059.
    もうCNNで良くない…︖

    View Slide

  48. AI 48
    ▪ iPhone 12, Core ML
    Pixel 6 CPU, XNNPACK
    A100, TensorRT
    ※GPUはバッチサイズ64
    精度 vs. 推論時間

    View Slide

  49. AI 49
    MobileOne vs. EfficientFormerV2
    iPhone 12
    推論時間
    ImageNet
    top-1 acc
    ImageNet
    top-1 acc
    ・MobileOne-S1≒EffFormerV2-S0
    ・⼤きいモデルはEffFormerV2の⽅が良い
    ・昔ながらのMobileNet系や
    ShuffleNetも善戦している

    View Slide

  50. AI 50
    ▪ 高速化の基本は軽量モデルをベースとし、蒸留、量子化
    ▪ 以前のサーベイ (2019) からの進化
    ▪CNNは分かりやすい進化はない(RepVGGくらい?)
    ▪ViT系は急速に進化、モバイル実測でも早くなった!
    ▪ 実デバイスに応じたプロファイリング、設計が重要
    ▪オーバーヘッドとなる可能性のある処理を知っておく!
    ▪これもShuffleNetV2の時代から言われていたが
    ▪今回のMobileOne、EfficientFormerは、iPhone+Core MLという
    GPU的な処理性能とモバイルのオーバヘッドを併せ持つ
    最適化の効果が分かりやすい環境での出来事かもしれない
    まとめ

    View Slide