TensorFlow - 1.1 Japanese

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

Document ID
UG1414
Release Date
2020-03-23
Version
1.1 Japanese

Caffe と TensorFlow の主な違いは、モデルが単一ファイルで定義され、量子化情報を GraphDef から取得する必要があるという点です。

**************************************************
* VITIS_AI Compilation - Xilinx Inc.
**************************************************
usage: vai_c_tensorflow.py [-h] [-f FROZEN_PB] [-a ARCH] [-o OUTPUT_DIR]
                           [-n NET_NAME] [-e OPTIONS] [-q]
 
optional arguments:
  -h, --help            show this help message and exit
  -f FROZEN_PB, --frozen_pb FROZEN_PB
                        prototxt
  -a ARCH, --arch ARCH  json file
  -o OUTPUT_DIR, --output_dir OUTPUT_DIR
                        output directory
  -n NET_NAME, --net_name NET_NAME
                        prefix-name for the outputs
  -e OPTIONS, --options OPTIONS
                        extra options
  -q, --quant_info      extract quant info

これで、インターフェイスは凍結されたグラフの指定方法を明確に定義しています。モデルと量子化情報が必要であると想定します。

vai_c_tensorflow.py --frozen_pb deploy.pb --net_name cmd --options  "{'placeholdershape': {'input_tensor' : [1,224,224,3]},   'quant_cfgfile': 'fix_info.txt'}" --arch arch.json --output_dir work/temp

ここに示されているとおり、量子化情報と入力プレースホルダーの形状が指定されています。通常、モデルの入力を指定するプレースホルダー レイヤーを使用します。すべてのサイズを指定し、バッチ数 (= 1) を使用することを推奨しています。レイテンシを最適化し、バッチ サイズ 1 ~ 4 を受け入れます (ただし、これによりレイテンシは改善されず、スループットもほとんど改善されず、どのネットワークに対しても完全なテストは実施されない)。

キャリブレーションと微調整では、ネイティブ TensorFlow で実行できないモデルが提供される場合がありますが、量子化情報が含まれています。[-q, --quant_info extract quant info ] を使用してフロント エンドを実行すると、量子化情報が作成されます。

ソフトウェア リポジトリには、コンパイラが 2 回呼び出される例が提供されています。1 回目の呼び出しで量子化情報ファイルを作成し (デフォルトの名前と場所を使用)、これをコード生成の入力として使用します。

注記: 出力ディレクトリと生成されるコード名を必ず提供してください。ランタイム コントラクトは、出力が書き込まれる場所に基づいています。アーキテクチャごとに異なるコンパイラを呼び出す主な方法として、arch.json ファイルの使用があります。このファイルは、出力記述用のテンプレートとして、およびプラットフォーム/ターゲット FPGA デザインの内部機能として使用されます。さらに、アドバンス ユーザーが独自の最適化を利用できる Python インターフェイスもあります。