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化すると性能が大きく劣化しやすく、工夫を要する
比較
関連用語
よくある質問
INT8化すると精度はどれくらい落ちる?
モデルやタスク、量子化手法によって異なるが、キャリブレーション等の手法を用いれば、多くのケースで性能低下はごくわずかに抑えられるとされる。