ニューラルネットワークの量子化について②
はじめに
ニューラルネットワーク(NN)の基礎的な量子化について先日まとめたものの、続きをまとめていく。内容は基本的に、A survey of quantization methods for efficient neural network inferenceというサーベイ論文[1]のセクション4をベースにしている。
また、量子化手法ではないものの、Batch Normalizationの計算量を削減するBatch Normalization Foldingというテクニックについても簡単に触れた。
基礎的な部分についてまとめた前回の記事はこちら。
Simulated and Integer-only Quantization
量子化したNNモデルをデプロイする場合には、Simulated Quantization(Fake Quantization) と、Integer-only Quantizationの2種類のアプローチが一般的に用いられる。下図中央がSimulated Quantization、右がInteger-only Quantizationを表す。
[1]より引用
Simulated Quantizationでは、量子化されたモデルのパラメータは低bitで保存するが、演算時には量子化が解除(Dequantize)され、浮動小数点として実行される。そのため、メモリの節約にはなるが、演算の高速化はできない。
一方、Integer-only Quantizationでは、すべての演算を低精度の整数演算で行うため、高効率に推論を行うことが可能となる。
一般的に、Simulated Quantizationの方が量子化誤差が少なく高精度だが、Integer-only Quantizationはレイテンシや消費電力の面で優れている。
Batch Normalization Folding
Batch Normalization(BN)は学習時の移動平均を用いて計算されるため、パラメータは固定される。そのため、BNの直前の畳み込み層や全結合層へBNの計算をマージすることで、BNの計算量を削減することができる。この手法はBatch Normalization Foldingと呼ばれている。
簡単に表すと、BNと全結合層での計算をそれぞれ
と表すと、
のようにして、全結合層の計算にBNを含めることができる。
参考になる論文やページは[2]~[6]
Mixed-Precision Quantization
パラメータを低精度で量子化することにより計算量は大幅に削減できるが、精度が著しく低下してしまうことがある。これに対応する手法として、Mixed-Precision Quantizationがある。
一般的に、NNモデルでは量子化の影響を比較的受けやすい層と、そうでない層があるといわれている。つまり、層によって量子化に対する感度が異なる。
Mixed-Precision Quantizationでは、精度を維持しつつ量子化を行うため、層ごとに異なる量子化精度をとる。
[1]より引用
Vector Quantization
これまでの量子化では各パラメータをそれぞれ量子化していたが、Vector Quantizationでは、複数のパラメータをまとめて量子化する。
代表的なものにはDeep Compression[7]で使われているような、パラメータをクラスタリングして、各クラスターのセントロイドを用いて量子化を行う手法がある。
k個のクラスターがある場合、インデックスを符号化するのにはlog2(k)ビットが必要となる。下図の場合であれば、k=4なので、log2(4)=2bitあれば0~3の値で各重みがどのクラスターかを表すことができる。
[7]より引用
References
Batch Normalization Folding
[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] Wu, Hao, et al. "Integer quantization for deep learning inference: Principles and empirical evaluation." arXiv preprint arXiv:2004.09602 (2020).
[4] Fusing batch normalization and convolution in runtime
[5] Batch Norm Folding: An easy way to improve your network speed
[6] Speed-up inference with Batch Normalization Folding
Vector Quantization
[7] Han, Song, Huizi Mao, and William J. Dally. "Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding." arXiv preprint arXiv:1510.00149 (2015).
Discussion