python 工具方法50 高效的将onnxruntime推理代码修改为tensorrt推理代码

onnxruntime推理时可以直接以numpy数组为输入,可以便捷的支持多输入多输出模型。但需要修改为python-tensorrt推理时,需要补充上cuda操作,完成cpu变量与cuda变量的通信、输出输出的内存分配。为此对python-tensorrt推理代码进行共性化提取,让您可以像python-onnxruntime一样使用tensorrt推理,仅需替换2行代码即可(模型初始化代码,onnx.run调用代码)。

前置条件:安装py-cuda库、tensorrt-python 10.x推理环境。

1、核心实现

以下代码的TRTModel模型类,支持任意输入输出的静态模态。具体可以观察__call__函数代码,其是与模型结构弱相关的,在__init__函数中动态的基于self.engine.num_io_tensors获取的模型的输入与输出信息。


import tensorrt as trt
import numpy as np
from cuda import cuda, cudart
### 解决ONNX Runtime缺少TensorRT提供程序的问题 当遇到ONNX Runtime缺少`onnxruntime_providers_tensorrt`的情况时,通常是因为环境配置不完全或某些依赖项未正确安装。以下是详细的解决方案: #### 安装必要的依赖包 确保已经安装了所有必需的组件,包括CUDA、cuDNN以及TensorRT本身。这些工具对于支持GPU加速至关重要。 ```bash pip install --upgrade pip setuptools wheel pip install onnxruntime-gpu==1.13.0 # 版本号可能随时间变化而不同,请根据实际情况调整 ``` 为了使ONNX Runtime能够利用TensorRT优化推理过程,还需要单独安装特定于TensorRT的支持库。可以通过以下方式获取并安装它: ```bash conda install -c conda-forge tensorrt ``` 如果使用的是非Anaconda环境,则可以从NVIDIA官方网站下载适用于操作系统的预编译二进制文件,并按照官方文档中的指示完成设置[^1]。 #### 设置环境变量 为了让操作系统找到所需的共享对象(如`.so`文件),需将TensorRT路径添加至LD_LIBRARY_PATH环境变量中(Linux/MacOS)。对于Windows用户来说则是更新PATH环境变量以包含TensorRT DLL的位置。 - **Linux/macOS**: 编辑~/.bashrc 或 ~/.zshrc 文件,在其中加入如下行: ```shell export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/tensorrt/lib/ ``` - **Windows**: 右键点击“此电脑”,选择属性 -> 高级系统设置 -> 环境变量,编辑Path变量,增加TensorRT bin目录位置。 #### 使用Python API验证安装成功与否 一旦完成了上述步骤,可以编写简单的测试脚本来确认一切正常工作。 ```python import onnxruntime as ort print(f'Available providers: {ort.get_available_providers()}') if 'TensorrtExecutionProvider' in ort.get_available_providers(): print('Successfully loaded TensorRT provider.') else: print('Failed to load TensorRT provider.') ``` 这段代码会打印出当前可用的执行器列表;如果有TensorRT Execution Provider存在,则表示安装无误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里鹏程转瞬至

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值