PyTorch Eager 模式量化的 TensorRT 加速

💡 原文英文,约800词,阅读约需3分钟。
📝

内容提要

本文介绍了使用TensorRT加速PyTorch量化模型的方法,包括量化模型导出为ONNX格式,修复ONNX模型图以适应TensorRT解析器,并构建为TensorRT引擎。对比了FP16和INT8 ResNet18 TensorRT引擎的推理延迟和准确性。

🎯

关键要点

  • PyTorch 2.3.0 提供三种量化接口:急切模式量化、FX图模式量化和PyTorch 2导出量化。
  • 最新的PyTorch 2导出量化接口无法将量化模型导出为ONNX,因此需要使用急切模式或FX图模式量化接口。
  • 使用TensorRT加速PyTorch急切模式量化模型的步骤包括:量化模型并导出为ONNX,修复ONNX模型图,构建TensorRT引擎。
  • TensorRT INT8显式量化要求权重使用每通道对称量化,激活使用每张量对称量化。
  • 急切模式量化的配置需要设置为qnnpack,以支持INT8对称量化推理。
  • 导出的量化ONNX模型图存在问题,需要修复,包括删除错误的Cast节点和添加浮点偏置项。
  • 量化TensorRT引擎在CIFAR10测试集上的准确率为0.851,与量化PyTorch模型一致。
  • FP16和INT8 ResNet18 TensorRT引擎的推理延迟分别为0.208177 ms和0.17584 ms,INT8引擎比FP16引擎有1.2倍的延迟改进。

延伸问答

如何使用TensorRT加速PyTorch急切模式量化模型?

使用TensorRT加速PyTorch急切模式量化模型的步骤包括:量化模型并导出为ONNX,修复ONNX模型图,构建TensorRT引擎。

PyTorch 2.3.0支持哪些量化接口?

PyTorch 2.3.0提供急切模式量化、FX图模式量化和PyTorch 2导出量化三种接口。

TensorRT INT8量化的要求是什么?

TensorRT INT8显式量化要求权重使用每通道对称量化,激活使用每张量对称量化。

导出的量化ONNX模型图需要修复哪些问题?

导出的量化ONNX模型图需要修复错误的Cast节点和添加浮点偏置项,以便TensorRT解析器能够解析。

FP16和INT8 ResNet18 TensorRT引擎的推理延迟分别是多少?

FP16和INT8 ResNet18 TensorRT引擎的推理延迟分别为0.208177 ms和0.17584 ms,INT8引擎比FP16引擎有1.2倍的延迟改进。

量化TensorRT引擎在CIFAR10测试集上的准确率是多少?

量化TensorRT引擎在CIFAR10测试集上的准确率为0.851,与量化PyTorch模型一致。

➡️

继续阅读