pytorch深度学习入门(15)之-使用onnx模型量化

量化 ONNX 模型

内容

  • 量化概述
  • ONNX 量化表示格式
  • 量化 ONNX 模型
  • 基于变压器的模型Transformer基于变压器的模型
  • GPU 上的量化
  • 常问问题

量化概述

ONNX 运行时中的量化是指 ONNX 模型的 8 位线性量化。

在量化期间,浮点值被映射到以下形式的 8 位量化空间:val_fp32 = scale * (val_quantized - zero_point)

scale是一个正实数,用于将浮点数映射到量化空间。计算方法如下:

对于非对称量化:

 scale = (data_range_max - data_range_min) / (quantization_range_max - quantization_range_min)

对于对称量化:

 scale = max(abs(data_range_max), abs(data_range_min)) * 2 / (quantization_range_max - quantization_range_min)

zero_point表示量化空间中的零。浮点零值在量化空间中能够精确表示是很重要的。这是因为许多 CNN 中都使用了零填充。如果量化后无法唯一表示0,就会导致精度误差。

ONNX 量化表示格式

有两种表示量化 ONNX 模型的方法:

  • 面向操作员(QOperator)。所有量化运算符都有自己的 ONNX 定义,例如 QLinearConv、MatMulI

你可能感兴趣的:(深度学习,人工智能,pytorch,深度学习,python,神经网络)