无法加载动态库“libnvinfer.so.7”

问题描述 投票:0回答:3

我知道这个问题已经被问了很多次,但这些建议似乎都不起作用,可能是因为我的设置有些不同:

Ubuntu          22.04
python          3.10.8
tensorflow      2.11.0
cudatoolkit     11.2.2
cudnn           8.1.0.77
nvidia-tensorrt 8.4.3.1
nvidia-pyindex  1.0.9

创建了一个conda环境'tf',在目录

home/dan/anaconda3/envs/tf/lib/python3.10/site-packages/tensorrt
我有

libnvinfer_builder_resource.so.8.4.3
libnvinfer_plugin.so.8
libnvinfer.so.8
libnvonnxparser.so.8
libnvparsers.so.8
tensorrt.so

跑步时

python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
我明白了

tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7';
dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory;
LD_LIBRARY_PATH: :/home/dan/anaconda3/envs/tf/lib

tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7';
dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory;
LD_LIBRARY_PATH: :/home/dan/anaconda3/envs/tf/lib

tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

我猜我应该降级

nvidia-tensorrt
,但我尝试过的任何方法似乎都不起作用,任何建议将不胜感激。

tensorflow nvidia cudnn tensorrt
3个回答
24
投票

对我来说,设置从

libnvinfer
版本 7 到 8 的符号链接是有效的:

# the following path will be different for you - depending on your install method
$ cd env/lib/python3.10/site-packages/tensorrt

# create symbolic links
$ ln -s libnvinfer_plugin.so.8 libnvinfer_plugin.so.7
$ ln -s libnvinfer.so.8 libnvinfer.so.7

# add tensorrt to library path
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/env/lib/python3.10/site-packages/tensorrt/

10
投票

这已经有了一个解决方案,但也许我可以为问题添加更多深度,并为必须从头开始安装这些东西的人(像我)提供描述。

很可能(从这些问题来看)你会来到这里,因为你安装了 kohya_ss。

在我的情况下,机器没有一些必需的软件包(tensorflow和tensorrt),安装这些软件包会带来比 kohya_ss 预期更新的某些组件的版本。

当您看到此错误时,您可能缺少tensorflow和tensorrt(或者您已经拥有它,但版本不同)

# install tensor-runtime 
sudo apt install python3-pip -y
pip install tensorrt tensorflow

现在尝试以下命令看看上面的安装是否已经解决了问题:

python3 -c 'import tensorflow as tf; print(tf.__version__)' 

如果没有(如果上面的命令仍然抱怨这些丢失的文件),请理解上面的安装命令将在名为 ~/.local/... 的隐藏文件夹中安装tensorflow和tensorrt...这将包含以下版本您需要的文件,但版本号/文件名错误。

以下命令将找到另一个(错误的)版本及其路径:

find . -name libnvinfer.so* -print

这将为您提供以下形式的输出

.local/lib/python3.10/site-packages/tensorrt/libnvinfer.so.8

注意实际文件名之前的部分和cd

cd  ~/.local/lib/python3.10/site-packages/tensorrt/

键入以下命令。这将创建一个内容相同但名称不同的文件(缺少的名称)。

ln -s libnvinfer.so.8 libnvinfer.so.7

使用 libnvinfer_plugin.so.* 文件执行类似的查找命令

find . -name libnvinfer_plugin.so.* -print

对结果执行相同的步骤(这对您来说可能略有不同,但步骤与上面相同,即查找具有新名称的文件,转到该文件夹,创建缺少名称的链接):

 cd ~/.local/lib/python3.10/site-packages/nvidia/cuda_runtime/lib/
 ln -s libcudart.so.12 libcudart.so.11.0

将两个路径添加到 LD_LIBRARY_PATH 中,如下所示(仅是您在 cd 命令中使用的路径,而不是文件名):

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.local/lib/python3.10/site-packages/tensorrt/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.local/lib/python3.10/site-packages/nvidia/cuda_runtime/lib/

为了更好的措施,还添加安装程序抱怨的 /bin 路径:

export $PATH=$PATH:/home/sdgui/.local/bin

验证python3现在可以使用tensorflow而不会出现错误:

python3 -c 'import tensorflow as tf; print(tf.__version__)' 

希望有一条消息,但不要再发出有关丢失文件的警告。

然后,您可以将两个导出命令添加到 .profile 或 .bashrc 文件中。正如原发帖者的答案中所指出的。

此外,如果您已经全局安装了tensorrt(通过 sudo),您的 find 命令将需要是:

sudo find / -name libnvinfer.so* -print

步骤类似,只是使用全局路径并需要 sudo 来完成。

享受


9
投票

解决方案:按照此处列出的步骤进行操作https://github.com/tensorflow/tensorflow/issues/57679#issuecomment-1249197802.

将以下内容添加到 ~/.bashrc (对于我的场景中描述的 conda 环境):

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HOME}/anaconda3/lib/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HOME}/anaconda3/lib/python3.8/site-packages/tensorrt/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HOME}/anaconda3/envs/tf/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HOME}/anaconda3/envs/tf/lib/python3.8/site-packages/tensorrt/
© www.soinside.com 2019 - 2024. All rights reserved.