在Windows 10 + Python 3.6.5 中用 pip 安装最新版 TensorFlow v1.8 for GPU
声明
什么cuDNN之类的安装,应该是毫无难度的,按照官网的教程来即可,除非。。。像我一样踩了狗屎运。咳咳,这些问题不是本文的关键。
本文的关键是解决pip安装tensorflow gpu版的问题。
安装环境
操作系统:64位的Windows 10 的1709版,
显卡:GTX 1080Ti
Python:3.6.5,64位
准废话
在网上查了很多资料,包括tensorflow官网的安装指南,然而总是报错:
Could not find a version that satisfies the requirement tensorflow-gpu (from versions: )
No matching distribution found for tensorflow-gpu
实在是想不明白,官网明明写着windows版支持python 3.6.x。。。然后我切换到3.5.x,竟然还是不行。。。Anaconda的方法也跪了。。。
官网还给出了版本要求不满足的问题的解决方法参考资料:
然而并没有什么卵用。。。所有的方法都试过了。只是给出的StackOverflow相关讨论里有种解决方法让我比较在意的:
官网要求用pip3来安装,但是不记得是在哪里看到的,貌似在没有python 2.x与python 3.x共存的情况下,pip3和pip似乎是一样的。
出于死马当活马医的念头,就试了一下改用pip安装,神了。。。玄学,竟然成功了一半!吐血。。。
再试试后面用在线的whl文件安装方式。。。竟然也是成功了一半。。。
但是呀,但是,这个版本也太低了吧。本着喜新厌旧的心态,我又在StackOverflow上找到了一个链接:
https://storage.googleapis.com/tensorflow
这个链接貌似有维护着类似这个链接的whl文件,
$ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl
打开之后搜了一下,没有发现有对应的windows的gpu版本。。。
怒了。。。直接去pypi官方搜tensorflow-gpu的包,竟然有找到。。。谷歌和windows什么怨什么仇。。。
快告诉我这是什么?!!!
既然是用Windows 10,而且是64位的系统和64位的 Python 3.6.5,那么自然应该选择上图中红色的版本:
tensorflow_gpu-1.8.0-cp36-cp36m-win_amd64.whl
至于为什么选择这个whl包,和它的命名规范有关,请参考:《Python Wheel 包命名规则和 ABI 兼容》https://segmentfault.com/a/1190000007591736 。
好,表演开始:
正片
第一步,安装tensorflow-gpu
额。。。tensorboard。。。怎么又是成功了一半。。。
这里报错的意思是找不到满足要求的 tensorboard 版本,要求小于1.9.0,大于等于1.8.0版本。
第二步,安装tensorboard
试试pip直接安装:
果然还是不行。。。
再试试whl大法:
这是什么?快告诉我!!!tensorboard 1.8.0,这不是有满足要求的包吗?虽然我用的是清华开源镜像,但是经过检查,镜像里也有这个包,怎么就不满足版本要求了?
点进去之后选择相应版本的whl,复制其链接:
pip3 install <复制的链接>
哎哟,还是可以的嘛
第三步,继续安装tensorflow-gpu
和第一步相同,用whl方式继续安装tensorflow-gpu,注意这一步不要用什么--ignore-installed的参数。。。
看来是成了?
注意这里假设你已经把CUDA / cuDNN之类的装好了。
来一小段代码试试:
import tensorflow as tf print(tf.__version__) sess = tf.Session() a = tf.constant([1.0, 2.0]) b = tf.constant([3.0, 4.0]) c = a * b print(sess.run(c)) sess.close()
如无问题,应该会打印出类似下面的结果:
注意:
- tf.Session()调用之后可能需要等一段比较长的时间才会有反应。
- 如果在import tensorflow阶段就报错了,说明还没正常安装或者配置好。
怎么样?
不过这个版本很新,哈哈哈,不知道会不会有什么问题,之前在StackOverflow上看到的https://storage.googleapis.com/tensorflow 上给出的 windows gpu 版本是1.2版本的(说不定是他们写错了?),可是不知道为什么,后来windows gpu版本在链接中给出的xml文件里完全找不到了,只剩cpu版,可能是有坑还是什么的,使用的时候还请各位要多加小心,虽然我知道你们都是用linux的,哈哈哈,我的linux滚动更新挂了,莓办法。
关于CUDA® Toolkit 9.0 安装的坑
这坑比浪费了我很多时间,如果你用的是 Visual Studio 2017 ,恭喜你,很有可能安装失败,CUDA安装包自带的 Visual Studio Integration 组件每次安装都是失败的,导致整个CUDA安装都被回滚。
只能在安装时选择自定义,然后取消选中Visual Studio Integration 组件。
还有就是如果之前已经装了更加新版的Nvidia显卡驱动或者CUDA或者Nsight时,卸了吧。Nsight也是个坑比,在Win10没法直接卸载,官网的卸载说明也只有一句话,叫你去控制面板自己卸载。。。但是那样是不行的,至少我这有个血淋淋的案例,你只能先卸载VS2017,否则Nsight卸载不掉,甚至你想卸载VS2017都会卡住,不知道有没有更好的方法。如果卸载VS2017卡住了,可以用VS自带的特殊卸载工具 InstallCleanup.exe 来卸载,而且更快。详细说明见:https://docs.microsoft.com/en-us/visualstudio/install/remove-visual-studio
被Nsight折腾惨了的我,此刻唯有这幅图能表达我的心情!