トレーニング後のモデルの量子化

トレーニング後のモデルの最適化は、再トレーニングや調整を行わずに、モデルをよりハードウェアに適した表現に変換する特別な方法を適用するプロセスです。ここで最も一般的で普及している方法は、次の理由からトレーニング後の 8 ビット量子化です。

  • 使いやすい。

  • 精度を大きく損なうことがない。

  • パフォーマンスが大幅に向上する。

  • ほとんどのハードウェアは 8 ビット計算をネイティブにサポートしているため、既存の多くのハードウェアに適している。

8 ビットの整数量子化により、重みとアクティベーションの精度が 8 ビットに低下しますが、モデルのフットプリントがほぼ 4 分の 1 に削減され、推論に必要なスループットが低下するため、推論速度が大幅に向上します。このステップは、実際の推論の前にオフラインで実行されるため、モデルは量子化された表現に変換されます。このプロセスには、ソース DL フレームワークのトレーニング・データセットやトレーニング・パイプラインは必要ありません。

../../_images/quantization_picture.svg

ニューラル・ネットワーク圧縮フレームワーク (NNCF) は、Python で使用できるトレーニング後の量子化 API を提供します。これは、ソース・フレームワーク (PyTorch や TensroFlow など) のモデルで通常使用できるモデルのトレーニングや検証用のコードを再利用することを目的としています。NNCF API はクロスフレームワークであり、現在以下のフレームワークのモデルをサポートしています: OpenVINO、PyTorch、TensorFlow 2.x、および ONNX。現在、OpenVINO 中間表現 (IR) モデルのトレーニング後の量子化は、サポートされているメソッドとモデルの範囲という点で最も成熟しています。

NNCF API には、8 ビットのトレーニング後の量子化を適用する 2 つの主な機能があります。

  • 基本量子化 - 8 ビット整数の量子化をモデルに適用できる最も単純な量子化フロー。代表的なキャリブレーション・データセットが必要になるのは、この場合のみです。

  • 精度の制御による量子化 - 精度の制御によるモデルに 8 ビット量子化を適用する最も高度な量子化フローです。この場合、キャリブレーション・データセットと検証データセット、および精度メトリックを計算する検証関数が必要です。