TensorFlow 工作流程 - 3.5 简体中文

Vitis AI 用户指南 (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 简体中文

要生成量化推断模型和参考结果,请遵循下列步骤进行操作:

  1. 运行以下命令对模型进行量化,以生成量化推断模型。
    这样即可在 quantize_model 文件夹中生成量化模型 quantize_eval_model.pb
    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. 运行以下命令生成 DPU xmodel 文件,以生成 DPU xmodel,例如 V70。
    vai_c_tensorflow --frozen_pb quantize_model/quantize_eval_model.pb \
      --arch /opt/vitis_ai/compiler/arch/DPUCV2DX8G/V70/arch.json       \
      --output_dir compile_model                                       \
      --net_name resnet50_tf
  4. 运行以下命令以生成 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

      打开您创建的图像后,即可看到这些运算周围的诸多小框。每个框代表 DPU 上的 1 个层次。您可使用最后一项运算的名称在 GPU 转储结果中查找其对应的层次。下图显示了部分架构。



    3. 将文件提交给 AMD

      如果在 DPU 上证明某个特定层存在错误,请准备好量化模型(例如 quantize_eval_model.pb),将其打包并与详细描述一起发送给AMD,以供工厂进行进一步分析。