量子化
読み: りょうしか
モデルの重みや活性化値を低ビット精度 (INT8 など) で表現することで、推論速度の向上とメモリ使用量の削減を実現する最適化手法。
量子化 (Quantization) は、ニューラルネットワークのパラメーターや中間計算を 32 ビット浮動小数点 (FP32) からより低いビット精度 (INT8、FP16 など) に変換する技術である。
FP32 の重みを INT8 に量子化すると、1 パラメーターあたりのメモリが 4 バイトから 1 バイトに削減される。ResNet-50 (約 100MB) は INT8 量子化で約 25MB になる。
- 訓練後量子化 (PTQ): 学習済みモデルに対して少量のキャリブレーションデータを用いて量子化パラメーター (スケールとゼロポイント) を決定する。追加学習が不要で手軽だが、精度低下が大きい場合がある
- 量子化対応学習 (QAT): 学習中に量子化の影響をシミュレートし、量子化後も精度を維持できるようパラメーターを最適化する。PTQ と比べて学習コストが追加される
- 混合精度: 感度の高い層 (最初と最後の層など) は FP16 のまま残し、それ以外を INT8 にする戦略。精度と速度のバランスを細かく調整できる
TensorFlow Lite は tf.lite.Optimize.DEFAULT で自動量子化を提供し、ONNX Runtime は INT8 量子化をサポートする。WebAssembly 環境のブラウザー上でも量子化モデルを実行できる。