論文解説|I-ViT:Integer-only Quantization for Efficient Vision Transformer…
I-ViT: Integer-only Quantization for Efficient Vision Transformer Inference
はじめに
Vision Transformers (ViTs)は、コンピュータビジョンで最先端のパフォーマンスを達成しましたが、ストレージと計算のオーバーヘッドが大きく、スマホなどの小型デバイスでの効率的な推論は難しいです。従来手法のFasterTransfomer[1]は入力と出力だけを量子化(整数値)に変換して計算量を削減していました。この論文では、モデル全体で量子化を行うことで、高速な推論を実現しています。整数値でどのようにLayer Normや活性化関数を表現するか、などがこの提案手法の見どころです。
従来手法との比較
事前知識
量子化の方法はFasterTransfomer[1]やCNN[2]などで提案されており本論文でもこれらを用いて整数化を行っています。浮動小数点を
ただし、
試しに
となります。このようにして浮動小数点から整数に変換できます。今回の論文のViT内では
提案手法
Transformerの構造は変わらずに浮動小数点を整数値にしたようなモデル構造になっています。本論文ではすべての処理を整数型で行うために4つの手法を提案しています。
- 従来手法のダイアディック算術(Dyadic arithmetic)による線形演算
- 整数専用SoftmaxのShiftmax
- 整数専用GELUのShiftGELU
- 整数専用LayerNormのI-LayerNorm
手法の概要
ダイアディック算術による線形演算
ダイアディック算術[2]は、整数のビットシフトを使用して浮動小数点演算のスケーリング係数を効率的に実現する手法です。これにより、線形演算を整数のみの算術で行うことができます。もともとはCNN(畳み込みニューラルネットワーク)用に設計されていましたが、ViTs(ビジョントランスフォーマー)の線形演算、特に埋め込み層のConv(畳み込み演算)やトランスフォーマー層のMatMul(行列乗算)やDense(密結合層)にも適用可能なようです。論文ではMatMul(行列乗算)を計算例として挙げています。
int8の
このとき
となります。
整数専用SoftmaxのShiftmax
SoftmaxはViTsにおいてアテンションスコアを確率に変換しますが、非線形性のためダイアディック算術は使用できません。そのため、筆者はShiftmaxという近似手法を提案しています。Shiftmaxの導出までの流れを説明します。非常に長いです…。
最初にsoftmax関数を振り返ると、softmaxはよくオーバーフローを防ぐために変数の最大値を引く操作をしています。
この式を
今後の式を簡単にするために
このままでは当然整数型で計算できないので様々な近似をします。ここで筆者は
このとき
であるため
となります。
論文ではさらに
が得られてsoftmaxが計算できます。ただし
非常に長かったですが論文ではもう少し処理をしているようです。詳しくは論文を見てください…。
整数専用GELUのShiftGELU
ShiftGELUは整数型で計算可能にしたGELUです。GELUは以下のように表されています。
ここで
整数専用LayerNormのI-LayerNorm
I-LayerNormは、Vision Transformers(ViTs)での入力の正規化を行います。具体的には、入力の平均値と分散を使用して、特徴次元を正規化します。しかし、整数演算では標準偏差の平方根計算をサポートしていません。I-LayerNormは、ビットシフトを用いた軽量な整数反復アプローチ[3]により改善されています。具体的には、
という式を用いています。初期値
実験結果
この論文では学習時には浮動小数点で学習して、その学習パラメータや計算過程を提案手法によって整数型に置き換えています。
I-ViTは、浮動小数点(FP)モデルに比べて、3.72~4.11倍の加速を実現しています。また、わずかに高い精度を達成しています。
DeiT-TとDeiT-Sモデルの量子化において、FasterTransformerは3.45倍と3.53倍の加速しか達成できませんでした。これは、浮動小数点算術の非効率さに起因しています。
I-ViTは、INT8精度で評価され、Top-1精度は81.74%(I-BERTと比較して-0.11%)、遅延は7.93ms(3.88倍の加速)でした。これに対し、FP32ベースラインのTop-1精度は81.35%、遅延は16.8msでした。
Swin-Sモデルにおいても、I-ViTは83.01%のTop-1精度(FP32ベースラインに対して-0.19%)と6.92msの遅延(4.02倍の加速)を実現しました。
まとめと感想
ディープラーニングでは浮動小数で計算を行うことが当たり前の中、すべての処理を整数型で計算できる手法を提案しています。非常に面白いが部分的に整数型にしているだけのFasterTransformerとあまり大差ない推論スピードなのはなぜなのでしょうか。憶測ですが、今のGPUは浮動小数点の計算に特化しているからかなとも思いました。整数型の処理が早いハードウェアとかがあればもっと有意差が出て面白いかもしれません。
6. 論文のリクエスト
解説してほしい論文のリクエストを受け付けています!
リクエストから2週間程度で記事を作成したします。
どなたでもお気軽にリクエストしてください!
参考文献
[1]
NVIDIA. FasterTransformer, https://github.com/nvidia/fastertransformer.git, 2022.
[2]
Jacob, Benoit, et al. "Quantization and training of neural networks for efficient integer-arithmetic-only inference." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[3]
Richard Crandall and Carl Pomerance. Prime numbers.
Springer, 2001.
-
実装では
は1つではなく、最小値と最大値は違う値になっている。また、学習や推論の度にモーメンタムなどで更新している。 ↩︎m
Discussion