Slide 1

Slide 1 text

量子化手法の概要と 
 エッジ開発における課題 
 亀澤諒亮(GO株式会社)


Slide 2

Slide 2 text

© GO Inc. 2 亀澤諒亮(GO株式会社) Kamesawa Ryosuke 2018~ DeNA 機械学習エンジニアとして創薬アルゴリズム開発 2019~ GO株式会社 次世代AIドラレコサービス 『DRIVE CHART』において AIドラレコのソフトウェア開発・運用 Speaker

Slide 3

Slide 3 text

© GO Inc. 3 1. 量子化とは - 量子化の概要とバリエーションについて俯瞰 - LLMにおける量子化の特徴と代表的な手法の解説 2. 量子化ツールと推論エンジン - 量子化ツールと推論エンジンの既存実装を俯瞰・紹介 - エッジ推論・LLM推論の場合の選択肢について 3. 開発上の量子化の課題 - 弊社プロダクト開発における課題と対策を紹介 Outline

Slide 4

Slide 4 text

© GO Inc. 量子化とは 01

Slide 5

Slide 5 text

© GO Inc. 5 浮動小数点数 (float) の代わりに低ビット整数を使うことで モデルを軽量化、高速化 (省電力化) する手法 (unquantized float value) (quantized int value) s: scale, z: zero point, q min , q max : 量子化された値の値域 ニューラルネットワークの量子化

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

© 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) 量子化のバリエーション

Slide 8

Slide 8 text

© 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] - レイヤー間のスケール変換と丸めにより誤差が蓄積 何を量子化するか

Slide 9

Slide 9 text

© 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) 何に量子化するか

Slide 10

Slide 10 text

© 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]

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

© 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での利用がメイン どうやって量子化するか

Slide 13

Slide 13 text

© GO Inc. 13 量子化を意識した学習 (QAT, Quantization-Aware Training) - 学習データが必要 - Backpropを通して量子化済の重みを学習 [Jacob+ CVPR'18] - 通常の学習後のfine-tuningとして行うのが一般的 - Quantization simulation (fake quantization) - forward時に量子化シミュレーションを行い、backwardはfloatのまま [Gholami+ '22] どうやって量子化するか

Slide 14

Slide 14 text

© GO Inc. 14 メモリ削減が主なモチベーション - 大きいモデルを少ないリソース(GPU)で動かしたい - より低ビットへの量子化 多くのモデルで量子化済の重みも公開(e.g. Llama, Qwen, Gemma, DeepSeek) 推論エンジンも多くの量子化手法に対応、個別に最適化 → LLMにおいて量子化は必須の技術 LLMにおける量子化

Slide 15

Slide 15 text

