Win10深度学习环境搭建(TensorFlow/Pytorch)全流程

作者/编辑/配图 | 橘子   来源 | 橘子AI笔记(ID:datawitch)


如果从现在开始决定学习深度学习,写代码、搭建自己的模型,那么准备开发环境将是你艰难的第一步。橘子当时搜必应、查谷歌 忘了度娘吧,安装攻略没少看,结果真到自己上手实践的时候,依然碰到了不少问题。

本文将尝试站在萌新的视角,尽力还原这一过程中可能碰到的种种问题,希望它能指引着你顺利完成配置过程、帮你省下一些宝贵的时间。



01.

硬件准备

一个完整的深度学习GPU开发环境需要硬件和软件两方面的支持,在硬件部分,我将从GPU、CPU、散热、主板、电源、内存、硬盘和显示器几方面分别介绍。


GPU

深度学习需要进行大量矩阵运算,如果不考虑云端服务提供的TPU资源,一块足够好的GPU就是普通人的性价比之选。

目前最常用的是NVIDIA显卡,主要关注的GPU性能参数是显存CUDA计算能力

显存关系到你能训练多大的深度学习模型。8-11GB的显存对现阶段而言是够用的,预算充足的前提下,建议选择更高的显存。

显卡的CUDA计算能力会影响模型训练的速度。不同版本的TensorFlow要求不同,最新版本的最低要求是3.5以上

2020年Lambda推荐的显卡型号有:

RTX 2060 (6 GB): 如果你只是想在空闲时间玩玩深度学习模型。

RTX 2070/2080 (8 GB): 如果你是认真想做深度学习,但预算又非常有限。8 GB的显存能满足大多数模型的需求。

RTX 2080 Ti (11 GB): 如果你是认真想做深度学习,并且预算稍高一些。RTX 2080 Ti比RTX 2080提速40%。

Titan RTX/Quadro RTX 6000 (24 GB): 如果你需要频繁使用当下最好的深度学习模型,但没有足够的预算购买RTX 8000。

Quadro RTX 8000 (48 GB): 你在为未来投资!甚至有可能幸运地在今年就研究出下一个最先进的深度学习模型。

你也可以选择购买二手的GTX 1080ti (11 GB)


CPU

首先要明确的是,相比于GPU,深度学习并不那么需要高性能的CPU,在运行深度神经网络时CPU承担的运算量很少,所以挑选CPU不是越贵越好

在深度学习任务中,CPU主要承担的工作是数据预处理。为了不让这一步成为瓶颈,至少保证每个GPU能对应4个CPU线程,CPU主频最好在3.6 GHz以上


散热

不可忽视的环节。一般GPU温度达到80℃就会触发保护、降低性能。因此无论是选择风冷还是水冷,必须要配备散热系统

另外,由于NVIDIA显卡首先都是游戏显卡,已经针对Windows操作系统做了优化,可以很方便地在Windows系统中更改风扇相关选项。而大部分深度学习库都是为Linux操作系统写的。这一矛盾我将在之后提供一种解决方案。


主板

没什么特别的,保证有足够的PCIe端口


电源

将GPU和CPU的功率相加乘以110%就是最低要求。保证有足够的PCIe端口。


内存

记住一个原则:内存应该大于显存

理想情况是配备32 GB及以上的内存,如果预算有限,那么16 GB也可以接受。


硬盘

主要关注的性能参数是存储容量读取速度

其中,存储容量决定了你能用多大的数据集,读取速度会影响到训练过程中的I/O操作

固态硬盘(SSD)的读取速度显著超过普通机械硬盘,建议选择一块256 GB以上的SSD。


显示器

既然是做数据分析而不是做设计,没什么特殊要求,够用就行。而根据经验,多一个显示器可以用来打游戏 显著提升你的工作效率。

橘子目前使用的工作站配备了Intel Xeon CPU,NVIDIA GTX 1080ti (11 GB) GPU,16 GB内存以及256 GB的SSD。

这个配置大概是什么概念呢?

在这台电脑上训练一个拥有10,484,994参数的深度卷积神经网络,大致需要7分38秒。



02.

软件准备

假设你已经有了足够好的电脑,接下来需要安装:

MinGW-w64 MSYS2– 用于在Windows下搭建类Unix环境(也就是上文提到的解决方案:Windows、Linux,一个都不能少~)

NVIDIA显卡驱动– 允许系统使用GPU带来的运算加速

Visual StudioWindows 10 SDK– CUDA需要,如果不提前装好,CUDA安装程序也会在最后一步提醒你的

CUDA Toolkit– GPU C语言库,为高性能GPU加速应用程序提供开发环境

