用于ONNX的TensorRT后端
用于ONNX的TensorRT后端
解析ONNX模型以使用TensorRT执行。
另请参阅TensorRT文档。
有关最近更改的列表,请参见changelog。
支持的TensorRT版本
Master分支上的开发适用于具有完整维度和动态架构shape支持的TensorRT 7.2.1的最新版本。
对于TensorRT的早期版本,请参考其各自的分支。
完整尺寸+动态架构
在具有动态架构支持的全维度模式下,构建INetwork对象,需要调用以下API:
C ++
const auto explicitBatch = 1U <<
static_cast<uint32_t>(nvinfer1::NetworkDefinitionCreationFlag::kEXPLICIT_BATCH);
builder->createNetworkV2(explicitBatch)
Python
import tensorrt
explicit_batch = 1 << (int)(tensorrt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)
builder.create_network(explicit_batch)
有关这些API用法的示例,请参见:
sampleONNXMNIST
sampleDynamicReshape
支持的算子
当前支持的ONNX算子,可在算子支持列表中找到。
安装
依存关系
Dependencies
Protobuf>= 3.0.x
TensorRT 7.2.1
TensorRT 7.2.1 open source libaries (master branch)
编译
对于在docker中进行构建,建议按照main(TensorRT存储库)[https://github.com/NVIDIA/TensorRT#setting-up-the-build-environment]中的说明使用和设置Docker容器,来构建onnx -tensorrt库。
clone存储库后,可以通过运行以下命令,来构建解析器库和可执行文件:
cd onnx-tensorrt
mkdir build && cd build
cmake … -DTENSORRT_ROOT=<path_to_trt> && make -j
// Ensure that you update your LD_LIBRARY_PATH to pick up the location of the newly built library:
export LD_LIBRARY_PATH=PWD:PWD:PWD:LD_LIBRARY_PATH
可执行用法
可以使用onnx2trt可执行文件,将ONNX模型转换为序列化的TensorRT引擎:
onnx2trt my_model.onnx -o my_engine.trt
ONNX模型也可以转换为人们可读的文本:
onnx2trt my_model.onnx -t my_model.onnx.txt
ONNX模型也可以通过ONNX的优化库(由dsandler添加)进行优化。要优化ONNX模型并输出新的模型,可使用它-m来指定输出模型名称,用-O指定以分号分隔的优化过程列表,进行应用:
onnx2trt my_model.onnx -O “pass_1;pass_2;pass_3” -m my_model_optimized.onnx
通过运行以下命令,查看更多所有可用的优化遍历:
onnx2trt -p
通过运行以下命令,查看更多用法信息:
onnx2trt -h
Python模块
ONNX-TensorRT解析器的Python,绑定打包在随附的.whl文件中。用来安装
python3 -m pip install <tensorrt_install_dir>/python/tensorrt-7.x.x.x-cp<python_ver>-none-linux_x86_64.whl
TensorRT 7.2.1支持ONNX版本1.6.0。通过以下方式安装:
python3 -m pip install onnx==1.6.0
可以通过运行以下命令,来安装ONNX-TensorRT后端:
python3 setup.py install
ONNX-TensorRT Python后端使用
可以在Python中如下使用ONNX的TensorRT后端:
import onnx
import onnx_tensorrt.backend as backend
import numpy as np
model = onnx.load("/path/to/model.onnx")
engine = backend.prepare(model, device=‘CUDA:1’)
input_data = np.random.random(size=(32, 3, 224, 224)).astype(np.float32)
output_data = engine.run(input_data)[0]
print(output_data)
print(output_data.shape)
C ++库用法
模型解析器库libnvonnxparser.so,在头文件中声明了其C ++ API:
NvOnnxParser.h
测试
安装后(或在Docker容器内),可以按以下方式运行ONNX后端测试:
仅实模型测试:
python onnx_backend_test.py OnnxBackendRealModelTest
所有测试:
python onnx_backend_test.py
可以使用-v标志,使输出更加详细。
预训练模型
在ONNX格式预先训练模式可以在找到ONNX
Model Zoo
https://github.com/onnx/onnx-tensorrt
用于ONNX的TensorRT后端相关推荐
- onnx 测试_用于ONNX的TensorRT后端
用于ONNX的TensorRT后端 解析ONNX模型以使用TensorRT执行. 另请参阅TensorRT文档. 有关最近更改的列表,请参见changelog. 支持的TensorRT版本 Maste ...
- onnx转tensorrt 实战干货总结
目录 查看tensorrt版本: input: dynamic input is missing dimensions in profile onnx转tensorrt方法 安装tensorrt: o ...
- pytorch模型转ONNX转TensorRT,模型转换和推理部署
一.pth模型转ONNX import os import sys import torch import numpy as npfrom feat.model import ResNet # 导入自 ...
- pytorch,onnx和tensorrt 的速度对比
onnx Open Neural Network Exchange (ONNX)是微软和Facebook携手开发的开放式神经网络交换工具.为人工智能模型(包括深度学习和传统ML)提供了一种开源格式.它 ...
- tensorrt,mmclas中的onnx转tensorrt
NVIDIA TensorRT | NVIDIA Developerhttps://developer.nvidia.cn/zh-cn/tensorrtTensorRT详细入门指北,如果你还不了解Te ...
- onnx 测试_pytorch onnx onnxruntime tensorrt踩坑 各种问题
做了一个小测试,发现pytorch onnx tensorrt三个库的版本存在微妙的联系,在我之前的错误实验中,PyTorch==1.3.0/1.4.0:Onnx==1.6.0:tensorrt=7. ...
- win10安装onnx、tensorrt(python用,超简单安装版)
一. 安装环境版本 显卡是3090. 1. python 3.8 2. pytorch 1.9.1(torch-1.9.1+cu111-cp38-cp38-win_amd64),离线安装参考:(10条 ...
- 【TensorRT】PyTorch模型转换为ONNX及TensorRT模型
文章目录 1. PyTorch模型转TensorRT模型流程 2. PyTorch模型转ONNX模型 3. ONNX模型转TensorRT模型 3.1 TensorRT安装 3.2 将ONNX模型转换 ...
- 1、pth转onnx模型、onnx转tensorrt模型、python中使用tensorrt进行加速推理(全网最全,不信你打我)
本文向所有亲们介绍在python当中配置tensorrt环境.使用tensorrt环境进行推理的教程,主要分为两大部分,第一部分环境配置,第二部分前向推理. 第一部分 环境配置 第一步:检查你的系统类 ...
最新文章
- phpstorm 关闭多余变量提示
- LC #134 JS
- springboot 做表白墙_华农表白墙144期 | 等什么时候,她从我开的花店前经过,我把整个花店送个她可好。...
- trap in development
- 【Django】MTV(Django)模型
- 裴蜀定理(note)
- count does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manu
- Shanghai Barcamp
- unserialize用法
- Android中使用shape来定义控件的显示属性
- python---图表的使用
- Java机器学习开发库
- ValueError: threshold must be numeric and non-NAN, try sys.maxsize for untruncated representation
- 旧版sai笔刷_最详细的SAI笔刷设置教程,非常全面详细!
- 海洋女神亲身体验灵翼龙岛飞行任务--壮志凌云:空军指挥官穆维里克--完成后的诀窍总结...
- 微信红包数字变化动态图片_微信红包数字动图下载_微信动态图片红包图下载_游戏吧...
- deepin更新失败_deepin V20 20200826升级失败
- 进制为2的10次方的世界
- 页面文件太小,无法解决/BrokenPipeError: [Errno 32] Broken pipe问题解决
- 从原理入手,彻底解除非法应用程序劫持项