Re Reference AI

技術

INT8とは

数値を8ビットの整数で表現する、量子化でよく用いられる数値形式

数値精度量子化

ひとことで言うと

数値を8ビットの整数で表す形式。AIモデルを軽くする際によく使われる。

概要

INT8とは、数値を-128〜127(符号付き)等、8ビットの整数で表現する数値形式。 32ビットや16ビットの浮動小数点数と比べてデータサイズが4分の1〜2分の1になり、対応するハードウェア上では整数演算による高速化も期待できるため、モデルの量子化でよく使われる目標精度の1つ。 学習後量子化(PTQ)等の手法を用いて、モデルの重みや活性化値をFP32・FP16からINT8へ変換することで、推論のメモリ使用量と計算コストを削減する。 量子化による誤差の影響を抑えるため、実際にキャリブレーション用のデータをモデルへ流して各層の値の分布を調べたうえで、変換時のスケーリング係数を最適化する手法が併用されることも多い。

背景

モデルサイズと推論コストの増大に対し、数値表現のビット数をさらに削減したいという要求から、浮動小数点よりシンプルな整数形式であるINT8が量子化の主要な選択肢として広く使われるようになった。

アーキテクチャ

浮動小数点の値を一定の範囲に収まるようスケーリングし、整数値へ丸め込むことでINT8表現に変換する。 推論時には、スケール値を用いて整数演算の結果を元の数値スケールへ近似的に復元しながら計算する。

利点

  • FP32・FP16と比べさらにメモリ使用量を削減でき、対応ハードウェアでは演算も高速化できる
  • 多くの推論エンジン・ハードウェアが標準的にサポートしており、実装のノウハウが蓄積されている

欠点

  • 表現できる数値の粒度が粗く、FP16等と比べ精度低下が大きくなりやすい
  • モデルや層によっては、そのままINT8化すると性能が大きく劣化しやすく、工夫を要する

比較

  • FP16FP16は浮動小数点形式であり、INT8はより単純な整数形式でさらに軽量だが精度の低下が大きくなりやすい
  • INT4INT8よりさらにビット数を減らした形式がINT4で、圧縮率は高いが精度の確保がより難しくなる
  • 量子化INT8は、量子化における代表的な目標精度の1つ

関連用語

FP16INT4量子化

よくある質問

INT8化すると精度はどれくらい落ちる?

モデルやタスク、量子化手法によって異なるが、キャリブレーション等の手法を用いれば、多くのケースで性能低下はごくわずかに抑えられるとされる。

参考文献

関連Zenn記事