TensorRT – 使用trtexec工具转换模型、运行模型、测试网络性能
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:TensorRT – 使用trtexec工具转换模型、运行模型、测试网络性能
原文链接:https://www.stubbornhuang.com/1719/
发布于:2021年09月19日 10:19:48
修改于:2021年09月19日 10:19:48

1 转换模型
1.1 Caffe模型转换为TensorRT模型
- 将Caffe模型转换为TensorRT模型,启动所有精度以达到最佳性能
trtexec --deploy=mnist.prototex --model=mnist.caffe --saveEngine=mnist.trt --best
- 将Caffe模型转换为TensorRT模型,启动所有精度以达到最佳性能,并跳过推理性能测试
trtexec --deploy=mnist.prototex --model=mnist.caffe --saveEngine=mnist.trt --best --buildOnly
1.2 ONNX模型转换为TensorRT模型
- 将ONNX模型转换为静态batchsize的TensorRT模型,启动所有精度以达到最佳性能,工作区大小设置为1024M
trtexec --onnx=mnist.onnx --explicitBatch --saveEngine=mnist.trt --workspace=1024 --best
- 将ONNX模型转换为动态batchsize的TensorRT模型,启动所有精度以达到最佳性能,工作区大小设置为1024M
trtexec --onnx=mnist.onnx --minShapes=input:<shape_of_min_batch> --optShapes=input:<shape_of_opt_batch> --maxShapes=input:<shape_of_max_batch> --saveEngine=mnist.trt --best --workspace=1024 --best
--minShapes,--optShapes ,--maxShapes必须全部设置,设置的形式为:batchsize x 通道数 x 输入尺寸x x 输入尺寸y
例如:
--minShapes=input:1x3x416x416
--optShapes=input:8x3x416x416
--maxShapes=input:8x3x416x416
1.3 UFF模型转换为TensorRT模型
待补充
2 运行ONNX模型
- 在具有静态输入形状的全维模式下运行 ONNX 模型
trtexec --onnx=model.onnx
- 使用给定的输入形状在全维模式下运行 ONNX 模型
trtexec --onnx=model.onnx --shapes=input:32x3x244x244
- 使用一系列可能的输入形状对 ONNX 模型进行基准测试
trtexec --onnx=model.onnx --minShapes=input:1x3x244x244 --optShapes=input:16x3x244x244 --maxShapes=input:32x3x244x244 --shapes=input:5x3x244x244
3 网络性能测试
- 加载转换后的TensorRT模型进行性能测试,指定batch大小
trtexec --loadEngine=mnist16.trt --batch=1
- 收集和打印时序跟踪信息
trtexec --deploy=data/AlexNet/AlexNet_N2.prototxt --output=prob --exportTimes=trace.json
- 使用多流调整吞吐量
调整吞吐量可能需要运行多个并发执行流。例如,当实现的延迟完全在所需阈值内时,我们可以增加吞吐量,即使以一些延迟为代价。例如,为批量大小 1 和 2 保存引擎并假设两者都在 2ms 内执行,延迟阈值:
trtexec --deploy=GoogleNet_N2.prototxt --output=prob --batch=1 --saveEngine=g1.trt --int8 --buildOnly
trtexec --deploy=GoogleNet_N2.prototxt --output=prob --batch=2 --saveEngine=g2.trt --int8 --buildOnly
保存的引擎可以尝试找到低于 2 ms 的组合批次/流,以最大化吞吐量:
trtexec --loadEngine=g1.trt --batch=1 --streams=2
trtexec --loadEngine=g1.trt --batch=1 --streams=3
trtexec --loadEngine=g1.trt --batch=1 --streams=4
trtexec --loadEngine=g2.trt --batch=2 --streams=2
当前分类随机文章推荐
- TensorRT - 使用trtexec工具转换模型、运行模型、测试网络性能 阅读1479次,点赞0次
- TensorRT - 扩展TensorRT C++API的模型输入维度,增加Dims5,Dims6,Dims7,Dims8 阅读800次,点赞0次
- TensorRT - Polygraphy工具的使用 阅读1519次,点赞0次
- TensorRT - 安装TensorRT工具Polygraphy 阅读1297次,点赞0次
- TensorRT - 解决INVALID_ARGUMENT: getPluginCreator could not find plugin ScatterND version 1,TensorRT找不到ScatterND插件的问题 阅读1181次,点赞0次
- TensorRT - 自带工具trtexec的参数使用说明 阅读1640次,点赞0次
- TensorRT - Windows下TensorRT下载与配置 阅读828次,点赞0次
- TensorRT - 使用torch普通算子组合替代torch.einsum爱因斯坦求和约定算子的一般性方法 阅读893次,点赞0次
- TensorRT - 喜大普奔,TensorRT8.2 EA起开始支持Einsum爱因斯坦求和算子 阅读773次,点赞0次
全站随机文章推荐
- 资源分享 - Level of Detail for 3D Graphics 英文高清PDF下载 阅读947次,点赞1次
- 资源分享 - 动手学深度学习(李沐 2020年05月08日)PDF下载 阅读1310次,点赞0次
- C++11 - 使用std::codecvt进行字符编码转换需要注意的时间效率问题 阅读562次,点赞1次
- C++ - 使用ffmpeg读取视频旋转角度并使用OpenCV根据旋转角度对视频进行旋转复原 阅读540次,点赞0次
- OpenCV - linux上编译出现undefined reference to cv::dnn::experimental_dnn错误 阅读191次,点赞0次
- FFmpeg - 将某个文件夹下的图片按标号顺序合成为指定编码格式和指定帧率的视频 阅读2307次,点赞0次
- Python - 不依赖第三方库对类对象进行json序列化与反序列化 阅读770次,点赞0次
- Python - 运算符/ or // or %的含义和区别 阅读1218次,点赞0次
- WordPress - get_post_type():获取当前文章或者给定文章类型 阅读1391次,点赞0次
- VTK以批量三维点坐标为中心(点云)绘制球体,可用于标识特征点或者是化学分子 阅读3268次,点赞0次
评论
144