場合によっては、量子化されたモデルの運用後に、CPU/GPU 上のシミュレーション結果と DPU 上の出力値を比較することが重要になります。
vai_q_onnx の dump_model API を使用して、quantized_model でシミュレーション結果をダンプできます。
import vai_q_onnx
# This function dumps the simulation results of the quantized model,
# including weights and activation results.
vai_q_onnx.dump_model(
model,
dump_data_reader=None,
output_dir='./dump_results',
dump_float=False)
- model
- 量子化されたモデルのファイル パス。
- dump_data_reader
- ダンプするために使用されるデータ リーダー。オリジナル モデルへの入力を生成。
- output_dir
- 文字列。ダンプ結果を保存するディレクトリ。関数が正常に実行された後、ダンプ結果が output_dir に生成される。
- dump_float
- ブール型。重みとアクティベーション結果の浮動小数点値をダンプするかどうかを判定します。
注記: DPU のデバッグの場合、dump_data_reader の batch_size を 1 に設定します。
上記のコマンドが正常に実行されると、output_dir にダンプ結果が生成されます。量子化された各ノードの重みとアクティベーション結果は *.bin 形式と *.txt 形式で別々に保存されます。
ノードの出力が量子化されない場合は (softmax ノードの場合など)、浮動小数点モデルのアクティベーション結果が *_float.bin および *_float.txt 形式で保存されます (オプション save_float が True の場合)。
次の表に、ダンプ結果の例を示します。
バッチ番号 | 量子化 | ノード名 | 保存されたファイル |
---|---|---|---|
1 | あり | resnet_v1_50_conv1 |
{output_dir}/dump_results/quant_resnet_v1_50_conv1.bin {output_dir}/dump_results/quant_resnet_v1_50_conv1.txt |
2 | あり | resnet_v1_50_conv1_weights |
{output_dir}/dump_results/quant_resnet_v1_50_conv1_weights.bin {output_dir}/dump_results/quant_resnet_v1_50_conv1_weights.txt |
2 | なし | resnet_v1_50_softmax |
{output_dir}/dump_results/quant_resnet_v1_50_softmax_float.bin {output_dir}/dump_results/quant_resnet_v1_50_softmax_float.txt |