このページは Cloud Translation API によって翻訳されました。
Switch to English

トレーニング後の量子化

トレーニング後の量子化には、CPUとハードウェアアクセラレータのレイテンシ、処理、電力、およびモデルサイズをモデル精度をほとんど低下させることなく削減する一般的な手法が含まれます。これらの手法は、トレーニング済みのフロートTensorFlowモデルで実行でき、TensorFlow Lite変換中に適用できます。これらの手法は、 TensorFlow Liteコンバーターのオプションとして有効になります。

エンドツーエンドの例に直接ジャンプするには、次のチュートリアルを参照してください。

重みの量子化

重みは、16ビットの浮動小数点数や8ビットの整数など、精度を下げた型に変換できます。通常、GPUアクセラレーションには16ビットの浮動小数点数を、CPU実行には8ビットの整数をお勧めします。

たとえば、8ビット整数の重み量子化を指定する方法を次に示します。

import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
tflite_quant_model = converter.convert()

推論では、最も重要な部分は浮動小数点ではなく8ビットで計算されます。以下の重みとアクティブ化の両方の量子化に比べて、推論時のパフォーマンスのオーバーヘッドがいくつかあります。

詳細については、TensorFlow Lite トレーニング後の量子化ガイドをご覧ください。

重みとアクティベーションの完全整数量子化

ウェイトとアクティベーションの両方が量子化されていることを確認することで、レイテンシ、処理、電力使用量を改善し、整数のみのハードウェアアクセラレータにアクセスできます。これには小さな代表的なデータセットが必要です。

import tensorflow as tf

def representative_dataset_gen():
  for _ in range(num_calibration_steps):
    # Get sample input data as a numpy array in a method of your choosing.
    yield [input]

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()

結果として得られるモデルは、便宜上、フロート入力と出力を引き続き受け取ります。

詳細については、TensorFlow Lite トレーニング後の量子化ガイドをご覧ください。