ひとことで言うと
量子化は、モデル内部の計算に使う数値の精度を下げることで、モデルを小さく・速くする手法です。精度をある程度保ちながら、動かすのに必要なメモリや計算量を減らせます。
どんな場面で使うか
- GPUメモリが限られた環境で大きなモデルを動かしたいとき
- 推論 の速度を上げてコストやレイテンシを下げたいとき
- クラウドだけでなく、ローカル環境やエッジ端末でも動かしたいとき
- 蒸留と組み合わせて、さらなる軽量化を狙うとき
蒸留との違い
- 蒸留
- 大きなモデルの振る舞いを小さなモデルへ学ばせる
- モデルの構造ごと変わる
- 量子化
- 同じモデルを使いながら、数値の持ち方を変えて軽くする
- 構造はそのまま、表現の精度を落とすことで圧縮する
用途に応じて、蒸留と量子化を組み合わせることもあります。
実務で気にするポイント
- 圧縮率を上げるほど、出力品質が下がるリスクがある
- タスクによって品質の落ち方が異なるため、業務で使う用途で評価する
- 量子化後のモデルが最低ラインを満たすかを確認してから本番利用する
- ライブラリやフレームワークによって対応している量子化の種類が異なる
注意: 量子化は「軽くなるが何かを犠牲にする」手法です。どの用途でどこまで許容できるかを先に決めずに進めると、速くなっても業務で使えないモデルになることがあります。