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

量子化どこまでできる? #tfug / Edge device quantization

Yuji Tokuda
January 22, 2020

量子化どこまでできる? #tfug / Edge device quantization

Yuji Tokuda

January 22, 2020
Tweet

More Decks by Yuji Tokuda

Other Decks in Technology

Transcript

  1. 量⼦化どこまでできる?
    2020/01/22 NN論⽂を肴に酒を飲む会 #10

    View Slide

  2. profile.yml
    name: '徳田 祐二(トクダ ユウジ)'
    company: 'OPTiM Corporation'
    twitter: '@dakuton'
    keyword:
    - '時系列データ分析'
    - 'うどん'
    - '日本酒'
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    View Slide

  3. 読んだ⽬的
    • 「量⼦化」の中で実ライブラリで使えるものを明らかにする
    • weight, activation, gradient, error
    • 1bit(XNOR), 2bit, 4bit, 8bit
    • ハードウェアなど周辺動向(論⽂以外)と突き合わせたい
    Training and Inference with Integers in Deep Neural Networks
    https://arxiv.org/abs/1802.04680

    View Slide

  4. 論⽂
    • Quantization and Training of Neural Networks for Efficient Integer-
    Arithmetic-Only Inference
    • https://arxiv.org/abs/1712.05877
    • Quantizing deep convolutional networks for efficient inference:
    A whitepaper
    • https://arxiv.org/abs/1806.08342
    • Post training 4-bit quantization of convolutional networks for rapid-
    deployment
    • https://arxiv.org/abs/1810.05723
    TensorFlow whitepaper
    NeurIPS 2019

    View Slide

  5. 元ネタ
    • エッジデバイス推論向けのTensorFlow最適化を掘り下げてみる
    #GoogleMLSummit
    • https://tech-blog.optim.co.jp/entry/2019/07/12/173000

    View Slide

  6. エッジ推論のメリット・課題
    • メリット(クラウド実⾏と⽐較)
    1. 推論リクエスト通信によって発⽣するlatencyを抑える
    2. ネットワークから切断された環境でも推論可能
    3. プライバシー配慮データが必要な際、アップロードなしで推論可能
    • 課題(4つのリソース制約に対処)
    1. プロセッサ(CPUやGPUなど)が限られている
    2. メモリが限られている
    3. バッテリー消費
    4. モデルサイズ

    View Slide

  7. 主なエッジ推論最適化
    • Post-training quantization
    • 学習済みモデルのもつweightやactivationを少ないbit数の整数表現に変換
    • Quantization-aware training(During training)
    • モデルの⽣成時にあらかじめ量⼦化することを前提に学習
    • Low-order precision floating point
    • 整数ではなく、FP32->FP16など少ない実数表現に変換
    • Compression
    • Pruning(ネットワークのweightが0となる数を増やして計算短縮)やファイル圧縮などを組み合
    わせて、実⾏速度とモデルサイズ削減のバランスをとる
    • Binarization(Extremely low-bit quantization)
    • 2値化(bit数が整数よりさらに⼩さい量⼦化)表現に置き換えて、論理演算可能にすることで⾼
    速化
    • Neural Architecture Search(NAS)
    • 強化学習や遺伝的アルゴリズムを⽤いたモデルネットワーク・パラメータの最適化

    View Slide

  8. 主なエッジ推論最適化
    • Post-training quantization
    • 学習済みモデルのもつweightやactivationを少ないbit数の整数表現に変換
    • Quantization-aware training(During training)
    • モデルの⽣成時にあらかじめ量⼦化することを前提に学習
    • Low-order precision floating point
    • 整数ではなく、FP32->FP16など少ない実数表現に変換
    • Compression
    • Pruning(ネットワークのweightが0となる数を増やして計算短縮)やファイル圧縮などを組み合
    わせて、実⾏速度とモデルサイズ削減のバランスをとる
    • Binarization(Extremely low-bit quantization)
    • 2値化(bit数が整数よりさらに⼩さい量⼦化)表現に置き換えて、論理演算可能にすることで⾼
    速化
    • Neural Architecture Search(NAS)
    • 強化学習や遺伝的アルゴリズムを⽤いたモデルネットワーク・パラメータの最適化
    今回の紹介範囲(INT量子化)

    View Slide

  9. • Post training, Quantization-aware trainingどちらも
    clippingを利⽤している
    • -∞〜∞の範囲からmax範囲を決定(ReLUなど)
    • INT8であれば256種類に収まるようにFP32を丸める
    量⼦化イメージ

    View Slide

  10. • Post-training quantization: range決め打ちで決定
    • Quantization-aware training: fine tuningによる解析的なrange
    決定
    Post-training or Quantization-aware training

    View Slide

  11. • Post-training quantization: range決め打ちで決定
    • Quantization-aware training: fine tuningによる解析的なrange
    決定
    Post-training or Quantization-aware training
    精度低下の原因に

    View Slide

  12. Quantization-aware training
    Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
    https://arxiv.org/abs/1712.05877
    forward: FakeQuant
    backward: FP32

    View Slide

  13. Quantization-aware training
    Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
    https://arxiv.org/abs/1712.05877
    forward backward
    forward: FakeQuant
    backward: FP32

    View Slide

  14. Quantization-aware training
    Linear
    weight
    FP32
    bias
    FP32
    x
    FP32
    y
    FP32
    Linear
    weight
    INT8
    bias
    FP32
    x
    INT8
    y
    INT8
    weight quantization
    activation quantization
    Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
    https://arxiv.org/abs/1712.05877

    View Slide

  15. Post-training vs Aware training
    • 精度(変換前からの劣化の⼩ささ): Post < Aware
    • 処理のシンプルさ: Post >>> Aware
    • Fine-tuningを⾏うためのデータセットが必要
    • Fake Quantレイヤの追加が必要

    View Slide

  16. TensorFlowによる量⼦化
    Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
    https://arxiv.org/abs/1712.05877
    • TFLiteConverterによる変換
    • Whitepaperでは3種類(a,b,d)
    • TensorFlow 2.xドキュメントでは4種類(a,b,c,d)
    • Approaches
    1. Post Training Quantization
    a. Weight Quantization: Dataset不要
    b. Full integer quantization: Datasetで分布調整
    c. Float16 quantization: 半精度
    2. Quantization-Aware Training
    d. weight + activation: Datasetによるfine-tuning

    View Slide

  17. TensorFlowによる量⼦化
    Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
    https://arxiv.org/abs/1712.05877
    • TFLiteConverterによる変換
    • Whitepaperでは3種類(a,b,d)
    • TensorFlow 2.xドキュメントでは4種類(a,b,c,d)
    • Approaches
    1. Post Training Quantization
    a. Weight Quantization: Dataset不要
    b. Full integer quantization: Datasetで分布調整
    c. Float16 quantization: 半精度
    2. Quantization-Aware Training
    d. weight + activation: Datasetによるfine-tuning

    View Slide

  18. PyTorchによる量⼦化
    • PyTorch 1.3からExperimental Support開始
    • パフォーマンス(FP32->INT8)
    1. 1/4 in the model size
    2. 1/4 in memory bandwidth requirements
    3. 2-4x faster (Hardware support for INT8 computations)
    • Approaches
    1. Dynamic Quantization: weight, Dataset不要
    2. Post Training Quantization: weight + activation, Datasetで分布調整
    3. Quantization-Aware Training: weight + activation, Datasetによるfine-tuning
    https://pytorch.org/blog/pytorch-1-dot-3-adds-mobile-privacy-quantization-and-named-tensors/#quantization-
    experimental
    LSTMがターゲット(論文要確認)

    View Slide

  19. INT8よりbit数を短くできるか?
    • 論⽂としては存在する
    • Post training 4-bit quantization of convolutional networks for rapid-deployment
    • https://arxiv.org/abs/1810.05723
    • ただし速度が向上するか?は利⽤プロセッサやフレームワーク次第
    • 例えばARM NEONのSIMD命令を利⽤してINT8演算を並列化している
    • https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/kernels/in
    ternal/optimized

    View Slide

  20. Analytical Clipping for Integer Quantization (ACIQ)
    + Per-channel bit allocation
    Post training 4-bit quantization of convolutional networks for rapid-deployment
    https://arxiv.org/abs/1810.05723

    View Slide

  21. Analytical Clipping for Integer Quantization (ACIQ)
    + Per-channel bit allocation
    Post training 4-bit quantization of convolutional networks for rapid-deployment
    https://arxiv.org/abs/1810.05723
    post trainにて解析的にrange決定

    View Slide

  22. Analytical Clipping for Integer Quantization (ACIQ)
    + Per-channel bit allocation
    Post training 4-bit quantization of convolutional networks for rapid-deployment
    https://arxiv.org/abs/1810.05723
    ResNet Post Training
    • weight 4bit
    • activation 4bit

    View Slide

  23. Quantization for TVM
    Quantization for TVM (TVM Conference, Dec 12th 2018)
    https://sampl.cs.washington.edu/tvmconf/slides/11-Ziheng-Jiang.pdf
    FPGA向け?

    View Slide

  24. TVM TensorCore INT4/INT1対応
    [CODEGEN] Support cuda tensorcore subbyte int data type in auto tensorcore
    https://github.com/apache/incubator-tvm/pull/4546

    View Slide

  25. TVM TensorCore INT4/INT1対応
    [CODEGEN] Support cuda tensorcore subbyte int data type in auto tensorcore
    https://github.com/apache/incubator-tvm/pull/4546
    • NVIDIA Turing世代
    • TensorCore INT4/INT1を試験的にサポート
    • ただ、cuBLAS(⾏列演算ライブラリ)はINT8まで
    • CUTLASS(INT/FP混合演算向けライブラリ) 1.1以降で置き換
    える必要あり
    • NVIDIAに先⾏してTVMがGPU INT4サポートしてきた
    • つまり「理論上INT4いける」に実装が追いついてきた

    View Slide

  26. まとめ
    • 現時点(2020/01/22)では
    • 理論上はResNetのINT4量⼦化で精度確保可能
    • TensorFlow/PyTorchはINT8が速度性能限界
    • 「理論上INT4いける」に実装が追いつくものが出てきた

    View Slide