def export_onnx_model(self, output_dir, verbose)-New - 3.5 简体中文

Vitis AI 用户指南 (UG1414)

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

原生 ONNX 模型仅支持 INT8 量化和半偶数舍入。将模型从 Vitis AI 量化器转换为 ONNX 格式时,无法导出其他量化位和更多的舍入方法,如半向上舍入或向零舍入。为解决此问题,导出 ONNX 模型时,可使用 vai::QuantizeLinear 和 vai::DequantizeLinear are 替换对应的原生 ONNX 运算符。对于 DequantizeLinear,原生 ONNX 与 Vitis AI 之间的接口是相同的。但对于 QuantizeLinear,两者之间存在些许差异,总结要点如下:

  • ONNX 具有输入列表(x、y_scale、y_zero_point):Vitis AI 具有输入列表(x、valmin、valmax、scale、zero_point、method),其中,valmin 和 valmax 是量化间隔,例如,valmin=-128 和 valmax=127 对应 INT8 对称量化,采用下列舍入方法:半偶数舍入、半向上舍入、半向下舍入、向零舍入、远离零舍入等。
  • 在以下定义中设置 native_onnx=True 即可获取原生 Quant-Dequant ONNX 模型。如不设置此项,则会接收到 Quant-Dequant ONNX 模型,以及 Vitis AI QuantizeLinear 和 DequantizeLinear 运算符。默认值为 False。

    此函数会以 ONNX 格式导出量化模型:
    def export_onnx_model(self, output_dir="quantize_result", verbose=False, dynamic_batch=False,                   opset_version=None, native_onnx=True, dump_layers=False, check_model=False, opt_graph=False):
表 1. 实参
实参 描述
Output_dir 量化结果和中间文件的目录。默认值为 quantize_result。
Verbose 此标志用于控制日志记录的详细程度。
Dynamic_batch 此标志用于设置输入形状的批次大小是否为动态。默认值为 False。
Opset_version 默认 (ai.onnx) opset 版本目标。如不设置此项,将取当前 PyTorch 版本的最新稳定版本作为值。
Native_onnx 导出含原生 Quant-Dequant 运算符或定制 Quant-Dequant 运算符的 ONNX 模型。如果此项设为 True,就会收到原生 Quant-Dequant ONNX 模型。否则,则生成 VAI Quant-Dequant ONNX 模型。默认值为 True。
Dump_layers 在运行时期间转储 ONNX 模型中每个层的输出。默认值为 False。
Check_model 检查 XMODEL 与 ONNX 模型之间输出的差异。默认值为 False。
Opt_graph 最优化 ONNX 计算图。默认值为 False。