【问题标题】:Failed to create TensorrtExecutionProvider using onnxruntime-gpu使用 onnxruntime-gpu 创建 TensorrtExecutionProvider 失败
【发布时间】:2022-08-22 15:40:27
【问题描述】:

我在使用TensorRT 执行提供程序进行onnxruntime-gpu 推理时遇到问题。我正在初始化session,如下所示:

import onnxruntime as ort

providers = [\"TensorrtExecutionProvider\", \"CUDAExecutionProvider\"]
ort_sess = ort.InferenceSession(model_path, providers=providers)

并收到此错误:

[W:onnxruntime:Default, onnxruntime_pybind_state.cc:509 CreateExecutionProviderInstance] 未能创建 TensorrtExecutionProvider。请参考https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html#requirements 以确保满足所有依赖项。

ort.get_available_providers() 输出

[\'TensorrtExecutionProvider\', \'CUDAExecutionProvider\', \'CPUExecutionProvider\']

ort_sess.get_providers() 输出

[\'CUDAExecutionProvider\', \'CPUExecutionProvider\']

我知道error message 指向version mismatch,但我没能做到正确。

根据onnxruntime TensorRT 兼容性表,我必须具有以下组合之一(https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html):

ONNX Runtime TensorRT CUDA
master 8.4 11.4
1.12 8.4 11.4
1.11 8.2 11.4
1.10 8.0 11.4
1.9 8.0 11.4

根据CUDA 要求表(https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements),我必须有以下组合之一:

ONNX Runtime CUDA cuDNN Notes
1.12, 1.11 11.4 8.2.4 (Linux), 8.2.2.26 (Windows) libcudart 11.4.43, libcufft 10.5.2.100, libcurand 10.2.5.120, libcublasLt 11.6.5.2, libcublas 11.6.5.2, libcudnn 8.2.4

我已经通过Nvidia docs 中的tar 安装方法安装了所有NVIDIA-related packages。 这是我的版本:

库达:
cat /usr/local/cuda/version.json:

   \"cuda\" : {
      \"name\" : \"CUDA SDK\",
      \"version\" : \"11.4.4\"
   }

库德恩:
cat /usr/local/cuda/version.json:

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 2
#define CUDNN_PATCHLEVEL 4

张量RT:
pip list | grep tensorrt

tensorrt                          8.2.3.0

我的 onnxruntime-gpu 版本是1.11.0因为上面的兼容性表。

我正在使用 TensorRT 版本 8.2.3.0,因为 (https://onnxruntime.ai/docs/build/eps.html#tensorrt)

ONNX 运行时的 TensorRT 执行提供程序是使用 TensorRT 8.2.3.0 构建和测试的。

但是,另一个页面说明了以下内容 (https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html):

ONNX 运行时的 TensorRT 执行提供程序是使用 TensorRT 8.4 构建和测试的。

所以我还尝试了另一个与 TensorRT 版本 TensorRT-8.4.1.5、onnxruntime-gpu==1.12.0、cuda-11.4、cudnn-8.2.4 的组合,但得到了同样的错误。

我正在使用 Debian 10。

我究竟做错了什么?有没有人确定版本匹配并可以分享版本组合?如果是这样,您是否还设法通过nvidia pypi index 安装了 tensorrt(这会让我感觉更舒服)?

    标签: python onnx tensorrt


    【解决方案1】:

    我想我已经找到了一个初步的解决方案。

    设置以下环境变量后,TensorrtExecutionProvider 由 onnxruntime 找到:

    export CUDA_PATH=/usr/local/cuda
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/TensorRT-8.4.1.5/lib

    请注意,在 Windows 机器上,只有 CUDA_PATH 必须设置(在我的情况下为 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4),并且 CUDNN 的路径必须添加到 PATH 变量(在我的情况下为 C:\Program Files\NVIDIA\CUDNN\v8.2.2.26\bin)。我不需要为 TensorRT 设置任何额外的东西。

    【讨论】:

      猜你喜欢
      • 2023-01-28
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多