cuDNN– 基于CUDA,深度学习使用的GPU加速基元库

Python pip– 机器学习领域最常用的编程语言及其包管理工具

Pytorch/TensorFlow– 两个都是主流的深度学习框架,可以二选一

为了以后更好的编程体验,你还会需要:

Sublime Text– 文本编辑器,用来写代码和看代码,换一个同类的也可以

Jupyter Notebook– 以网页的形式打开,可以在浏览器页面中直接写代码、运行代码,运行结果也会直接在代码块下显示


安装MinGW-w64和MSYS2

我想了想决定把这一步提到最前面。因为一旦类Unix环境配置好,后续操作就可以在Powershell中无缝使用Linux系统的常用命令,体验非常顺畅。

Win 10 (64位) 的用户请在MSYS2官网下载页面选择msys2-x86_64的安装包。

下载安装完成之后,打开MSYS2,在窗口中输入以下命令安装:

pacman -S mingw-w64-x86_64-gcc

(可选)以上一步安装的gcc为例如果还需要安装其他Linux库,可以先输入以下命令查询,mingw-w64-x86_64-gcc可替换为其他任何库的名称:

pacman -Ss mingw-w64-x86_64-gcc

查询之后安装命令同前

在搜索框中搜索「编辑系统环境变量」,「系统属性」–「高级」中选择「环境变量」

将MSYS2相关的三个目录(如图)添加到「系统变量」的「Path」中。

以后类似的步骤如何添加环境变量就不再重复啦

这样就可以在Powershell中使用Linux命令了。


安装NIVIDIA显卡驱动

在NVIDIA官网可以按照GPU型号下载最新的显卡驱动程序。如果已经安装,强烈建议你在开始下一步之前先检查更新。

在开始菜单图标上右键「Windows Powershell (管理员)」,以管理员身份打开Powershell,进入nvidia-smi所在目录:

cd ‘C:\Program Files\NVIDIA Corporation\NVSMI’

以后打开Powershell都默认管理员,不再重复

运行「nvidia-smi」命令:

.\nvidia-smi

可以看到当前显卡的型号、显存、驱动版本以及正在使用显卡的进程。后续安装了CUDA之后,也可以看到CUDA版本。

如果这个命令不起作用,请先检查你的显卡驱动有没有安装好。


Visual Studio和Windows 10 SDK

在开始安装CUDA之前,先检查一下自己电脑上有无Visual Studio和Windows 10 SDK。在VS官网选择Community版本。

安装程序还会进行两次下载,需要耐心等待。

两次下载完成后,为了后续安装和测试CUDA,「使用C++的桌面开发」和「Windows 10 SDK」两项是必须安装的,其他组件可以看个人需要。

安装CUDA Toolkit

根据当前显卡驱动版本,选择对应的CUDA版本。最新版本的TensorFlow (>= 2.1.0)支持CUDA 10.1,需要显卡驱动版本高于418.x。

这里列出了所有CUDA版本的下载链接,以CUDA 10.1为例下载本地安装包。

双击下载好的文件,安装过程会自动开始。

安装过程中,软件协议选择「同意并继续」

选择默认的「精简」模式,然后下一步。

如果跳出Windows安全中心的提示,继续「安装」

最后一步会检查Visual Studio,如果前面已经安装好,就没有问题,按要求重启电脑。

正常安装完成后,CUDA的目录应该已经存在于系统环境变量「Path」中,为了保险可以检查一下。

打开图中目录,根据你的Visual Studio版本打开对应的文件,比如我选择「nbody_vs2017.sln」

注意「ProgramData」可能是隐藏文件夹,在「文件」–「查看」里勾选「隐藏的项目」就显示了。

选中「nbody」,菜单栏中选生成解决方案。

在「输出」栏中得到下图结果说明生成成功。

在Powershell中输入以下命令打开nbody目录:

cd ‘C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\bin\win64\Debug’

运行nbody:

.\nbody.exe

运行成功结果如图,可以看到CUDA使用的GPU。

在CUDA的官方文档中有更详细的安装步骤说明。

安装cuDNN

接下来安装cuDNN。进入cuDNN网站页面并选择「download」之后会要求登录。

注册一个NVIDIA账号即可。

按照当前CUDA版本选择对应的cuDNN版本下载。

将下载好的压缩包解压,分别替换到CUDA目录下对应的文件夹中(这步操作需要管理员权限)

在Powershell中检查cuDNN版本需要两步:

cd ‘\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include’

cat cudnn.h | grep CUDNN_MAJOR -A 2

运行结果中对应的三个数字就是cuDNN的版本号,如图cuDNN版本为7.6.5。

安装Python和pip

