ヘルプKaggleにTensorFlowグレートバリアリーフを保護チャレンジに参加

量子化認識トレーニング

TensorFlow Model Optimization による管理

量子化には、ポストトレーニング量子化と調子化認識トレーニングの 2 つ形態があります。量子化認識トレーニングは通常、モデルの精度の観点からより優れていますが、比較的使いやすいポストトレーニング量子化から始めると良いでしょう。

このページでは、ユースケースにどのように適合するかを判断できるように、量子化認識トレーニングの概要を説明します。

概要

量子化認識トレーニングは、推論時の量子化をエミュレートし、下流のツールが実際に量子化されたモデルを生成するために使用するモデルを作成します。量子化モデルは低精度(32 ビット float ではなく 8 ビット)を使用するため、デプロイ中のメリットがあります。

量子化によるデプロイ

量子化によって、モデル圧縮とレイテンシ縮小による改善が得られます。API のデフォルトでは、モデルサイズは 4 倍縮小し、テスト対象のバックエンドの CPU レイテンシは通常 1.5~4 倍 に改善します。最終的に、レイテンシの改善は、EdgeTPU や NNAPI といった互換性のある機械学習アクセラレータで確認されるようになります。

このテクニックは、スピーチ、ビジョン、テキスト、および翻訳ユースケースの制作で使用されています。コードは現在、これらのモデルのサブセットをサポートしています。

量子化による実験と関連ハードウェア

ユーザーは、量子化パラメータ(ビット数など)、ある程度の基盤のアルゴリズムを構成できます。API のデフォルトからこれらを変更すると、デプロイはサポートされません。

この構成に固有の API は実験的 API であり、下位互換性はありません。

API の互換性

ユーザーは、次の API を使って量子化を適用できます。

  • モデルの構築: tf.keras(Sequential モデルと Functional モデルのみ)
  • TensorFlow バージョン: TF 2.x(tf-nightly)
    • TF 2.X パッケージの tf.compat.v1 はサポートされません。
  • TensorFlow 実行モード: Eager execution

次の分野でのサポート追加が予定されています。

  • モデルの構築: サブクラス化されたモデルのサポートがなぜ制限されているのか、またはサポートされていないかを説明
  • 分散型トレーニング: tf.distribute

全般的なサポート状況

次の分野のサポートが提供されています。

  • モデルのカバレッジ: ホワイトリストに追加されたレイヤーを使ったモデル、Conv2D および DepthwiseConv2D レイヤーに従う場合の BatchNormalization、および限られた場合 Concat
  • ハードウェアアクセラレータ: API のデフォルトは、EdgeTPU、NNAPI、TFLite バックエンドなどのアクセラレーションと互換しています。ロードマップの注意事項をご覧ください。
  • 量子化によるデプロイ: テンソルごとの量子化ではなく、畳み込みレイヤーの軸ごとの量子化のみが現在サポートされています。

次の分野でのサポート追加が予定されています。

  • モデルのカバレッジ: RNN/LSTM と一般的な Concat サポートを含めるように拡張。
  • ハードウェアアクセラレーション: TFLite コンバータが完全な整数モデルを生成できるようにする。詳細は、この課題をご覧ください。
  • 量子化ユースケースの実験:
    • Keras レイヤーに及ぶまたはトレーニングステップを必要とする量子化アルゴリズムによる実験
    • API の安定化

結果

ツールによる画像分類

モデル 非量子化トップ 1 精度 8 ビット量子化精度
MobilenetV1 224 71.03% 71.06%
Resnet v1 50 76.3% 76.1%
MobilenetV2 224 70.77% 70.01%

モデルは、Imagenet でテストされ、TensorFlow と TFLite で評価されました。

テクニックの画像分類

モデル 非量子化トップ 1 精度 8 ビット量子化精度
Nasnet-Mobile 74% 73%
Resnet-v2 50 75.6% 75%

モデルは、Imagenet でテストされ、TensorFlow と TFLite で評価されました。

量子化認識トレーニングの例のほかに、次の例をご覧ください。

  • 量子化を使用した MNIST 手書き数字の分類タスクの CNN モデル: コード

同様の背景については、「Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference論文をご覧ください。この論文では、このツールが使用するいくつかの概念を紹介します。実装はまったく同じではなく、このツールで使用される追加の概念があります(軸ごとの量子化など)。