Dan*_*ege 27 nvidia tensorflow cudnn tensorrt
我知道这个问题已经被问了很多次,但这些建议似乎都不起作用,可能是因为我的设置有些不同:
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
Run Code Online (Sandbox Code Playgroud)
home/dan/anaconda3/envs/tf/lib/python3.10/site-packages/tensorrt在我的目录中创建了一个 conda 环境“tf”
libnvinfer_builder_resource.so.8.4.3
libnvinfer_plugin.so.8
libnvinfer.so.8
libnvonnxparser.so.8
libnvparsers.so.8
tensorrt.so
Run Code Online (Sandbox Code Playgroud)
跑步时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')]
Run Code Online (Sandbox Code Playgroud)
我猜我应该降级nvidia-tensorrt,但我尝试过的任何方法似乎都不起作用,任何建议将不胜感激。
小智 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/
Run Code Online (Sandbox Code Playgroud)
解决方案:按照此处列出的步骤进行操作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/
Run Code Online (Sandbox Code Playgroud)
这已经有了一个解决方案,但也许我可以为问题添加更多的深度,并为那些必须从头开始安装这些东西的人(比如我)提供描述。
最有可能(从这些问题来看)您会来到这里,因为您安装了 kohya_ss。
就我而言,机器没有某些必需的软件包(tensorflow 和 tensorrt),安装这些软件包会带来比 kohya_ss 预期更新的某些组件的版本。
当您看到此错误时,您可能缺少tensorflow和tensorrt(或者您已经拥有它,但版本不同)
# install tensor-runtime
sudo apt install python3-pip -y
pip install tensorrt tensorflow
Run Code Online (Sandbox Code Playgroud)
现在尝试以下命令看看上面的安装是否已经解决了问题:
python3 -c 'import tensorflow as tf; print(tf.__version__)'
Run Code Online (Sandbox Code Playgroud)
如果没有(如果上面的命令仍然抱怨这些丢失的文件),请理解上面的安装命令将在名为 ~/.local/... 的隐藏文件夹中安装tensorflow和tensorrt...这将包含该文件的版本您需要,但版本号/文件名错误。
以下命令将找到另一个(错误的)版本及其路径:
find . -name libnvinfer.so* -print
Run Code Online (Sandbox Code Playgroud)
这将为您提供以下形式的输出
.local/lib/python3.10/site-packages/tensorrt/libnvinfer.so.8
Run Code Online (Sandbox Code Playgroud)
请注意实际文件名和cd之前的部分。
cd ~/.local/lib/python3.10/site-packages/tensorrt/
Run Code Online (Sandbox Code Playgroud)
键入以下命令。这将创建一个内容相同但名称不同(缺少的名称)的文件。
ln -s libnvinfer.so.8 libnvinfer.so.7
Run Code Online (Sandbox Code Playgroud)
使用 libnvinfer_plugin.so 执行类似的 find 命令。* 文件
find . -name libnvinfer_plugin.so.* -print
Run Code Online (Sandbox Code Playgroud)
对结果执行相同的步骤(这对您来说可能略有不同,但步骤与上面相同,即查找具有新名称的文件,转到该文件夹,创建缺少名称的链接):
cd ~/.local/lib/python3.10/site-packages/nvidia/cuda_runtime/lib/
ln -s libcudart.so.12 libcudart.so.11.0
Run Code Online (Sandbox Code Playgroud)
像这样将两个路径添加到 LD_LIBRARY_PATH(仅是您在cd命令中使用的路径,而不是文件名):
find . -name libnvinfer.so* -print
Run Code Online (Sandbox Code Playgroud)
为了更好的措施,还添加安装程序抱怨的 /bin 路径:
.local/lib/python3.10/site-packages/tensorrt/libnvinfer.so.8
Run Code Online (Sandbox Code Playgroud)
验证 python3 现在可以使用 tensorflow 而不会出现错误:
cd ~/.local/lib/python3.10/site-packages/tensorrt/
Run Code Online (Sandbox Code Playgroud)
希望是一条消息,但不再有关于丢失文件的警告。
然后,您可以将两个导出命令添加到 .profile 或 .bashrc 文件中。正如原发帖者的答案中指出的那样。
另外,如果您已经全局安装了tensorrt(通过sudo),您的find命令将需要是:
sudo find / -name libnvinfer.so* -print
Run Code Online (Sandbox Code Playgroud)
步骤类似,只是使用全局路径并需要 sudo 来执行此操作。
享受
| 归档时间: |
|
| 查看次数: |
49207 次 |
| 最近记录: |