上文才搭建好了Pytorch环境,这次获得了一篇论文源码,其中用到的是Tensorflow环境,为了复现论文结果,只好再搭建一个Tensorflow环境。
首先论文中给出的环境信息是,Tensorflow 1.13 以及 Python 3。这个提示太少了,以至于一不小心就会踩坑。
首先在Anaconda中创建了一个名为Tensorflow113_py36的新环境,从名字可以看出这个环境的Tensorflow版本以及python版本。
更新:如果电脑上已经安装好了Anaconda,安装Tensorflow只需要一条命令就解决:
conda install tensorflow-gpu=1.13.1
注意别漏了后面的“-gpu”,不然就会安装成cpu版本。原文作者没说清是gpu还是cpu版本,但是从源码中看到使用到了GPU,因此安装gpu版。
有其他版本需求的,可以通过这条命令搜索所有支持一键安装的tensorflow-gpu版本
conda search tensorflow-gpu
执行后就会自动开始安装tensorflow-gpu以及所依赖的所有包,包括CUDA、cuDNN,不用额外操心。最后通过这篇博客中的方法测试即可:win10搭建tensorflow-gpu-1.13.1环境(含原生python和anaconda共存问题解决)亲测有效! | 码农家园
思考
Anaconda提供了一个完全隔离的环境,因此像下文这样哼哧哼哧往电脑环境里安装CUDA和cuDNN完全毫无意义,因为Anaconda里创建的隔离环境根本读取不到电脑里装的环境。这种教你往电脑本地装cuda和cudnn的方法也是网上大多数教学贴犯的经典错误,希望这种错误可以止于我的这篇文章。
会出现这种错误,归根结底是对Anaconda这种环境管理工具理解不深。有了Anaconda后,就不需要再往电脑里安装任何原生的python、cuda、pytorch等等乱七八糟的东西,一切都通过一条安装命令,安装到anaconda的隔离环境中即可,电脑系统清爽干净,只留一个Anaconda就可以。
(以下内容全部作废,以上面的正确做法为准)
1、下载Tensorflow
因为原作者对于python版本语焉不详,导致我踩到了第一个坑。我习惯性的用了python3.6版本,然后在使用pip install tensorflow-gpu==1.13.0命令时,开始报错
ERROR: Could not find a version that satisfies the requirement tensorflow-gpu==1.13.0
ERROR: No matching distribution found for tensorflow-gpu==1.13.0
然后后面还列举了一堆可供安装的tensorflow-gpu版本,都是从1.20版本开始往上,我不经怀疑难道服务器里已经下不到1.13版本的tensorflow了?在stackoverflow里也没有找到搜索结果,后来尝试把python版本提升到3.7以后,版本选择里才看到有1.13.0版本,真是稀奇。可以用这个pip命令查看某个包可供下载的全部版本信息。
pip install tensorflow-gpu==
"=="后面补全就是下载对应版本的包了。
另外注意,不要直接pip install tensorflow,这个下载的是用CPU训练的tensorflow。原文也没说清是tensorflow还是tensorflow-gpu,但是我看源码中用到了GPU,就猜测是下载tensorflow-gpu这个包。
2、下载CUDA
因为Pytorch里已经内置了CUDA,所以之前我并没有单独安装CUDA。这次为了Tensorflow训练,我需要单独下载一个CUDA包。CUDA版本和显卡驱动没有严格一一对应关系,显卡驱动越高越好,向下兼容CUDA版本。CUDA只是个工具包,一台电脑可以安装很多版本。
有的教程说可以用nvidia-smi命令或者在NVIDIA控制面板中查看自己电脑的CUDA版本,这个说法是不严谨的,这里显示的cuda版本只是【可安装的最大cuda版本】,不是电脑中【已安装的CUDA版本】。
通过查阅tensorflow支持的cuda版本的表格,得知我们tensorflow-gpu 1.13.0需要安装CUDA 10.0版本。对照表链接如下:
https://www.tensorflow.org/install/source_windows
CUDA 10.0的官方下载地址如下:
CUDA Toolkit 10.0 Download | NVIDIA Developer
安装时,会像驱动程序一样默认安装在C盘。如果想更改安装目录,选择“自定义”,然后更改安装目录,记得把不需要的勾勾去掉。
进入cuda的bin目录下,在地址栏输入cmd,打开该目录下的命令提示行,输入
nvcc -V
显示如下信息说明安装成功:
3、下载cuDNN
cuDNN是一个神经网络加速包,和CUDA版本需要对应。但是一个CUDA版本可能对应好多版本的cuDNN包,选择最新的即可。
cuDNN Archive | NVIDIA Developer(需登录nvidia账号才能下载)
我下载的是cuDNN v7.6.5,下载下来后是个zip压缩包。安装方式也很简单,解压缩后得到一个名为cuda的文件夹,把里面的文件夹(bin、include、lib)都复制到上面安装的cuda目录下,有覆盖提示就选是。(我第一次安装没有弹出重复文件需要替换的)
进入cuda中的extras\demo_suite目录下,在地址栏输入cmd,打开该目录下的命令提示行,输入bandwidthTest.exe和deviceQuery.exe检查是否安装成功:
两个都pass都即可说明安装成功。
4、测试
最后通过这篇文章提供的代码来测试CUDA和GPU是否可用:
win10搭建tensorflow-gpu-1.13.1环境(含原生python和anaconda共存问题解决)亲测有效! | 码农家园
更新:
似乎可以通过conda命令直接安装cuda和cuDNN,有待测试
conda install cudatoolkit=10.1
conda install cudnn=7.6.5
pip install tensorflow-gpu==2.3.0