© GO Inc. 15 基本的な量子化手法はLLMにもそのまま適用可能 一方で、LLM固有の課題を解決するためにLLMに特化した手法も発展 複数の量子化ツール・推論エンジンがサポートする代表的な手法 - AWQ [Lin+ MLSys'24] - QLoRA [Dettmers+, NeurIPS'23] - SmoothQuant [Xiao+ ICML'23] LLMに特化した代表的な量子化の手法

Slide 16

Slide 16 text

© GO Inc. 発見 "突出した"activationに寄与する1%の重みを 量子化しないことで精度劣化が低減 課題 一部Floatのまま残すのは非効率かつ実装も複雑化 提案手法 - Activationが突出したチャネルに大きいスケールを掛けて量子化することで Per-tensor量子化では統計的に量子化誤差が減少 - 入力にスケールの逆数を掛けることで結果として同じ演算を維持 16 AWQ (Activation-aware Weight Quantization) [Lin+ MLSys'24]

Slide 17

Slide 17 text

© GO Inc. 17 NF4量子化+LoRAで量子化しつつ低コストで精度維持 - NF4: NormalFloat 4bit - 正規分布の密度が均等になるような非一様量子化 - 外れ値の影響を受けにくくなる - LoRA: Low-Rank Adaptors (低ランクアダプタ) - 量子化済の重みに学習可能な低ランク行列を加算 - Double quantization - 量子化パラメータ自体も量子化することで パラメータあたりのデータ量を削減 QLoRA [Dettmers+, NeurIPS'23] [Hu+ ICLR'22]

Slide 18

Slide 18 text

© GO Inc. 18 課題 Per-tensor 静的量子化は高速だが、activationの偏った分布が原因で精度劣化が発生する → Per-tensor 静的量子化のまま精度を維持したい 提案手法 Weight, Activation間にスケーリングを挟むことで分布をスムーズにする SmoothQuant [Xiao+ ICML'23]

Slide 19

Slide 19 text

© GO Inc. 量子化ツールと 推論エンジン 02

Slide 20

Slide 20 text

© GO Inc. 20 Overview

Slide 21

Slide 21 text

© 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. チップメーカー独自の推論エンジン・量子化ツールしか対応いていない場合 - 独自の量子化アルゴリズム - ソースコードが公開されないことが多い エッジ向けアクセラレーターと量子化

Slide 22

Slide 22 text

© GO Inc. 22 量子化ツール、推論エンジンともに多くの実装が存在 量子化ツール - ツールごとに対応する量子化方法やアルゴリズムに大きな違い 推論エンジン - 代表的な推論エンジンでは対応しているモデルや量子化手法にあまり違いはない - 内部的な実装の最適化や対応アクセラレータについて異なる部分が多い LLMにおける量子化ツールと推論エンジン

Slide 23

Slide 23 text

© 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 向けの最適化

Slide 24

Slide 24 text

© 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向けに最適化

Slide 25

Slide 25 text

© GO Inc. 開発上の 量子化の課題 03

Slide 26

Slide 26 text

© GO Inc. 26 紹介: 『DRIVE CHART』 外向きカメラ 3軸加速度 センサ 3軸角速度 センサ GPS 内向きカメラ レポートサーバ 地図 レポートシステム レポート アルゴリズム 深層学習モデル エッジAIライブラリ コンピュータ ビジョン

Slide 27

Slide 27 text

© GO Inc. 27 エッジ・モバイルではハードウェア・推論エンジン・量子化ツールが密結合 - HWベンダーがアクセラレータ向けの推論エンジンや量子化ツールを提供 - 多くの場合、オープンソースではなく機能追加もベンダーに依存 制約に合わせたワークアラウンドが必要になる場合もある - 例)Per-tensor量子化しか使えない場合の擬似Per-channel化 ハードウェア・量子化ツールの制約 https://techblog.goinc.jp/entry/2022/06/02/090000_1

Slide 28

Slide 28 text

© GO Inc. - 量子化の実装では細かい実装の違いが出力、精度に影響する - e.g. 丸めの方法、内部的な累積和のデータ型、非同期演算、etc. - 一方で、ハードウェア(推論エンジン)によってはエミュレータがない、 もしくはエミュレータに正確な再現性がない場合もある → 量子化の正確な精度評価が実機上でないと困難 → 社内で内製デバイスファームを運用 - 実機を使った評価・検証環境を提供 28 誤差・再現性の問題 ホスト サーバー 評価環境 オフィス環境 https://speakerdeck.com/mot_techtalk/etuziainiokerucitoaikai-fa-huan-jing

Slide 29

Slide 29 text

© GO Inc. 29 - 量子化と一言で言っても多くのバリエーション・手法 - LLMに関しては多くの量子化ツール・推論エンジンが存在 - 実際のエッジ開発・運用上の課題 - ハードウェアによる手法の制限 - 量子化誤差と再現性の問題 最後に

Slide 30

Slide 30 text

© 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). 参考文献

Slide 31

Slide 31 text

© 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. 参考文献

Slide 32

Slide 32 text

© 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. 参考文献