量子化 API
vitis_vai.quantize(
input_float,
quantize_strategy = 'pof2s',
custom_quantize_strategy = None,
calib_dataset = None,
calib_steps = None,
calib_batch_size = None,
save_path = './vai_wego/quantized.h5',
verbose = 0,
add_shape_info = False,
dump = False,
dump_output_dir = './vai_dump/')
この関数は、浮動小数点モデルのトレーニング後の量子化 (PTQ) を実行します。これには、モデルの最適化、重みの量子化、およびアクティベーションのトレーニング後の量子化が含まれます。
パラメーター
- input_float
-
tf.keras.Model
量子化される浮動小数点オブジェクト。 - quantize_strategy
- 量子化ストラテジのタイプを指定する文字列オブジェクト。指定可能な値は、pof2s、pof2s_tqt、fs、および fsx です。pof2s はデフォルトのストラテジで、2 のべき乗スケールのクオンタイザーとストレート スルー エスティメーターを使用します。pof2s_tqt は Vitis AI 1.4 で導入されたストラテジで、2 のべき乗スケールのクオンタイザーでトレーニング済みしきい値を使用し、より優れた QAT 結果を生成できます。fs は Vitis AI 2.5 で導入された新しい量子化ストラテジで、Conv2D、DepthwiseConv2D、Conv2DTranspose、および Dense レイヤーの入力と重みに対して浮動小数点スケールの量子化を実行します。一方、fsx は、量子化ストラテジを fs 量子化ストラテジよりも多くのレイヤー タイプ (Add、MaxPooling2D、AveragePooling2D など) に拡張し、量子化にバイアスとアクティベーションも含めます。 注記:
- 最大限の性能を得るには、QAT で init_quant=True の場合のみ pof2s_tqt ストラテジを使用するようにします。
- fs および fsx ストラテジは、浮動小数点をサポートするターゲット デバイス向けに設計されています。DPU は現在、浮動小数点をサポートしていないため、これらの量子化ストラテジで量子化されたモデルは DPU で運用できません。
- custom_quantize_strategy
- 文字列オブジェクト。カスタム量子化ストラテジ JSON ファイルのファイル パス。
- calib_dataset
- tf.data.Dataset、keras.utils.Sequence、または np.numpy オブジェクト。キャリブレーション用の代表的データセット。eval_dataset、train_dataset、またはその他のデータセットの全体または一部を calib_dataset として使用できます。
- calib_steps
- int オブジェクト。キャリブレーションの全ステップ数です。デフォルト値 (None) の場合は無視されます。calib_dataset が tf.data データセット、ジェネレーター、または keras.utils.Sequence インスタンスのいずれかで、ステップ数が None の場合、データセットがなくなるまでキャリブレーションが実行されます。配列入力はこの引数をサポートしていません。
- calib_batch_size
- int オブジェクト。キャリブレーションのバッチあたりのサンプル数です。「calib_dataset」の形式がデータセット、ジェネレーター、または keras.utils.Sequence インスタンスの場合、バッチ サイズはデータセット自体で制御します。「calib_dataset」の形式が numpy.array オブジェクトの場合、デフォルトのバッチ サイズは 32 に設定されます。
- save_path
- 文字列オブジェクト。量子化されたモデルを保存するディレクトリを指定します。
- verbose
- int オブジェクト。ログの冗長性です。verbose の値が大きいほど、より詳細なログが生成されます。デフォルト値は 0 です。
- add_shape_info
- ブール型のオブジェクト。カスタム レイヤーの形状推論情報を追加するかどうかを決定します。カスタム レイヤーを使用したモデルの場合、True に設定する必要があります。
- dump
- ダンプを有効/無効にするフラグ。dump=False の場合はダンプが無効で、dump=True の場合はダンプが有効です。
- dump_output_dir
- 文字列オブジェクト。ダンプ結果を保存するディレクトリ。
WeGO TensorFlow 2.x でのオンザフライ量子化の使用方法の詳細は、WeGO の例を参照してください。