量子化

Quantization

モデルの重みや活性値を浮動小数点から低ビットの離散値に置き換えて保持・計算する手法。メモリ使用量と推論の遅延を減らせる。ビット幅を下げるほど圧縮率は上がるが精度劣化と釣り合わせる必要があり、どこをどの精度で表現するかの設計が中心的な論点になる。

詳細

概要

量子化は、連続値である実数のパラメータを有限個の離散値に割り当てて表現する手法である。Gholami らのサーベイは、この問題を、連続な実数の集合を固定された離散集合の上にどう分布させれば必要なビット数を最小にできるか、という形で定式化している。

技術的な要点

浮動小数点から低精度の整数へ変換すると、メモリ使用量と遅延を削減できる。同サーベイは、4 ビット以下の整数表現を用いる場合に理論上は 16 倍の削減となり、実装上は 4 倍から 8 倍程度が得られると述べている。手法は大きく、学習後に変換する事後量子化と、学習の途中で量子化の影響を織り込む量子化認識学習に分かれる。層ごと、チャネルごとにスケールを変える粒度の設計や、値の分布が大きく偏る箇所を高い精度のまま残す扱いが、精度を保つうえでの要点になる。

産業での位置づけ

大規模モデルの推論は演算量よりもメモリ帯域とメモリ容量に律速されることが多く、量子化はそこに直接効く。推論用アクセラレータが対応する数値形式とモデル側の量子化手法は相互に制約し合うため、ハードウェアの選定とソフトウェアの設計が連動する。組込み機器での実行では、量子化を前提としない限り成立しない場合も多い。