tensorflow-gpu1.8.0+win10+vs2017+CUDA9.2 安装——从挖坑到跳坑到出坑
开始正事。想装python下的tensorflow-gpu,本人刚开始学机器学习,想着反正有Nvidia显卡,不如装个gpu版本的tensorflow,挖坑之旅由此开始,相信既然搜索者相关内容的同志们一定感同身受,我也就不多说废话了,直接讲讲怎么出坑,但愿以下经验能够帮助到你们!
一、本机配置
win10 64位 + NVIDIA GeForce GTX 950M(不用猜了,m结尾,我的电脑是笔记本)
二、安装vs2017
我的vs2017版本是15.6.7
为了安装下面提到的CUDA9.2,我们可以看一下CUDA的安装指南,看一下它支持什么系统,什么版本的vs,以下是链接:
https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html
可以看到,cuda9.2支持64位win10 和vs2017的update6。其实我也不知道update6是不是我vs15.6.7这个版本号里的数字6的含义,反正我就是这么装了这个vs版本。
社区版链接下载地址点击此文字:https://aka.ms/eac464
历史版本下载见巨硬官网链接,往下拉既能看到vs2017历史版本的下载:https://docs.microsoft.com/en-us/visualstudio/productinfo/installing-an-earlier-release-of-vs2017#top
这个是要联网的下载,离线安装请自行百度。
安装的时候我们要勾选那些呢?
上图是我选的,其中勾选的win10SDK一定勾上,因为我在安装完CUDA9.2之后测试官方案例时,一开始就因为缺少这个没编译成功。仅供参考,因为我也只是知其然不知其所以然。有待于以后继续学习。
安装完之后,vs2017就暂告一段落。
二、安装CUDA9.2
下载CUDA9.2,官网下载地址:https://developer.nvidia.com/cuda-toolkit-archive
选择 CUDA Toolkit 9.2 (March 2018)
然后选择windows、x86_64、10、exe(local) 并下载(可供下载的有Base Installer 和 Patch 1 (Released May 16, 2018)我们都下载下来),下载的文件是cuda_9.2.88_win10.exe和cuda_9.2.88.1_windows.exe
下载完之后的cuda_9.2.88_win10.exe是可执行文件,但是我们可以用WinRAR将这个exe解压。(注意:是将这个exe解压,后面要用到,仅仅解压cuda_9.2.88_win10.exe)
进入解压后的cuda_9.2.88_win10文件夹,有setup.exe,你直接双击下载的cuda_9.2.88_win10.exe也行,只是双击cuda_9.2.88_win10.exe,它也是需要解压的,浪费时间,既然我们以及解压了,就不要麻烦程序再解压一遍了,还费时间。
重点来了!!!!!!!
此处默认你的电脑已经装好了显卡的驱动(包括GForce Experience等等)
安装程序选择自定义安装(我之前选了精简安装,后面没装成功,连自己本身电脑的显卡驱动都坏了,重新下显卡驱动也装不上,还好我之前对c盘有过备份),我们只勾选CUDA里的Development、Runtime、Documentation、Samples。不要勾选Visual Studio Integration。按理说不勾选Visual Studio Integration之后是能顺利完成的。
安装完毕后,我们打开cuda_9.2.88_win10.exe解压后cuda_9.2.88_win10的文件夹,进入到\cuda_9.2.88_win10\CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions路径下,有四个文件,将所有文件拷贝到VS的对应目录下,参考路径如下:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations
然后我们双击下载的另一个exe文件:cuda_9.2.88.1_windows.exe,这应该是一个补丁文件,修复cuda_9.2.88_win10.exe中的一些问题的。
CUDA9.2安装完毕。
三、安装cudnn
下载地址:https://developer.nvidia.com/rdp/cudnn-archive
选择 Download cuDNN v7.1.2 (Mar 21, 2018), for CUDA 9.1 & 9.2
因为CUDA是9.2版本,对应cudnn的版本是7.1.2
解压cudnn-9.2-windows10-x64-v7.1.zip,将文件夹里的内容拷贝到CUDA的安装目录并覆盖相应的文件夹,CUDA拷贝目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2
四、测试Samples
打开目录:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.2\5_Simulations\nbody
这是官方的一个案例项目:nobody
找到nbody_vs2017.sln,用vs2017打开,编译(此时编译就用到了之前安装vs2017勾选的那个SDK),编译之后的效果如下:
其他案例没能成功,参照博主【月光轩辕】所说:“CUDA中自带了很多Sample,但是部分Sample依赖了第三方库,所以很多Sample无法正常编译(如0sample中有项目依赖了mpi,还有一个项目依赖了DirectX),我刚开始的时候尝试去编译所有的samples,被这些多出的依赖搞的焦头烂额,但是最后发现毫无必要,我当时真的是太蠢了。”
多亏了该博主之前的尝试,让我没才能不钻这个死胡同,不然按我的性子,没编译成功肯定会认为是那里没安装正确。深表感谢!
五、安装tensorflow-gpu1.8.0
采用的安装包是地址是:https://github.com/fo40225/tensorflow-windows-wheel/tree/master/1.8.0/py36/GPU/cuda92cudnn71sse2
下载下来之后 用pip安装这个whl文件,需要连网,因为会有其他的相关的库会自动下载
这个安装你要不会,我觉得你该从python基础去学了。
六、验证此时的tensorflow的代码是否是在使用GPU
以下代码也是我从网上找的,不是自己写的,如有冒犯告知删除。
首先看看tensorflow是不是正常安装并可以导入了:
代码一:查看tensorflow是不是正常安装并可以导入了
进入终端:cmd——> python 进入到python环境后,输入以下代码:没有报错,表明安装成功。
import tensorflow as tf
a = tf.test.is_built_with_cuda() # 判断CUDA是否可以用
b = tf.test.is_gpu_available(
cuda_only=False,
min_cuda_compute_capability=None
) # 判断GPU是否可以用
print(a)
print(b)
输出结果是:
True
True
代表CUDA和GPU可用
代码二:
import tensorflow as tf
#Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
#Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
#Runs the op.
print(sess.run(c))
输出结果是:[[22. 28.]
[49. 64.]]
代码三:直观的看出代码有没有在使用GPU
import tensorflow as tf
with tf.device('/cpu:0'):
a = tf.constant([1.0, 2.0, 3.0], shape=[3], name='a')
b = tf.constant([1.0, 2.0, 3.0], shape=[3], name='b')
with tf.device('/gpu:1'):
c = a + b
# 注意:allow_soft_placement=True表明:计算设备可自行选择,如果没有这个参数,会报错。
# 因为不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,将会报错。
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True))
# sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(tf.global_variables_initializer())
print(sess.run(c))
先不急着运行,打开任务管理器,点击 性能 ,找到你自己英伟达显卡的GPU那一栏,点击一下,可以显示GPU的利用情况,正常情况下你没运行什么程序,GPU利用率什么的都是0,没有波澜,然后你运行代码三,会发现GPU利用率开始变化了,如下图:
至此,大功告成!愉快的玩耍吧!
(一)检查Anconda是否安装成功:
进入终端:cmd——> conda --version
(二)查看CUDA版本:进入终端:cmd——> nvcc -V
(三)检查安装了哪些环境变量:进入终端:cmd——> conda info --envs
(四)查看Pytorch是否安装成功解决办法进入终端:cmd——> python 进入到python环境后,输入以下代码:若运行没报错,输出相应的信息,则表示安装成功
import torch # 如正常则静默
a = torch.Tensor([1.]) # 如正常则静默
a.cuda() # 如正常则返回"tensor([ 1.], device='cuda:0')"
from torch.backends import cudnn # 如正常则静默
cudnn.is_acceptable(a.cuda()) # 如正常则返回 "True"
(五)如何查看电脑安装的pytorch/tensorflow版本???(windows和ubuntu系统通用)
1.输入cmd进入终端
2.输入python,进入python交互环境,然后输入下面两行代码
例如:windows系统,查看tensorflow的版本:
查看pytorch的版本:
>>>python
>>>import torch
>>>torch.__version__
例如:windows系统
例如:ubuntu系统
查看系统启动模式:
“Win+R”打开运行,输入msinfo32,回车查看系统信息。
在BIOS模式中显示“传统”,表示系统方式为:Legacy BIOS;如果为UEFI,则显示UEFI。
册除ubantu EFI分区:
1、“cmd” →“Diskpart”→“list disk”(显示磁盘列表。表明只有一个磁盘)——> “select disk 0”→ “list patition” (磁盘分区列表) → “select partition X ”(选择要删除分区)→“delete partition override”(删除所在分区)。
将U盘格式化为NTFS格式:
1.插好U盘,“cmd”→“convert g:/fs:ntfs”→ 按下Enter等待转换完成.
【16、耐心和恒心总会得到报酬的。】