TensorFlow のワークフロー - 2.5 日本語

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

Document ID
UG1414
Release Date
2022-06-15
Version
2.5 日本語

量子化された推論モデルとリファレンス結果を生成するには、次の手順に従います。

  1. 次のコマンドを実行してモデルを量子化することにより、量子化された推論モデルを生成します。
    量子化されたモデル (quantize_eval_model.pb) は、quantize_model フォルダーに生成されます。
    vai_q_tensorflow quantize 	                               \
    	--input_frozen_graph ./float/resnet_v1_50_inference.pb   \
    	--input_fn input_fn.calib_input			  		    \
    	--output_dir quantize_model				              \
    	--input_nodes input								      \
    	--output_nodes resnet_v1_50/predictions/Reshape_1 	   \
    	--input_shapes	?,224,224,3					        \
    	--calib_iter	100
  2. 次のコマンドを実行してリファレンス データを生成することにより、リファレンス結果を生成します。
    vai_q_tensorflow dump --input_frozen_graph        \
                quantize_model/quantize_eval_model.pb \
         --input_fn input_fn.dump_input               \
         --output_dir=dump_gpu 

    次の図に、リファレンス データの一部を示します。

  3. 次のコマンド (U50LV の例) を実行して DPU の xmodel ファイルを生成することにより、DPU の xmodel を生成します。
    vai_c_tensorflow --frozen_pb quantize_model/quantize_eval_model.pb \
      --arch /opt/vitis_ai/compiler/arch/DPUCAHX8H/U50LV/arch.json       \
      --output_dir compile_model                                       \
      --net_name resnet50_tf
  4. 次のコマンドを実行して DPU の推論結果を生成することにより、DPU の推論結果を生成し、DPU の推論結果とリファレンス データを自動的に比較します。
    env XLNX_ENABLE_DUMP=1 XLNX_ENABLE_DEBUG_MODE=1 XLNX_GOLDEN_DIR=./dump_gpu/dump_results_0 \
       xdputil run ./compile_model/resnet_v1_50_tf.xmodel            \
       ./dump_gpu/dump_results_0/input_aquant.bin                    \
       2>result.log 1>&2

    xdputil の使用法の詳細を確認するには、xdputil --help コマンドを実行してください。

    上記のコマンドの実行後、DPU の推論結果および比較結果 result.log が生成されます。DPU の推論結果は、dump フォルダーに置かれます。

  5. リファレンス結果と DPU 推論結果をクロスチェックする。
    1. すべてのレイヤーについて比較結果を表示します。
      grep --color=always 'XLNX_GOLDEN_DIR.*layer_name' result.log
    2. エラーのあるレイヤーのみ表示します。
      grep --color=always 'XLNX_GOLDEN_DIR.*fail ! layer_name' result.log

    クロスチェックがエラーになった場合は、次の方法でどのレイヤーが原因でエラーになったかをさらに確認します。

    1. DPU と GPU の入力をチェックし、同じ入力データを使用していることを確認します。
    2. xdputil ツールを使用して、ネットワークの構造を表示する画像を生成します。
      Usage: xdputil xmodel <xmodel> -s <svg>
      注記: Vitis AI Docker 環境で、次のコマンドを実行して必要なライブラリをインストールします。
      sudo apt-get install graphviz

      作成した画像を開くと、これらの op の周囲に複数の小さいボックスが表示されています。各ボックスは DPU 上のレイヤーを意味します。最後の op の名前を使用して、GPU のダンプ結果からそれに対応する op を検索できます。次の図に、構造の一部を示します。

    3. ファイルをザイリンクスに送信します。

      DPU 上で特定のレイヤーに問題があるとわかった場合は、量子化されたモデル (quantize_eval_model.pb など) を、ザイリンクス側でさらに解析するための 1 つのパッケージとして準備し、詳細な説明と共にザイリンクスに送信します。