高解像度の原画をそのまま全員に配る代わりに、見た目の品質をほどよく保ったまま圧縮して配る。量子化は、これを AI モデルに対して行う手法です。モデルの内部で計算に使う数値の細かさ(精度)を下げて、モデルを小さく、速くします。
GPU のメモリが限られた環境で大きなモデルを動かしたい、推論を速くして費用やレイテンシを下げたい、クラウドだけでなく手元の環境や端末でも動かしたい。そうしたときに使われます。
蒸留とはどう違う?
モデルを軽くする方法には、蒸留もあります。
| 蒸留 | 量子化 | |
|---|---|---|
| やること | 大きなモデルの振る舞いを、小さなモデルに学ばせる | 同じモデルのまま、数値の持ち方を粗くする |
| モデルの構造 | 別の小さなモデルになる | 構造はそのまま |
| たとえると | ベテランの仕事を少人数のチームへ引き継ぐ | 同じ写真を圧縮して容量を減らす |
用途によっては、蒸留してから量子化する、というように組み合わせることもあります。
どこまで粗くしてよいか
圧縮率を上げるほど、出力の品質は下がりやすい。しかも、品質の落ち方は仕事の種類によって違います。ある作業ではほとんど差が出ないのに、別の作業では目に見えて崩れる、ということがあります。
だから、実際に使う業務で評価し、量子化したあとのモデルが最低限の品質を満たしているかを確かめてから本番に使います。どの用途で、どこまでの劣化なら許せるのかを先に決めておかないと、速くなっても業務では使えないモデルになりかねません。
使うライブラリやフレームワークによって、対応している量子化の種類が違う点も確認しておきましょう。