Paddle Inference 推理动态链接库 libnvinfer.so 问题
执行推理时会提示 TensorRT 的动态链接库缺失的问题:
TensorRT dynamic library (libnvinfer.so) that Paddle depends on is not configured correctly. (error code is libnvinfer.so: cannot open shared object file: No such file or directory) Suggestions:
- Check if TensorRT is installed correctly and its version is matched with paddlepaddle you installed.
- Configure TensorRT dynamic library environment variables as follows:
- Linux: set LD_LIBRARY_PATH by
export LD_LIBRARY_PATH=...
- Windows: set PATH by `set PATH=XXX;———– Running Arguments ———–
其实这个问题并没有影响我们模型的推理结果,强迫症不允许有任何警告,还是解决下吧!临时解决可以采用离线安装方式。
源安装方式
参考:Install TensorRT - 4.1. Debian Installation
后面有时间会稍微整理一下!
离线包安装方式
这个方法比较适用于无法添加 nvidia 相关开发包仓库源的场景:
- 不是唯一的方式,也不是最好的方式
- 而且不是很灵活,具有版本针对性,针对服务器已安装 Cuda
10.0
的版本
安装相关依赖包
上面已经说了具有版本针对性是因为 Cuda 版本是10.0
,下载的依赖包都是针对这个版本的,点我可下载,文件列表如下:
ls -l /data/nvidia-debs/TensorRT-debs
总用量 255M
-rw-rw-r-- 1 tianye tianye 29M Sep 19 2018 cuda-cublas-10-0_10.0.130-1_amd64.deb
-rw-rw-r-- 1 tianye tianye 107K Sep 19 2018 cuda-cudart-10-0_10.0.130-1_amd64.deb
-rw-rw-r-- 1 tianye tianye 18K Sep 19 2018 cuda-license-10-0_10.0.130-1_amd64.deb
-rw-rw-r-- 1 tianye tianye 157M Oct 28 2019 libcudnn7_7.6.5.32-1+cuda10.0_amd64.deb
-rw-r--r-- 1 tianye tianye 66M Dec 3 12:33 libnvinfer7_7.0.0-1+cuda10.0_amd64.deb
-rw-r--r-- 1 tianye tianye 2.1M Dec 3 12:33 libnvinfer-plugin7_7.0.0-1+cuda10.0_amd64.deb
-rw-r--r-- 1 tianye tianye 588K Dec 3 12:33 libnvonnxparsers7_7.0.0-1+cuda10.0_amd64.deb
-rw-r--r-- 1 tianye tianye 761K Dec 3 12:33 libnvparsers7_7.0.0-1+cuda10.0_amd64.deb
我这里上面 deb 包下载后都是放在 /data/nvidia-debs/TensorRT-debs
下的,您可以放在其它地方,安装即可:
sudo dpkg -i /data/nvidia-debs/TensorRT-debs/*.deb
上面的相关依赖包是在 nvidia 源仓库下载的,可以在官网页面中找到相应版本的依赖包,这里需要安装的只是:
- libnvinfer7
- libnvinfer-plugin7
- libnvonnxparsers7
- libnvparsers7
安装过程中发现它们依赖于其它包,所以你看到目录下的其它包都是依赖,都得安装!
deb 包仓库地址(进入页面按系统进入即可):
- cuda:https://developer.download.nvidia.com/compute/cuda/repos
- machine-learning:https://developer.download.nvidia.com/compute/machine-learning/repos
添加动态链接库软链接
上面安装后的动态链接库都在/usr/lib/x86_64-linux-gnu
下,虽然这个目录已经在 LD_LIBRARY_PATH
中了,但运行推理还是找不到的,因为名字不对,找不到,所以需要创建相应的软链接,这一步很简单,因为目录下已经有相应的带版本的软链接文件了,所以复制改名即可:
sudo cp /usr/lib/x86_64-linux-gnu/libcudnn.so.7 /usr/lib/x86_64-linux-gnu/libcudnn.so
sudo cp /usr/lib/x86_64-linux-gnu/libnvinfer.so.7 /usr/lib/x86_64-linux-gnu/libnvinfer.so
sudo cp /usr/lib/x86_64-linux-gnu/libnvinfer_plugin.so.7 /usr/lib/x86_64-linux-gnu/libnvinfer_plugin.so
sudo cp /usr/lib/x86_64-linux-gnu/libnvparsers.so.7 /usr/lib/x86_64-linux-gnu/libnvparsers.so
sudo cp /usr/lib/x86_64-linux-gnu/libnvcaffe_parser.so.7 /usr/lib/x86_64-linux-gnu/libnvcaffe_parser.so
再次推理发现就没有警告了。