报错解决 Failed to load library libonnxruntime_providers_tensorrt.so with error: libnvinfer.so.8

用onnxruntime跑推理的时候发现报错:

2024-07-03 10:37:55.516340683 [E:onnxruntime:Default, provider_bridge_ort.cc:1532 TryGetProviderInfo_TensorRT] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1209 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_tensorrt.so with error: libnvinfer.so.8: cannot open shared object file: No such file or directory

搜了网上的教程没用,检查了一下 libnvinfer.so.8 是否存在:

updatedb
locate libnvinfer.so.8

没有该文件,又检查:

locate libnvinfer.so

发现了 xxx/site-packages/tensorrt_libs/libnvinfer.so.10,所以可以猜测是 Python 的 tensorrt 库的版本问题。检查版本发现确实为 tensorrt-10.0.1。降级到 tensorrt-8.6.1

pip install tensorrt==8.6.1

重新检查 libnvinfer.so

updatedb
locate libnvinfer.so

找到了 xxx/site-packages/tensorrt_libs/libnvinfer.so.8。但重新运行程序发现报错还是没有解决,根据网上资料将路径加入 LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:xxx/site-packages/tensorrt_libs
# 注意替换成自己locate到的路径

重新运行,报错解决。

<think>好的,用户遇到了ONNX Runtime运行时提示TIDLCompilationProvider不可用的问题,需要寻找解决方案。首先,我需要回忆ONNX Runtime的相关知识,尤其是关于TIDLCompilationProvider的部分。TIDLCompilationProvider是德州仪器(TI)的深度学习编译提供程序,主要用于在TI的硬件上加速模型推理。如果这个提供程序不可用,系统会回退到CPUExecutionProvider,导致性能下降。 接下来,我需要分析可能导致这个问题的原因。根据常见的经验,可能的原因包括:未正确安装或配置TIDL的依赖库、环境变量设置不正确、ONNX Runtime版本不兼容、硬件不支持或者权限问题等。需要逐一排查这些可能性。 首先,检查依赖库是否安装。用户需要确认是否安装了TIDL的SDK和相关依赖,如TI的处理器支持包。这些通常是必须的,缺少它们会导致提供程序无法加载。例如,引用中提到系统服务启动失败可能与模块加载有关,类似地,TIDL的依赖如果没有正确安装,可能导致服务无法启动[^1]。 其次,验证编译选项。ONNX Runtime在编译时需要启用TIDL支持,用户可能下载的是预编译版本,但默认可能不包含TIDL提供程序。需要确认是否从源代码编译,并在编译时指定了--use_tidl参数。这里可以参考引用中的项目配置,比如使用正确的构建选项和依赖管理[^2]。 然后,检查环境变量。TIDL可能需要特定的环境变量来定位库文件或配置文件,例如TIDL_RT_PATH或LD_LIBRARY_PATH是否设置正确。如果这些变量未设置或路径错误,提供程序将无法找到所需的资源。 版本兼容性也是一个重要因素。确保ONNX Runtime的版本与TIDL SDK版本兼容,版本不匹配可能导致接口不一致,进而引发错误。用户需要查阅官方文档,确认支持的版本组合。 硬件支持方面,确认使用的设备是否为TI的处理器,如Jacinto系列。TIDLCompilationProvider是专为TI硬件设计的,如果在其他硬件上运行,自然无法使用。此外,权限问题如访问设备所需的权限不足,也可能导致提供程序无法初始化,需要检查用户组权限或使用sudo运行。 日志分析是关键步骤。启用ONNX Runtime的详细日志,通过设置环境变量如ORT_LOG_LEVEL=VERBOSE,可以获取更详细的错误信息,帮助定位问题根源。例如,日志可能提示缺少某个库文件或配置文件路径错误,从而指导用户进行下一步的修复。 如果上述步骤无法解决问题,用户可能需要参考TI的官方文档或社区支持,寻求更具体的指导。同时,确保所有步骤按照官方指南进行,避免遗漏任何配置细节。 最后,生成相关问题,帮助用户扩展了解可能相关的其他问题,比如TIDL编译优化、性能调优或与其他硬件提供程序的比较,这些都有助于用户深入解决问题并优化应用。</think>针对ONNX Runtime运行时出现`TIDLCompilationProvider not available`错误的问题,以下是系统化排查方案: --- ### **一、错误原因分析** 该错误表明ONNX Runtime无法加载德州仪器(TI)的TIDL编译提供程序,可能原因包括: 1. 未正确安装TIDL依赖库 2. ONNX Runtime编译时未启用TIDL支持 3. 环境变量配置错误 4. 硬件设备/驱动不兼容 5. 权限问题导致设备访问失败 --- ### **二、分步解决方案** #### **1. 验证TIDL依赖安装** - 确认已安装TIDL SDK和TI处理器支持包(如`ti-processor-sdk-rtos`) - 检查动态库路径: ```bash $ ldd /path/to/onnxruntime/lib/libonnxruntime.so | grep tidl ``` 若输出中显示`libtidl_onnxrt_ep.so => not found`,需设置`LD_LIBRARY_PATH`指向TIDL库目录[^1] #### **2. 确认ONNX Runtime编译选项** - 必须通过源码编译时添加TIDL支持: ```bash $ ./build.sh --use_tidl --config Release --build_shared_lib ``` 验证编译日志中是否包含`TIDLCompilationProvider enabled` #### **3. 环境变量配置** - 设置关键环境变量: ```bash export TIDL_RT_PATH=/opt/ti-processor-sdk-rtos export LD_LIBRARY_PATH=$TIDL_RT_PATH/lib:$LD_LIBRARY_PATH ``` #### **4. 硬件兼容性检查** - 仅支持TI Jacinto系列处理器(如TDA4VM) - 验证设备驱动版本: ```bash $ cat /sys/devices/platform/44000000.bus/4800000.devfreq/ti-sci-fw/version ``` #### **5. 权限配置** - 添加用户到`tidl`组: ```bash $ sudo usermod -aG tidl $USER ``` - 重启服务使权限生效[^1] --- ### **三、验证代码示例** ```python import onnxruntime as ort # 强制使用TIDL提供程序 providers = [('TIDLCompilationProvider', {'platform': 'J7'}), 'CPUExecutionProvider'] try: sess = ort.InferenceSession("model.onnx", providers=providers) except Exception as e: print(f"Error: {str(e)}") # 检查错误日志中具体缺失的组件 ``` --- ### **四、日志分析技巧** 启用详细日志定位问题根源: ```bash $ export ORT_LOG_LEVEL=VERBOSE $ python your_script.py 2>&1 | grep -i tidl ``` 典型错误模式: - `Failed to load TIDL library`: 库路径配置错误 - `Permission denied`: 设备访问权限问题 - `Unsupported operator: NonMaxSuppression`: 模型包含TIDL不支持的算子[^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

两只程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值