FC2カウンター FPGAの部屋 ”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる2
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる2

”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる1”の続き。

前回は、”Deploying the Dobble Challenge on the Ultra96-V2”をやり始めて、Vitis-AI を Docker で起動し、環境設定、Keras のモデルから TensorFlow互換のフリーズグラフに変換、TensorFlow互換のフリーズグラフを評価し、99.42 % の精度があることを確認できた。
今回は、前回の続きからで、”Deploying the Dobble Challenge on the Ultra96-V2”を見ながら、パソコンでの作業が終了するまでやってみよう。つまり、フリーズグラフの量子化、量子化モデルの評価、量子化モデルのコンパイル、ボード上で実行するために必要なすべてのファイルを./build/targetフォルダにコピーを行う。

フリーズグラフの量子化を行う。
Deploying the Dobble Challenge on the Ultra96-V2”によると、DPUアクセラレータIPは、すべての計算を8ビット整数形式で実行するため、浮動小数点の凍結グラフを量子化する必要があるそうだ。
”Step 4: Quantizing the Frozen Graph”の一部の Google 翻訳結果を引用する。

キャリブレーションで使用するために生成される画像の数は、0_setenv.shスクリプトのCALIB_IMAGES環境変数によって設定されます。キャリブレーションの反復回数(--calib_iter)にキャリブレーションバッチサイズ(image_input_fn.pyスクリプトで設定)を掛けたものが、使用可能なイメージの総数(CALIB_IMAGES)を超えないように注意する必要があります。

量子化が完了すると、。/ files / build / quantizeフォルダーに量子化されたデプロイメントモデル(deploy_model.pb)と評価モデル(quantize_eval_model.pb)が作成されます。


さて、フリーズグラフの量子化をやってみる。
source ./4_quant.sh
Dobble_50_210713.png
Dobble_51_210713.png

ログを示す。

(vitis-ai-tensorflow) Vitis-AI /workspace/dobble_classification_on_ultra96v2/files > source ./4_quant.sh
-----------------------------------------
QUANTIZE STARTED..
-----------------------------------------
Making calibration images..
Using TensorFlow backend.
Command line options:
 --image_dir    :  ./build/quantize/images
 --calib_list   :  calib_list.txt
 --dataset      :  train
 --max_images   :  1000
Calib images generated
Vai_q_tensorflow v1.2.0 build for Tensorflow 1.15.2 git version
heads/1.3-0-gc680f744
100% (10 of 10) |########################| Elapsed Time: 0:04:41 Time:  0:04:41
INFO: Checking Float Graph...
INFO: Float Graph Check Done.
INFO: Calibrating for 10 iterations...
INFO: Calibration Done.
INFO: Generating Deploy Model...
INFO: Deploy Model Generated.
********************* Quantization Summary *********************      
INFO: Output:       
  quantize_eval_model: ./build/quantize/quantize_eval_model.pb       
  deploy_model: ./build/quantize/deploy_model.pb
-----------------------------------------
QUANTIZE COMPLETED
-----------------------------------------


量子化されたファイルを示す。
Dobble_67_210714.png

量子化モデルの評価を行う。
source ./5_eval_quant.sh
Dobble_52_210713.png
Dobble_53_210713.png

精度は 99.67 % だった。

量子化モデルのコンパイルを行う。
Deploying the Dobble Challenge on the Ultra96-V2”の”Step 6: Compiling the Quantized Model”の文章を一部 Google 翻訳して貼っておく。

DPU IPはソフトコアIPであり、その唯一の機能は畳み込みニューラルネットワークの実行を加速することです。これは、独自の命令セットを持つコプロセッサーです。これらの命令は、Xmodelファイル形式でDPUに渡されます。

Vitis AIコンパイラは、量子化された展開モデルを一連のマイクロ命令に変換し、可能な場合は最適化してから、Xmodelファイルに出力します。

