无法让 Tensorflow 在 GPU 上运行

无法让 Tensorflow 在 GPU 上运行

你好,Ubuntu 社区,

我正在尝试训练一种新的深度语音模型,就像这样描述。如果我按照每个步骤操作,我就可以训练一个模型。但它是在我的 CPU 上训练的。我尝试在我的 ubuntu 18.04.05 系统上安装CUDA-10.2和/或CUDA-10.0使用运行文件。我添加了$PATH$LD_LIBRARY_PATH.bashrc文件当然,我安装了最新的相关 cudnn 库。我尝试了dpkg-i 命令命令,也可以通过解压档案并复制将文件复制到相关的 cuda 文件夹:

sudo cp ...-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P ...-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

但是它仍然无法在我的 GPU 上运行。如果使用 Anaconda,那么我创建一个这样的环境:

conda create -n my-env python=3.6 tensorflow-gpu=1.15.0

它在 GPU 被使用时起作用。不幸的是,它稍后会出错。我认为这个错误与一些 lib 版本问题有关。但无论如何,我想知道没有 conda 的问题是什么。我知道 conda 带有一个独立版本的 cuda/cudnn 并且正在自行进行链接。但我的链接出了什么问题。是否有任何明显的错误或缺少的步骤?我过去可以为 cuda 11.x 管理它,但这已经是几个月前的事了,上次也没那么难。我很高兴得到任何提示。

迈克尔

答案1

我过去遇到过类似的问题,经过一番挖掘,发现这主要是因为 Conda 倾向于使用与系统无关的自己的 CUDA 和 CUDNN 版本(因为这样可以减少问题)。

我个人强烈推荐使用mambahttps://github.com/mamba-org/mamba),因为我的速度更快,似乎更可靠,并且所有命令都只是替换。为此,只需安装“CUDN”,CUDA 就是它的依赖项,通过类似以下方式(conda为此使用,但如果您愿意,可以随意替换condamamba

conda install -c conda-forge cudnn cudatoolkit

如果您愿意的话,下面的内容应该可以让您在裸机上启动并运行(假设您使用的是 Ubuntu):

sudo apt install nvidia-cuda-toolkit
whereis cuda

从 Nvidia 下载 CUDNN 二进制文件(https://developer.nvidia.com/rdp/form/cudnn-download-survey

提取使用tar -xvzf path-to-binary

然后将其复制到 CUDA 安装文件夹中(确保它与的输出相对应whereis cuda),尽管我在这里给出一个例子:

sudo cp cuda/include/cudnn.h /usr/lib/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/lib/cuda/lib64/

接下来更改为正确的用户权限(全部+读取):

sudo chmod a+r /usr/lib/cuda/include/cudnn.h /usr/lib/cuda/lib64/libcudnn*

然后,您可以$PATH通过以下方式将所有内容添加到变量中:

echo 'export LD_LIBRARY_PATH=/usr/lib/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/lib/cuda/include:$LD_LIBRARY_PATH' >> ~/.bashrc

然后重新加载你的 shell,只需执行以下操作:

source ~/.bashrc

然后使用以下命令安装 TensorFlow pip

pip install tensorflow

对于这两种安装,请尝试以下操作以确保您能够使用 GPU。

进入 Python shell(类似于python3你的终端)

>>> import tensorflow as tf
>>> tf.config.list_physical_devices("GPU")
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

如果一切顺利,应该会有与上面类似的结果,如果你有超过 1 个 GPU,你可能会有更多结果。

希望有帮助!

相关内容