升级tensorflow所需的CUDA和cuDNN最佳实践

18

我目前负责让tensorflow-gpu 1.8在我的机器上工作。 我一直使用tf-gpu 1.2,但由于需要某些功能,我必须升级安装。

在这样做之前,我想检查是否有最佳实践方法。 我当前的设置如下:

  • Ubuntu 16.04
  • NVIDIA GeForce GTX 1080 Ti
  • NVIDIA驱动程序版本:384.111
  • Python 3的Anaconda 4.4.0
  • CUDA v8.0
  • cuDNN v5.1
  • tensorflow-gpu v1.2

正如tf主页上所写,我必须使用CUDA v9.0以及cuDNN v7.1。由于所有这些说明都是针对干净的安装而非更新,因此我不确定是否最好先卸载旧版本。

如果您曾经遇到过相同的问题,请分享您的经验。谢谢!

2个回答

20

感谢 @joão gabriel s.f.,我成功卸载了CUDA 8.0/cuDNN 5.1并安装了最新版本的Tensorflow。由于整个过程对我来说有点混乱,所以我决定发布一个快速指南,或许能帮助处在同样困境中的人。

卸载

首先,我卸载了CUDA及其所有依赖项。由于我是通过软件包管理器安装的,所以使用apt-get进行卸载。对于运行文件安装,您可以查看此链接

sudo apt-get --purge remove cuda
sudo apt-get autoremove
dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge

另外,我检查了 /usr/local/ 下的任何cuda文件夹并将它们删除。关于cuDNN,在删除所有cuda文件夹后,相应的cuda头文件和库也已被删除。

安装

首先检查显卡驱动程序。CUDA 9.0需要 v384.111驱动程序(不需要390.xxx),所以这里我没有做什么。

我从此处下载了CUDA Toolkit 9.0作为本地deb文件。在同一文件夹中,我执行了以下操作:

dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

然后设置环境变量:

export PATH=${PATH}:/usr/local/cuda-9.0/bin
export CUDA_HOME=${CUDA_HOME}:/usr/local/cuda:/usr/local/cuda-9.0
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-9.0/lib64

之后,我按照此处所述验证了我的安装。

我从存档中下载了cuDNN 7.1的tarball,并通过安装程序进行了安装。

tar -xzvf cudnn-9.0-linux-x64-v7.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h \ 
/usr/local/cuda/lib64/libcudnn*

在启动Python bash后,我能够导入tensorflow并运行一个简单的图表。

再次感谢,祝您有愉快的一周!


7

请参阅此文档。他们建议先移除旧版本的cuda。

由于cuda 9.1需要驱动程序> = 390版本 (请查看兼容性表),因此最好先卸载当前的驱动程序。 但不用担心,因为390驱动程序在安装cuda 9.1时也会一同安装。

现在,作为个人建议,我认为应该删除与nvidia / cuda相关的几乎所有内容(除了python)。在Ubuntu中安装和设置CUDA时很容易出错。

如果您在安装后遇到任何问题,请参见ubuntu-16-04-lts-login-loop-after-updating-driver-nvidia,这是我之前回答过的一个帖子。


1
谢谢,我听从了你的建议,一切都很顺利。但是:对于CUDA 9.0,您不必将驱动程序升级到390.xxx,它可以与384.xxx一起使用。我在我的答案中提到了这一点。 - DocDriven
@DocDriven 抱歉,我的意思是CUDA 9.1。 - joão gabriel s.f.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接