作者/编辑/配图 | 橘子 来源 | 橘子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 Studio和Windows 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笔记
发现数据之美,探索自然之道