AIにおける量子化とは?

AIの量子化とは、モデルの重みや活性化の数値精度を下げることでニューラルネットワークの動作を高速化し、メモリ使用量を削減するモデル圧縮手法であり、多くの場合、精度の損失は最小限に抑えられます。

AIにおける量子化は、ニューラルネットワークの重みと活性化の数値精度を下げるモデル圧縮手法です。すべてのパラメータを32ビット浮動小数点数として保存する代わりに、量子化されたモデルでは8ビット、4ビット、あるいはさらに低い形式が使用されます。メモリと計算量はビット数に比例するため、この一つの変更でモデルを2〜8倍に縮小し、推論を高速化できるため、スマートフォン、ノートパソコン、ブラウザ、組み込みデバイスで大規模モデルを実行することが現実的になります。

量子化の仕組み

各重みは本来、精確な実数ですが、その精度が必要になることはほとんどありません。量子化は、元々の値の範囲をより小さな表現可能なレベルの集合に対応付けます。学習後量子化(PTQ)では、学習済みのモデルを一度に変換します。通常は浮動小数点の重みをスケーリングして、より狭い整数範囲に収めます。quantized = round(weight / scale) + zero_pointという単純な線形マッピングがその大半の処理を行い、同じscalezero_pointが推論中にfloat出力に逆量子化するためにも使用されます。

例えば、8ビット整数は256個の異なる値しか表現できないため、重みがfloat32で本来[-1.0, 1.0]の範囲にある層では、それらを256個の等間隔のステップに分類しなければなりません。これらのステップが実際の重みの分布に正確に調整されているほど、失われる精度は少なくなります。より良い結果を得るために、量子化対応学習(QAT)では、微調整中に丸め誤差をシミュレートしてモデルがそのノイズに適応し、多くの場合、元々の精度のほぼすべてを回復します。

なぜ重要なのか

量子化により、数百億のパラメータを持つモデルを数ギガバイトのRAMに収め、ノートパソコンのCPU上で1秒未満で応答することが可能になります。エネルギー消費を削減し、サーバーコストを低減し、プライバシーに敏感な用途やオフライン用途でオンデバイスAIを実現します。また、ハードウェアとも密接に関係しています。最新のGPU、NPU、CPUには専用のINT8およびINT4行列演算ユニットが搭載されているため、量子化されたモデルは同じfloat32モデルよりも数倍高速に動作します。

主な種類

  • 学習後量子化(PTQ):すでに学習済みのモデルを変換します。最も低コストで、精度の低下はわずかです。
  • 量子化対応学習(QAT):学習中に量子化をシミュレートし、重みを適応させます。精度は向上しますが、追加の計算が必要です。
  • 動的量子化:重みは低精度に保ちますが、活性化はオンザフライで計算します。可変シーケンス長のNLPモデルに有用です。
  • 重みのみの量子化:重みを4ビット以下で保存し、オンザフライで逆量子化します。大規模言語モデルのサービングで一般的です。
  • GPTQ、AWQ、GGUF:4ビットLLM量子化で広く使われているアルゴリズムとファイル形式で、精度を保つためにそれぞれ異なる方式を適用します。

量子化はAIデプロイメントパイプラインにおける標準的なステップとなりました。PyTorchのtorch.quantization、NVIDIA TensorRT、ONNX Runtimeなどのツールは、これらの技法を本番環境に組み込み、少量の精度と引き換えに速度、メモリ、コストの大幅な向上を実現します。

こちらもおすすめ

関連記事