TensorRT – 使用Polygraphy工具比较onnx模型和TensorRT模型的推理结果是否一致
1 比较onnx模型和TensorRT模型推理结果的必要性
在进行模型部署的时候,如果我们使用TensorRT对模型加速,那么一般都会采用深度学习框架>onnx模型>TensorRT模型的技术路线,在onnx模型转换到TensorRT模型的过程中有可能某些算子会丢失精度,从而影响后续的模型推理结果,特别是对模型精度要求较高的问题(比如多分类问题),所以这个时候就需要有一个工具来比较onnx源模型与TensorRT模型的推理结果是否一致。
2 使用TensorRT的Polygraphy工具和onnx库比较推理结果
Polygraphy的Github仓库:https://github.com/NVIDIA/TensorRT/tree/main/tools/Polygraphy
在Polygraphy的Github仓库文档中为我们提供了一个比较二者结果的Python示例代码,
from polygraphy.backend.onnxrt import OnnxrtRunner, SessionFromOnnx
from polygraphy.backend.trt import TrtRunner, EngineFromNetwork, NetworkFromOnnxPath
from polygraphy.comparator import Comparator, DataLoader
model_path = "/path/to/model.onnx"
build_onnxrt_session = SessionFromOnnx(model_path)
build_engine = EngineFromNetwork(NetworkFromOnnxPath(model_path))
runners = [
OnnxrtRunner(build_onnxrt_session),
TrtRunner(build_engine),
]
data_loader = DataLoader(val_range=(0, 2))
run_results = Comparator.run(runners, data_loader=data_loader)
assert bool(Comparator.compare_accuracy(run_results))
主要的步骤如下:
- 加载onnx模型
- 从onnx模型中构建TensorRT模型
- 将输入值限制在[0,2]的范围内
- 分别使用onnx-runtime和TensorRT进行推理
- 比较二者的推理结果是否一致
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:TensorRT – 使用Polygraphy工具比较onnx模型和TensorRT模型的推理结果是否一致
原文链接:https://www.stubbornhuang.com/2447/
发布于:2022年12月12日 9:49:11
修改于:2023年06月21日 17:43:49
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50