(オプション) シミュレーション結果のダンプ - 2.5 日本語

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

Document ID
UG1414
Release Date
2022-06-15
Version
2.5 日本語
量子化されたモデルの運用後に、CPU/GPU 上のシミュレーション結果と DPU 上の出力値を比較する必要が生じる場合があります。vai_q_tensorflow2 の VitisQuantizer.dump_model API を使用して、量子化モデルのシミュレーション結果をダンプできます。
from tensorflow_model_optimization.quantization.keras import vitis_quantize 
quantized_model = keras.models.load_model('./quantized_model.h5') vitis_quantize.VitisQuantizer.dump_model(model=quantized_model, 
                                         dataset=dump_dataset,
                                         output_dir='./dump_results') 
注記: DPU のデバッグの場合、dump_dataset の batch_size をターゲット デバイスの batch_size と同じ値に設定する必要があります。GPU のシミュレーション結果は非確定的となる可能性があり、浮動小数点値の計算では結果が多少異なることがあるため、DPU のデバッグには CPU のシミュレーション結果を使用することを推奨します。

コマンドが正常に実行された後、ダンプ結果が ${dump_output_dir} に生成されます。各レイヤーの重みとアクティベーションの結果は、個別にフォルダーに保存されます。量子化されたレイヤーごとに、結果が *.bin および *.txt 形式で保存されます。レイヤーの出力が量子化されない場合は (softmax レイヤーの場合など)、浮動小数点モデルのアクティベーション結果が *_float.bin および *_float.txt ファイルに保存されます。記号「/」は、「_」に置き換えられてシンプルになります。ダンプ結果の例を次の表に示します。

表 1. ダンプ結果の例
バッチ番号 量子化 レイヤー名 保存されたファイル
重み バイアス アクティベーション
1 あり resnet_v1_50/conv1

{output_dir}/dump_results_weights/quant_resnet_v1_50_conv1_kernel.bin

{output_dir}/dump_results_weights/quant_resnet_v1_50_conv1_kernel.txt

{output_dir}/dump_results_weights/quant_resnet_v1_50_conv1_bias.bin

{output_dir}/dump_results_weights/quant_resnet_v1_50_conv1_bias.txt

{output_dir}/dump_results_0/quant_resnet_v1_50_conv1.bin

{output_dir}/dump_results_0/quant_resnet_v1_50_conv1.txt

2 resnet_v1_50/softmax N/A N/A

{output_dir}/dump_results_0/quant_resnet_v1_50_softmax_float.bin

{output_dir}/dump_results_0/quant_resnet_v1_50_softmax_float.txt

注記: DPU の実装の丸めモードは、すべての入力およびアクティベーションで「HALF_UP」です。その他の丸めモードを実装に使用すると、ダンプ結果との若干の不一致がビット レベルで生じることがあります。