在Python官网下载所需安装包,需要哪个版本可以看深度学习框架的要求,比如TensorFlow 2.0要求Python版本为3.5-3.7。

我安装的是Python 3.6.7。

完成后在Powershell中输入「python」,如果出现如下界面说明安装成功,quit()退出。

在pip官网文件列表中下载.tar.gz安装包。

在Powershell中,先用「cd」命令打开安装包所在目录,然后输入如下命令解压:

gzip -dv pip-20.0.2.tar.gz

tar -xf .\pip-20.0.2.tar

解压之后输入如下命令,回车,将自动安装pip:

python setup.py install

输入以下命令可查看pip是否可用:

python -m pip –version


安装Pytorch或TensorFlow

- Pytorch -

在Pytorch官网查询安装最新版本Pytorch的「pip」命令。如果需要旧版本的pytorch查这里,在Powershell中输入对应的命令即可安装。

如果安装过程中因为网络问题超时报错,橘子在文末提供了适用于Python 3.6、Pytorch 1.3.1的.whl文件,使用方法是在Powershell中「cd」到.whl文件所在目录,然后敲以下命令:

pip3 install .\torch-1.3.1-cp36-cp36m-win_amd64.whl

安装完成后可以输入如下命令验证:

python -c 'import torch; print(torch.Tensor([1]))'

如果结果是「tensor([1.])」说明安装成功。


- TensorFlow -

在TensorFlow官网可以找到最新版本和以前版本的TensorFlow。与Pytorch类似,有两种安装方式,第一种是使用「pip」直接安装:

pip3 install --upgrade tensorflow

第二种是下载.whl文件并安装,橘子使用的是适用于Python 3.6的、TensorFlow 2.0.0的.whl文件:

pip3 install .\tensorflow_gpu-2.0.0-cp36-cp36m-win_amd64.whl

安装完成后可以输入如下命令验证:

python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

安装成功的结果如下。

安装Sublime Text

直接从Sublime Text官网下载安装就好。

安装及配置Jupyter Notebook

在Powershell中输入如下命令安装Jupyter:

pip install notebook

除了文档中写的Jupyter Notebook运行方法,在Windows中还可以写一个.bat文件,简单三步就可以将Jupyter notebook运行目录改到任何位置:

1、打开Powershell并输入如下命令,生成文件「C:\Users\lenovo\.jupyter\jupyter_notebook_config.py」记录默认配置(「lenovo」替换为你电脑中的用户名)

Jupyter notebook --generate-config

2、使用Sublime Text打开这个文件。

3、用快捷键「Ctrl+F」找到如下行:

#c.NotebookApp.notebook_dir = ‘’

去掉「#」注释,把你想要的目录写进去,比如在D盘新建一个目录叫「jupyter」

c.NotebookApp.notebook_dir = ‘D:/jupyter’

这三步操作完之后,打开Jupyter的默认方式是先「cd」到这个配置好的目录,然后输入「jupyter notebook」

这种方法有点麻烦,更省事的办法是写一个.bat文件,无论这个文件放在哪,下次想要打开Jupyter的时候只要以管理员身份运行这个文件就可以了。

例如,打开Sublime Text新建一个文件,写入如下语句并将文件存为「open_jupyter.bat」

@echo off

D:

cd jupyter

jupyter notebook

成功在浏览器打开Jupyter Notebook并新建一个Python 3文件的效果。

03.

最后的总结

目前为止,橘子已经尽力回忆了安装过程中可能遇到的所有坑,但毕竟没法面面俱到。框架一直在更新换代,而我永远不知道哪里会出现新的问题。

如果你按照本文的步骤依然碰到了问题,我诚恳地建议你,在开口问之前先自己去查,因为搜索引擎和Stack Overflow大概率会给出答案。


这里有份重点可以帮你避开大部分坑(敲黑板):

更新NVIDIA显卡驱动为最新

始终以管理员身份打开Powershell

安装CUDA之前检查一下电脑上有没有装好Visual Studio和Windows SDK

根据NVIDIA显卡支持的CUDA版本选择对应的cuDNN、Pytorch/TensorFlow

确定Python版本与CUDA、cuDNN和深度学习框架兼容

报错时优先检查Windows系统环境变量



参考资料:

https://lambdalabs.com/blog/choosing-a-gpu-for-deep-learning/

https://timdettmers.com/2018/12/16/deep-learning-hardware-guide/

https://stackoverflow.com/questions/30069830/how-to-install-mingw-w64-and-msys2


- End -

谢谢你看完全文哟 ღ( ´・ᴗ・` )

橘子AI笔记

发现数据之美,探索自然之道

你可能感兴趣的:(Win10深度学习环境搭建(TensorFlow/Pytorch)全流程)