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

SSII2025 [OS1-02] 量子化手法の概要とエッジ開発における課題

SSII2025 [OS1-02] 量子化手法の概要とエッジ開発における課題

More Decks by 画像センシングシンポジウム

Transcript

  1. © GO Inc. 2 亀澤諒亮(GO株式会社) Kamesawa Ryosuke 2018~ DeNA 機械学習エンジニアとして創薬アルゴリズム開発

    2019~ GO株式会社 次世代AIドラレコサービス 『DRIVE CHART』において AIドラレコのソフトウェア開発・運用 Speaker
  2. © GO Inc. 3 1. 量子化とは - 量子化の概要とバリエーションについて俯瞰 - LLMにおける量子化の特徴と代表的な手法の解説

    2. 量子化ツールと推論エンジン - 量子化ツールと推論エンジンの既存実装を俯瞰・紹介 - エッジ推論・LLM推論の場合の選択肢について 3. 開発上の量子化の課題 - 弊社プロダクト開発における課題と対策を紹介 Outline
  3. © GO Inc. 5 浮動小数点数 (float) の代わりに低ビット整数を使うことで モデルを軽量化、高速化 (省電力化) する手法

    (unquantized float value) (quantized int value) s: scale, z: zero point, q min , q max : 量子化された値の値域 ニューラルネットワークの量子化
  4. © GO Inc. 6 一方で量子化誤差や外れ値によって推論精度が劣化する場合がある (unquantized float value) (quantized int

    value) s: scale, z: zero point, q min , q max : 量子化された値の値域 ニューラルネットワークの量子化
  5. © GO Inc. 7 何を - Weight - Activation 何に

    - IntN (N=2,3,4,8,16, etc.) - Ternary / Binary - 非一様量子化 - FP8 / NF4 - Codebook どの粒度で - Per-tensor - Per-channel - Per-token どうやって - 学習後量子化 (PTQ, Post Training Quantization) - 量子化を意識した学習 (QAT, Quantization-Aware Training) 量子化のバリエーション
  6. © GO Inc. 8 - Weight only - メモリ使用量が削減 -

    演算時 - 計算時に必要なタイミングでFloatに変換して計算 [Zhou+ '17] - 量子化したまま [Lin+ MLSys'24] - ハードウェアの対応やカーネルの実装が必要 - 基本的にはデータ不要 - キャリブレーションデータを用いた精度向上 [Lin+ MLSys'24] [Elias+, ICLR'22] - Weight + Activation - 整数演算で完結するので高速化に繋がる [Jacob+ CVPR'18] - Activationの分布によっては精度劣化 [Xiao+ ICML'23] - レイヤー間のスケール変換と丸めにより誤差が蓄積 何を量子化するか
  7. © GO Inc. 9 - IntN (Nビット整数) - N=8 (1

    byte) が最も一般的でどのHWでも利用可能 - LLMの場合はN=4程度まではほとんど精度劣化なく可能 [Elias+ ICLR'22] - Ternary (-1, 0, +1) / Binary (-1, 1) - 量子化の極端なケース - FPGAなど回路的な実装が可能 - Int4, Int8と比べると全く別のアプローチが必要になる [Lin+ NeurIPS'17] - 非一様量子化 (e.g. FP8 / FP4 / NormalFloat [Dettmers+, NeurIPS'23] ) - 広い範囲を表現可能、中心付近では高精度 - 学習に使われる場合も [Dettmers+ ICLR'22] - 高速な計算にはハードウェア的な対応が必要 (e.g. Nvidia H100) 何に量子化するか
  8. © GO Inc. 10 同じ量子化パラメータ(スケール、ゼロ点)を適用する範囲 - Per-tensor (layer-wise) - 畳み込み層や線形層の重みなどのまとまりごと

    - Per-channel (channel-wise) - チャネルごと - Per-tensor に比べて正確に量子化できる [Krishnamoorthi, '18] - チャネル数に比例して量子化パラメータが増える - Per-token - 入力トークンごとに動的に量子化パラメータを計算 - Transformerのactivationで使われる [Xiao+ ICML'23] どの粒度で量子化するか [Xiao+ ICML'23]
  9. © GO Inc. 11 学習後量子化 (PTQ, Post Training Quantization) -

    学習済みのモデルに対して量子化を行う - 量子化パラメータ(スケールとゼロ点)の計算 - データ (weight, activation) の分布から適切な値を決定する - スケールが小さい→表現できる範囲が小さいが範囲内では正確 - スケールが大きい→表現できる範囲は大きいが範囲内でも誤差が大きい - e.g. Min/Max [Krishnamoorthi '18], L2 loss minimization [Nagel+ '21] どうやって量子化するか
  10. © GO Inc. 12 学習後量子化 (PTQ, Post Training Quantization) -

    Static quantization 静的量子化 - Activationの量子化パラメータを事前に決定(キャリブレーション) - 事前に少数のキャリブレーションデータを用意してactivationの分布を取得する - Data-free な手法もある [Qian+ '23] [Liu+ '23] [Nagel+ '19] - Dynamic quantization 動的量子化 - Activationの量子化パラメータをforward時に決定 - 軽量画像認識モデルでは量子化パラメータの計算がボトルネックになり 高速化にはあまり寄与しない→LSTM / Transformerでの利用がメイン どうやって量子化するか
  11. © GO Inc. 13 量子化を意識した学習 (QAT, Quantization-Aware Training) - 学習データが必要

    - Backpropを通して量子化済の重みを学習 [Jacob+ CVPR'18] - 通常の学習後のfine-tuningとして行うのが一般的 - Quantization simulation (fake quantization) - forward時に量子化シミュレーションを行い、backwardはfloatのまま [Gholami+ '22] どうやって量子化するか
  12. © GO Inc. 14 メモリ削減が主なモチベーション - 大きいモデルを少ないリソース(GPU)で動かしたい - より低ビットへの量子化 多くのモデルで量子化済の重みも公開(e.g.

    Llama, Qwen, Gemma, DeepSeek) 推論エンジンも多くの量子化手法に対応、個別に最適化 → LLMにおいて量子化は必須の技術 LLMにおける量子化
  13. © GO Inc. 発見 "突出した"activationに寄与する1%の重みを 量子化しないことで精度劣化が低減 課題 一部Floatのまま残すのは非効率かつ実装も複雑化 提案手法 -

    Activationが突出したチャネルに大きいスケールを掛けて量子化することで Per-tensor量子化では統計的に量子化誤差が減少 - 入力にスケールの逆数を掛けることで結果として同じ演算を維持 16 AWQ (Activation-aware Weight Quantization) [Lin+ MLSys'24]
  14. © GO Inc. 17 NF4量子化+LoRAで量子化しつつ低コストで精度維持 - NF4: NormalFloat 4bit -

    正規分布の密度が均等になるような非一様量子化 - 外れ値の影響を受けにくくなる - LoRA: Low-Rank Adaptors (低ランクアダプタ) - 量子化済の重みに学習可能な低ランク行列を加算 - Double quantization - 量子化パラメータ自体も量子化することで パラメータあたりのデータ量を削減 QLoRA [Dettmers+, NeurIPS'23] [Hu+ ICLR'22]
  15. © GO Inc. 18 課題 Per-tensor 静的量子化は高速だが、activationの偏った分布が原因で精度劣化が発生する → Per-tensor 静的量子化のまま精度を維持したい

    提案手法 Weight, Activation間にスケーリングを挟むことで分布をスムーズにする SmoothQuant [Xiao+ ICML'23]
  16. © GO Inc. 21 高速なエッジ推論を目的とした多様なアクセラレーターが存在 - e.g. EdgeTPU (Google), Hexagon

    DSP (Qualcomm), NPU (Mediatek), Hailo - ほとんどの場合、量子化が必須 アクセラレーターごとに量子化方法は異なる 1. 主要な推論エンジン(LiteRT, ExecuTorch, OnnxRuntime)が対応している場合 - e.g. EdgeTPU (LiteRT), Hexagon DSP (LiteRT, ExecuTorch) - 推論エンジンに対応した量子化ツールが利用可能 - LiteRT → TensorFlow / ai-edge-torch - ExecuTorch → PyTorch 2. チップメーカー独自の推論エンジン・量子化ツールしか対応いていない場合 - 独自の量子化アルゴリズム - ソースコードが公開されないことが多い エッジ向けアクセラレーターと量子化
  17. © GO Inc. 22 量子化ツール、推論エンジンともに多くの実装が存在 量子化ツール - ツールごとに対応する量子化方法やアルゴリズムに大きな違い 推論エンジン -

    代表的な推論エンジンでは対応しているモデルや量子化手法にあまり違いはない - 内部的な実装の最適化や対応アクセラレータについて異なる部分が多い LLMにおける量子化ツールと推論エンジン
  18. © GO Inc. 23 LLM量子化ツール比較 アルゴリズム / 特徴 bitsandbyte LLM.int8(),

    QLoRA, 8-bit quantizers LLM Compressor PTQ, QAT, AWQ, GPTQ, SmoothQuant / vLLMでの推論に最適化 Quanto PTQ, QAT / ビット幅の柔軟な組み合わせが可能、optimumの量子化バックエンド torchao PTQ, QAT, autoquant / prototypeとして様々なアルゴリズムが実装 llama.cpp PTQ / 各種モデルのGGUFへの変換(量子化) Olive PTQ, AWQ, GPTQ, etc / ONNX Runtime 向けの最適化
  19. © GO Inc. 24 推論エンジン比較 量子化対応 特徴 ExecuTorch PT2E, torchao

    PyTorchのモバイルデプロイ LiteRT LiteRT, ai-edge-torch EdgeTPU, Hexagon DSP に対応 Ollama GGUF デスクトップ向けのシンプルなCLI llama.cpp GGUF C++実装によりNvidia GPU以外の環境でも高速 vLLM GGUF, LLM Comp., BNB, torchao 高スループット、高メモリ効率 DeepSpeed PTQ, ZeroQuant 複数GPU,マシンでの分散学習・推論 MLC LLM PTQ Android/iOSに対応 SGLang GGUF, LLM Comp., BNB, torchao 高スループット TensorRT-LLM PTQ, AWQ, GPTQ, SmoothQuant Nvidia GPU向けに最適化
  20. © GO Inc. 26 紹介: 『DRIVE CHART』 外向きカメラ 3軸加速度 センサ

    3軸角速度 センサ GPS 内向きカメラ レポートサーバ 地図 レポートシステム レポート アルゴリズム 深層学習モデル エッジAIライブラリ コンピュータ ビジョン
  21. © GO Inc. - 量子化の実装では細かい実装の違いが出力、精度に影響する - e.g. 丸めの方法、内部的な累積和のデータ型、非同期演算、etc. - 一方で、ハードウェア(推論エンジン)によってはエミュレータがない、

    もしくはエミュレータに正確な再現性がない場合もある → 量子化の正確な精度評価が実機上でないと困難 → 社内で内製デバイスファームを運用 - 実機を使った評価・検証環境を提供 28 誤差・再現性の問題 ホスト サーバー 評価環境 オフィス環境 https://speakerdeck.com/mot_techtalk/etuziainiokerucitoaikai-fa-huan-jing
  22. © GO Inc. 30 • Jacob, Benoit, et al. "Quantization

    and training of neural networks for efficient integer-arithmetic-only inference." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018. • Zhou, Aojun, et al. "Incremental network quantization: Towards lossless cnns with low-precision weights." arXiv preprint arXiv:1702.03044 (2017). • Krishnamoorthi, Raghuraman. "Quantizing deep convolutional networks for efficient inference: A whitepaper." arXiv preprint arXiv:1806.08342 (2018). • Nagel, Markus, et al. "A white paper on neural network quantization." arXiv preprint arXiv:2106.08295 (2021). • Lin, Xiaofan, Cong Zhao, and Wei Pan. "Towards accurate binary convolutional neural network." Advances in neural information processing systems 30 (2017). • Gholami, Amir, et al. "A survey of quantization methods for efficient neural network inference." Low-Power Computer Vision. Chapman and Hall/CRC, 2022. 291-326. • Nagel, Markus, et al. "Data-free quantization through weight equalization and bias correction." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019. • Nagel, Markus, et al. "Up or down? adaptive rounding for post-training quantization." International Conference on Machine Learning. PMLR, 2020. • Dettmers, Tim, et al. "LLM.int8 () 8-bit matrix multiplication for transformers at scale." Proceedings of the 36th International Conference on Neural Information Processing Systems. 2022. • Wei, Xiuying, et al. "Outlier Suppression+: Accurate quantization of large language models by equivalent and optimal shifting and scaling." arXiv preprint arXiv:2304.09145 (2023). 参考文献
  23. © GO Inc. 31 • Elias Frantar, et al. "GPTQ:

    Accurate Quantization for Generative Pre-trained Transformers." The Eleventh International Conference on Learning Representations . 2023. • Kim, Jeonghoon, et al. "Memory-Efficient Fine-Tuning of Compressed Large Language Models via sub-4-bit Integer Quantization." arXiv preprint arXiv:2305.14152 (2023). • Schaefer, Clemens JS, et al. "Mixed Precision Post Training Quantization of Neural Networks with Sensitivity Guided Search." arXiv preprint arXiv:2302.01382 (2023). • Pandey, Nilesh Prasad, et al. "A Practical Mixed Precision Algorithm for Post-Training Quantization." arXiv preprint arXiv:2302.05397 (2023). • Wang, Kuan, et al. "Haq: Hardware-aware automated quantization with mixed precision." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019. • Koryakovskiy, Ivan, et al. "One-Shot Model for Mixed-Precision Quantization." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023. • Wu, Bichen, et al. "Mixed precision quantization of convnets via differentiable neural architecture search." arXiv preprint arXiv:1812.00090 (2018). • Qian, Biao, et al. "Adaptive Data-Free Quantization." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023. • Liu, Zechun, et al. "LLM-QAT: Data-Free Quantization Aware Training for Large Language Models." arXiv preprint arXiv:2305.17888 (2023). • Tang, Chen, et al. "Mixed-precision neural network quantization via learned layer-wise importance." European conference on computer vision. Cham: Springer Nature Switzerland, 2022. 参考文献
  24. © GO Inc. 32 • Xiao, Guangxuan, et al. "SmoothQuant:

    Accurate and efficient post-training quantization for large language models." International Conference on Machine Learning. PMLR, 2023. • Dettmers, Tim, et al. "QLoRA: Efficient finetuning of quantized llms." Advances in neural information processing systems 36 (2023): 10088-10115. • Dettmers, Tim. "8-bit approximations for parallelism in deep learning." arXiv preprint arXiv:1511.04561 (2015). • Lin, Ji, et al. "AWQ: Activation-aware weight quantization for on-device llm compression and acceleration." Proceedings of Machine Learning and Systems 6 (2024): 87-100. • Dettmers, Tim, et al. "8-bit Optimizers via Block-wise Quantization." International Conference on Learning Representations. 2022. • Hu, Edward J., et al. "Lora: Low-rank adaptation of large language models." ICLR 1.2 (2022): 3. 参考文献