Tensorflow 2.12 - 无法在 WSL2 中加载库 libcudnn_cnn_infer.so.8

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

我已经在Windows 10中安装了WSL2(Ubuntu 22.04内核),Tensorflow 2.12Cuda Toolkit 11.8.0cuDNN 8.6.0.163在Miniconda环境(Python 3.9.16)中,通常并按照tensorflow.org官方推荐。我应该强调,我想使用 Tensorflow 2.12,因为使用相应的 Cuda Toolkit 11.8.0,它与 Ada Lovelace GPU(我的情况是 RTX4080)兼容。

当我去训练我的模型时,它给了我以下错误:

"Loaded cuDNN version 8600 Could not load library libcudnn_cnn_infer.so.8. Error: libcuda.so : cannot open shared object file: No such file or directory".

有什么想法出了问题吗*?

路径配置如下:

mkdir -p $CONDA_PREFIX/etc/conda/activate.d
echo 'CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh

使用以下命令搜索引用我的错误的文件:

  • ldconfig -p | grep libcudnn_cnn
    但它什么也没返回,所以文件不存在,并且
  • ldconfig -p | grep libcuda
    返回哪里
    libcuda.so.1 (libc6,x86-64) => /usr/lib/wsl/lib/libcuda.so.1

另外,我尝试设置新的环境变量并将其包含到

$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
但没有任何运气:

export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH

*请注意,导入 Tensorflow 时,我收到以下警告:

  • TF-TRT Warning: Could not find TensorRT
  • could not open file to read NUMA node:
        /sys/bus/pci/devices/0000:1c:00.0/numa_node Your kernel may have been built without NUMA support.
    

此外,尝试遵循 NVIDIA WSL 文档,具体见第 3 节 -> 选项 1,但这并不能解决问题。

python-3.x tensorflow miniconda cudnn
3个回答
9
投票

遇到这个问题,经过大量挖掘后找到了可行的解决方案。

首先,缺失的

libcuda.so
可以通过这里提出的方法解决:https://github.com/microsoft/WSL/issues/5663#issuecomment-1068499676

本质上是重建 CUDA lib 目录中的符号链接:

> cd \Windows\System32\lxss\lib
> del libcuda.so
> del libcuda.so.1
> mklink libcuda.so libcuda.so.1.1
> mklink libcuda.so.1 libcuda.so.1.1

(这是在管理员提升的命令提示符 shell 中完成的)

然后,当您遇到丢失设备的问题(毫无疑问您会遇到)时,请通过以下方式解决:https://github.com/tensorflow/tensorflow/issues/58681#issuecomment-1406967453

归结为:

$ mkdir -p $CONDA_PREFIX/lib/nvvm/libdevice/
$ cp -p $CONDA_PREFIX/lib/libdevice.10.bc $CONDA_PREFIX/lib/nvvm/libdevice/
$ export XLA_FLAGS=--xla_gpu_cuda_data_dir=$CONDA_PREFIX/lib

还有

$ conda install -c nvidia cuda-nvcc --yes

(通过

ptxas --version
验证)

如果您在 VSCode 远程 WSL 中运行笔记本,那么您需要将

export XLA_FLAGS=--xla_gpu_cuda_data_dir=$CONDA_PREFIX/lib
添加到
/$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
(无论如何,这是一个很好的做法)


0
投票

刚刚完成了“在 CUDA lib 目录中重建符号链接”部分,它适用于我的情况。 我应该去下面的部分吗?


0
投票

我能够净化新版本 11.8 的修复程序,而无需重新安装所有内容

第一个相同的解决方案,我认为这有时会破坏,你必须重新检查它:

> cd \Windows\System32\lxss\lib
> del libcuda.so
> del libcuda.so.1
> mklink libcuda.so libcuda.so.1.1
> mklink libcuda.so.1 libcuda.so.1.1

然后从此张量流链接轻松重新安装https://www.tensorflow.org/install/pip?hl=es-419#windows-wsl2_1

归结为

conda install -c conda-forge cudatoolkit=11.8.0
python3 -m pip install nvidia-cudnn-cu11==8.6.0.163 tensorflow==2.13.*
mkdir -p $CONDA_PREFIX/etc/conda/activate.d
echo 'CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
echo 'export LD_LIBRARY_PATH=$CUDNN_PATH/lib:$CONDA_PREFIX/lib/:$LD_LIBRARY_PATH' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
source $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
# Verify install:
python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

如果您必须重新安装所有内容,请在此步骤中小心https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local 版本不是 2.0,您必须将命令硬编码到版本 11.8

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

参考链接:https://www.tensorflow.org/install/pip?hl=es-419#windows-wsl2_1 https://docs.nvidia.com/cuda/wsl-user-guide/index.html

© www.soinside.com 2019 - 2024. All rights reserved.