我知道这个问题已经被问了很多次,但这些建议似乎都不起作用,可能是因为我的设置有些不同:
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
,但我尝试过的任何方法似乎都不起作用,任何建议将不胜感激。
对我来说,设置从
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/
这已经有了一个解决方案,但也许我可以为问题添加更多深度,并为必须从头开始安装这些东西的人(像我)提供描述。
很可能(从这些问题来看)你会来到这里,因为你安装了 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 来完成。
享受
解决方案:按照此处列出的步骤进行操作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/