生成される命令は、DPUの特定の構成に固有です。DPUのパラメーターは、ターゲットボードごとに作成する必要があるarch.jsonファイルに含まれています。詳細については、VitisAIユーザーガイドを参照してください。


source ./6_compile.sh
Dobble_69_210714.png
Dobble_70_210714.png

出力されたファイルを示す。
Dobble_54_210713.png

ログを貼っておく。

(vitis-ai-tensorflow) Vitis-AI /workspace/dobble_classification_on_ultra96v2/files > source ./6_compile.sh
-----------------------------------------
COMPILE STARTED..
-----------------------------------------
[INFO] parse raw model     :  0%|          | 0/33 [00:00<?, ?it/s]              
[INFO] parse raw model     :100%|██████████| 33/33 [00:00<00:00, 18611.27it/s]               
[INFO] infer shape (NHWC)  :  0%|          | 0/38 [00:00<?, ?it/s]              
[INFO] infer shape (NHWC)  :100%|██████████| 38/38 [00:00<00:00, 14147.31it/s]               
[INFO] infer shape (NHWC)  :  0%|          | 0/35 [00:00<?, ?it/s]              
[INFO] infer shape (NHWC)  :100%|██████████| 35/35 [00:00<00:00, 5574.99it/s]                
[INFO] generate xmodel     :  0%|          | 0/35 [00:00<?, ?it/s]              
[INFO] generate xmodel     :  9%|▊         | 3/35 [00:00<00:05,  5.49it/s]      
[INFO] generate xmodel     :100%|██████████| 35/35 [00:00<00:00, 63.60it/s]                  
[INFO] Namespace(inputs_shape=None, layout='NHWC', model_files=['./build/quantize/quantize_eval_model.pb'], model_type='tensorflow', out_filename='./build/compile_B2304_LR/dobble_org.xmodel', proto=None)
[INFO] tensorflow model: build/quantize/quantize_eval_model.pb
[INFO] generate xmodel: /workspace/dobble_classification_on_ultra96v2/files/build/compile_B2304_LR/dobble_org.xmodel
[UNILOG][INFO] The compiler log will be dumped at "/tmp/vitis-ai-user/log/xcompiler-20210713-134253-298"
[UNILOG][INFO] Target architecture: DPUCZDX8G_ISA0_B2304_MAX_BG2
[UNILOG][INFO] Compile mode: dpu
[UNILOG][INFO] Debug mode: function
[UNILOG][INFO] Target architecture: DPUCZDX8G_ISA0_B2304_MAX_BG2
[UNILOG][INFO] Graph name: quantize_eval_model, with op num: 55
[UNILOG][INFO] Begin to compile...
[UNILOG][INFO] Total device subgraph number 3, DPU subgraph number 1
[UNILOG][INFO] Compile done.
[UNILOG][INFO] The meta json is saved to "/workspace/dobble_classification_on_ultra96v2/files/./build/compile_B2304_LR/meta.json"
[UNILOG][INFO] The compiled xmodel is saved to "/workspace/dobble_classification_on_ultra96v2/files/./build/compile_B2304_LR/dobble.xmodel"
[UNILOG][INFO] The compiled xmodel's md5sum is 5cc2ffa0cc1e1c45e439fdc62268f1ae, and been saved to "/workspace/dobble_classification_on_ultra96v2/files/./build/compile_B2304_LR/md5sum.txt"
**************************************************
* VITIS_AI Compilation - Xilinx Inc.
**************************************************
-----------------------------------------
COMPILE COMPLETED
-----------------------------------------


ボード上で実行するために必要なすべてのファイルを./build/targetフォルダにコピーする。
source ./7_make_target.sh
Dobble_55_210713.png

./build/target_B2304_LR フォルダのファイルを示す。
Dobble_56_210713.png
  1. 2021年07月14日 04:57 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/5294-c650a163
この記事にトラックバックする(FC2ブログユーザー)