vai_q_tensorflow を使用したモデルの量子化 - 3.5 日本語

Vitis AI ユーザー ガイド (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 日本語

次のコマンドを実行してモデルを量子化します。

$vai_q_tensorflow quantize \
				--input_frozen_graph  frozen_graph.pb \
				--input_nodes    ${input_nodes} \
				--input_shapes   ${input_shapes} \
				--output_nodes   ${output_nodes} \
				--input_fn  input_fn \
				[options]

input_nodesoutput_nodes の引数は、量子化グラフの入力ノード名の一覧です。これらが量子化の開始点と終了点となります。次の図に示すように、それらの間のメイングラフは、量子化可能でな場合のみ量子化されます。

図 1. TensorFlow の量子化フロー

前処理部と後処理部の動作には量子化できないものがあるため、–input_nodes を前処理部の最後のノード、-output_nodes をメイン グラフの最後のノードとして設定することを推奨します。モデルが Vitis AI コンパイラによってコンパイルされ、DPU で運用されるとエラーが発生する場合があります。

入力ノードは、グラフのプレースホルダー ノードとは異なる場合があります。凍結されたグラフにグラフ用の前処理部が含まれない場合、プレースホルダー ノードを入力ノードとして設定する必要があります。

input_fn はプレースホルダー ノードと一致している必要があります。

[options] は、オプションのパラメーターを表します。最も一般的に使用されるオプションは次のとおりです。

weight_bit
量子化後の重みおよびバイアスのビット幅 (デフォルト値は 8)。
activation_bit
量子化後の活性化値のビット幅 (デフォルト値は 8)。
method
量子化方法。0 は non-overflow、1 は min-diffs、2 は min-diffs (正規化あり) を表します。non-overflow 手法は、量子化プロセスで値がオーバーフローしないようにします。量子化結果は、外れ値の影響を受けることがあります。min-diffs は、量子化プロセスでオーバーフローを許可し、量子化誤差を極力抑えることができます。外れ値に対する耐性があり、通常 non-overflow よりも範囲が狭くなります。