トレーニング後のモデルの量子化#
トレーニング後のモデルの最適化は、再トレーニングや調整を行わずに、モデルをよりハードウェアに適した表現に変換する特別な方法を適用するプロセスです。最も普及している方法は、次の理由からトレーニング後の 8 ビット量子化です:
使いやすい
精度にはあまり影響しない
パフォーマンスが大幅に向上する
8 ビット計算は広くサポートされているため、ほとんどのハードウェアに適合します
8 ビット整数量子化により、重みと活性化の精度が 8 ビットに低下します。これにより、モデル・フットプリントがほぼ 4 分の 1 に削減され、主にスループットの削減により推論速度が大幅に向上します。リダクションは、実際の推論の前にオフラインで実行されるため、モデルは量子化された表現に変換されます。このプロセスには、ソース DL フレームワークのトレーニング・データセットやパイプラインは必要ありません。
ニューラル・ネットワーク圧縮フレームワーク (NNCF) は、Python で使用できるトレーニング後の量子化 API を提供します。これは、ソース・フレームワーク (PyTorch や TensroFlow など) のモデルで通常使用できるモデルのトレーニングや検証用のコードを再利用することを目的としています。NNCF API はクロスフレームワークであり、現在以下をサポートしています: OpenVINO、PyTorch、TensorFlow 2.x、および ONNX。現在、OpenVINO IR 形式のモデルのトレーニング後の量子化は、サポートされているメソッドとモデルの範囲という点で最も成熟しています。
NNCF API には、8 ビットのトレーニング後の量子化を適用する 2 つの選択肢があります:
基本量子化 - 8 ビット整数の量子化をモデルに適用できる最も単純な量子化フロー。代表的なキャリブレーション・データセットが必要になるのは、この場合のみです。
精度の制御による量子化 - 精度の制御によるモデルに 8 ビット量子化を適用する最も高度な量子化フローです。この場合、キャリブレーション・データセットと検証データセット、および精度メトリックを計算する検証関数が必要です。