TensorRT5介绍及Pytorch转TensorRT5代码示例

1 TensorRT简介

TensorRT的核心是一个c++库,它促进了对NVIDIA图形处理单元(gpu)的高性能计算。它与TensorFlow,Pytorch等框架相辅相成。他可以快速高效的运行一个已经训练好的神经网络,并生成结果。它包括用于从Caffe、ONNX或TensorFlow导入现有模型的解析器,以及用于以编程方式构建模型的c++和Python api。TensorRT在所有支持的平台上提供c++实现,在x86上提供Python实现。

2 TensorRT的好处

训练神经网络之后,TensorRT使网络能够被压缩、优化并作为运行时部署,而不需要框架的开销。TensorRT结合了多个层,优化内核选择,并根据指定的精度(FP32、FP16或INT8)执行规范化和转换,以优化矩阵计算,从而提高延迟、吞吐量和效率。TensorRT通过将API与特定硬件细节的高级抽象以及专门针对高吞吐量、低延迟和低设备内存占用计算而开发和优化的实现相结合来解决这些问题。
注:1080TI支持fp32和int8精度的运算,而最新出的RTX2080TI系列则支持fp16。
在这里插入图片描述

3 TensorRT的使用说明

(1)TensorRT一般不用于训练阶段的任何部分。
(2)需要使用ONNX解析器、Caffe解析器或TensorFlow/UFF解析器将保存的神经网络从其保存的格式解析为TensorRT。(网络可以直接从Caffe导入,也可以通过UFF或ONNX格式从其他框架导入。)TensorRT 5.0.0附带的ONNX解析器支持ONNX IR(中间表示)版本0.0.3和opset版本7。
在这里插入图片描述

(3)考虑优化选项——批大小、工作区大小和混合精度。这些选项被选择并指定TensorRT构建步骤的一部分,在此步骤中,根据网络实际构建一个优化的计算引擎。
在这里插入图片描述

(4)验证结果,选择FP32 或 FP16结果应该更准确,INT8效果应该会差一点
(5)以串行格式写出计算引擎,称为计划文件
(6)要初始化推理引擎,应用程序首先将模型从计划文件反序列化为推理引擎。
(7)TensorRT通常异步使用,因此,当输入数据到达时,程序调用一个execute_async函数,其中包含输入缓冲区、输出缓冲区,TensorRT应该将结果放入其中的缓冲区。(用pycuda操作缓冲区)

注:生成的计划文件不能跨平台或TensorRT版本移植。并且针对特定的GPU。

4 TensorRT的使用步骤:(假设以及有一个训练好的模型

要将PyTorch模型换为TensorRT,可以使用torch2trt库。以下是换的步骤: 1. 首先,根据引用中提供的命令,克隆并安装torch2trt库。运行以下命令: ``` git clone https://github.com/NVIDIA-AI-IOT/torch2trt.git cd torch2trt sudo python setup.py install --plugins ``` 2. 如果你需要支持动态推理,可以使用torch2trt dynamic库。根据引用中提供的命令,克隆并安装torch2trt dynamic库。运行以下命令: ``` git clone https://github.com/grimoire/torch2trt_dynamic.git cd torch2trt_dynamic python setup.py develop ``` 3. PyTorch模型为TensorRT格式。使用torch2trt库的`torch2trt`函数来执行此操作。下面是一个示例代码: ```python import torch from torch2trt import torch2trt # 加载预训练的PyTorch模型 model = ... # 加载你自己的模型 # 创建一个虚拟输入张量 input_shape = (1, 3, 224, 224) # 输入张量的形状 dummy_input = torch.randn(*input_shape).cuda() # 将PyTorch模型换为TensorRT格式 model_trt = torch2trt(model, [dummy_input]) ``` 4. 换后的TensorRT模型是一个可以直接在TensorRT中进行推理的对象。你可以使用`model_trt`来进行推理操作。 总结起来,要将PyTorch模型换为TensorRT,首先安装torch2trt库,然后根据需要安装torch2trt dynamic库。最后,使用torch2trt函数将模型换为TensorRT格式。请确保按照上述步骤进行操作,并参考提供的引用链接和代码示例进行更详细的了解。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值