为 tensorflow 升级 CUDA 和 cuDNN 的最佳实践
Posted
技术标签:
【中文标题】为 tensorflow 升级 CUDA 和 cuDNN 的最佳实践【英文标题】:Best practice for upgrading CUDA and cuDNN for tensorflow 【发布时间】:2018-10-17 04:33:35 【问题描述】:我目前负责让 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-homepage 上所写,我必须使用 CUDA v9.0 和 cuDNN v7.1。由于所有这些说明都指的是全新安装而不是更新,我不确定是否最好先卸载旧版本。
如果您已经遇到过同样的问题,请分享您的经验。谢谢!
【问题讨论】:
【参考方案1】:感谢@joão gabriel s.f.我能够成功卸载 CUDA 8.0/cuDNN 5.1 并安装最新版本的 tensorflow。由于整个过程对我来说有点混乱,我决定发布一个快速演练,也许可以帮助处于相同情况的人。
卸载
首先,我卸载了 cuda 及其所有依赖项。当我通过包管理器安装它时,我使用了 apt-get 来删除它。对于运行文件的安装,您可以查看this。
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 headers和libs已经被删除。
安装
先检查显卡驱动。 CUDA 9.0 与 v384.111 驱动程序一起工作(因此不需要 390.xxx),所以我在这里无事可做。
我下载了 CUDA Toolkit 9.0 here 作为 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
之后我按照here 的描述验证了我的安装。
我从存档中下载了 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 并运行一个简单的图表。
再次感谢,祝您度过愉快的一周!
【讨论】:
【参考方案2】:见this documentation。他们说总是先从 cuda 中删除旧版本。
并且由于 cuda 9.1 需要驱动程序 >= 390 版本(检查 compatibility chart)。删除您当前的驱动程序会很好。 不过不用担心,因为 390 驱动程序在安装时附带了 cuda 9.1。
现在,作为个人建议,我想说删除与 nvidia / cuda 相关的几乎所有内容(不包括 python)。由于某些原因,在 Ubuntu 中安装和设置 CUDA 时很容易搞砸。
如果您在安装后有任何问题,请参阅ubuntu-16-04-lts-login-loop-after-updating-driver-nvidia,这是我之前回答的帖子。
【讨论】:
谢谢,我听从了您的建议,一切顺利。但是:对于 CUDA 9.0,您不必将驱动程序升级到 390.xxx,它适用于 384.xxx。我在回答中提到了这一点。 @DocDriven 抱歉,我的意思是 cuda 9.1。以上是关于为 tensorflow 升级 CUDA 和 cuDNN 的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章
3070ti 用啥版本的cuda,cudnn,以及tensorflow-gpu可以适配?
安装cuda9.0 + cudnn7.0 与 cuda8.0共存
Tensorflow 又要升级了。Nvidia驱动升级,牵一发而动全身