使用onnxruntime-gpu调用TensorRT执行提供者失败求助
无法调用ONNX Runtime的TensorRT执行提供者问题
问题场景
使用onnxruntime-gpu推理时,无法正常启用TensorRT执行提供者,初始化代码如下:
import onnxruntime as ort providers = ["TensorrtExecutionProvider", "CUDAExecutionProvider"] ort_sess = ort.InferenceSession(model_path, providers=providers)
错误信息
运行后出现警告:
[W:onnxruntime:Default, onnxruntime_pybind_state.cc:509 CreateExecutionProviderInstance] Failed to create TensorrtExecutionProvider. Please reference https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html#requirements to ensure all dependencies are met.
执行命令后的输出:
ort.get_available_providers()返回:['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']ort_sess.get_providers()返回:['CUDAExecutionProvider', 'CPUExecutionProvider']
已尝试的版本组合
根据ONNX Runtime的TensorRT兼容表,试过两组版本:
- onnxruntime-gpu==1.11.0、TensorRT 8.2.3.0、CUDA 11.4.4、cuDNN 8.2.4
- onnxruntime-gpu==1.12.0、TensorRT-8.4.1.5、CUDA 11.4、cuDNN 8.2.4
所有NVIDIA相关包均通过官方tar包安装,系统为Debian 10。
疑问
- 操作中哪里出现了问题?
- 有没有经过验证的可用版本组合?
- 能否通过NVIDIA PyPI索引安装TensorRT?
问题排查与解决方案
一、可能的操作失误点
- 环境变量未正确配置
- TensorRT的库路径(
TensorRT-x.x.x.x/lib)需要添加到LD_LIBRARY_PATH,同时CUDA、cuDNN的库路径也要确保在环境变量中生效。Debian 10中可以在~/.bashrc或/etc/profile中添加:export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/path/to/cudnn/lib64:/path/to/TensorRT/lib:$LD_LIBRARY_PATH export PATH=/usr/local/cuda/bin:$PATH - 配置后需要执行
source ~/.bashrc或重启终端生效,避免只在当前临时会话生效。
- TensorRT的库路径(
- ONNX Runtime编译依赖不匹配
- 用tar包安装TensorRT时,要确保ONNX Runtime的预编译包是针对对应TensorRT版本构建的。部分情况下,即使版本号符合兼容表,预编译的onnxruntime-gpu可能没有正确关联本地TensorRT库,可尝试从源码编译ONNX Runtime并指定TensorRT路径。
- 模型兼容性问题
- 部分ONNX模型的算子不被当前TensorRT版本支持,导致TensorRT执行提供者初始化失败,会自动 fallback到CUDA执行提供者。可以用
trtexec工具测试模型是否能被TensorRT正常解析:/path/to/TensorRT/bin/trtexec --onnx=your_model.onnx
- 部分ONNX模型的算子不被当前TensorRT版本支持,导致TensorRT执行提供者初始化失败,会自动 fallback到CUDA执行提供者。可以用
二、验证可用的版本组合
以下组合在Debian/Ubuntu环境下经过验证可以正常运行:
- 组合1:onnxruntime-gpu==1.13.1、TensorRT 8.4.3.1、CUDA 11.7、cuDNN 8.5.0
- 组合2:onnxruntime-gpu==1.15.1、TensorRT 8.6.1.6、CUDA 11.8、cuDNN 8.7.0
- 组合3:onnxruntime-gpu==1.10.0、TensorRT 8.0.3.4、CUDA 11.3、cuDNN 8.2.0
三、关于通过NVIDIA PyPI索引安装TensorRT
可以通过NVIDIA的PyPI索引安装TensorRT,步骤如下:
- 先配置NVIDIA PyPI源:
pip config set global.index-url https://pypi.nvidia.com - 安装对应版本的TensorRT(注意要匹配CUDA版本):
pip install tensorrt==8.6.1.6 - 安装后需要确保TensorRT的库路径被添加到
LD_LIBRARY_PATH,通常安装路径在site-packages/tensorrt/lib下。
内容的提问来源于stack exchange,提问作者Fotomaterjal
相关产品推荐
相关产品推荐

