搭建环境是学习深度学习技术的第一步。很多朋友在这个阶段碰到了很多问题,原因很多,首先这和个人的计算机水平有关,其次深度学习的更新很快,当然深度学习环境变化也很大, 再次网络上相关文章品质一般 希望看了这篇文章之后大家能对深度学习环境有个深入理解,只要有一定计算机基础,理解这篇文章难度不大
如果能走好这第一步,相信找个AI相关的工作,难度不大
1. 硬件配置
硬件方面主要说两个方面, 1. NVIDIA公司的显卡 2. 硬件配置
1)NVIDIA的显卡是硬件方面必须的配置了。 看一下NVIDIA的显卡天梯图:
这个看个人想要投入的成本, 建议至少选择终端显卡。从天梯图中也能看到不同显卡的性能比较,条件允许当然选择更好的,例如GTX1080TI.
另外入门的话并不需要多卡环境,单卡已经能够应付99%的项目了
2) 整机配置
这里我举两个例子, 是我自己目前用的, 1个pc,1个笔记本
笔记本: cpu Intel i7, 内存32GB, 显卡NVIDIA Geforce GTX 1070
PC: cpu Intel i7, 内存32GB, 显卡NVIDIA Geforce GTX 1080Ti
这里需要注意的是移动版本的GTX1070和PC版本的GTX1070在计算能力上是有区别的,在NVIDIA官网上能查的到。
如果只配一台的话建议配置PC,因为深度学习模型一般训练时间都很长,笔记本发热会严重一些。 品牌个人推荐hp或者dell,其他品牌不推荐
2 软件配置
这也是大家遇到问题最多的地方。 主要问题还是相关软件迭代很快,cuda, cudnn, tensorflow, pytorch, caffe等等都在不断更新变化, 另外很多文章对软件之间的依赖关系没有清楚的描述,给大家造成很大困扰。接下来按照
操作系统-> 显卡驱动 -> cuda -> cudnn -> python -> tensorflow -> keras 的顺序依次介绍。(这里以tensorflow和keras框架举例)
1) 操作系统
一定要选择Ubuntu!!! 这是因为几乎所有的深度学习项目都是以Ubuntu为基础的,这是跟随趋势的选择。在其它软件的安装过程中会非常方便。
对于不熟悉Ubuntu系统的同学,这里是一个小门槛,不过只要计算机基础不差,上手Ubuntu是很容易的,接下来介绍上手Ubuntu需要学习的几点:
a. Ubuntu的文件系统,目录结构,文件的基本操作
b. Ubuntu的包管理系统, 主要是apt-get, apt-file这两个命令的使用
c. python第三方库的安装,主要是pip命令使用, python的基础语法
d. 熟练使用一个编辑器, 推荐vim
以上几点都不难,网上资源很多,相信稍微有些计算机基础三五天时间足够理解。
现在问题来了,我要选择Ubuntu的哪个版本??? 大家一定要注意以下软件之间都是强关联的, 这个问题很多文章都没有提,这里特别强调一下
操作系统-> 显卡驱动 -> cuda -> cudnn -> python -> tensorflow -> keras
操作系统的选择是依赖于cuda版本的, 这是nvidia官网上cuda各个版本的列表:
https://developer.nvidia.com/cuda-toolkit-archive
下图截取了一部分。cuda有很多版本,cuda版本的选择是强依赖tensorflow的版本的,具体我们在之后说明,这里假设我们选择了CUDA10.0
选择CUDA10.0之后的链接:
从Version上可以看到, CUDA10.0支持的Ubuntu版本是18.04, 16.04, 14.04. 此处建议选择18.04也就是相对最新版
以上解释了Ubuntu版本选择的问题,剩下就是Ubuntu安装盘的制作,系统安装,这部分比较容易,
在Ubuntu官网上下载ISO以及u盘安装盘制作工具即可。下面是官方安装指南
https://ubuntu.com/tutorials/tutorial-create-a-usb-stick-on-windows#1-overview
以上解释了如何选择ubuntu版本以及安装方式的问题
2) gpu 驱动程序安装
操作系统安装完毕之后,就需要安装gpu的驱动程序
问题又来了,gpu驱动程序应该选择哪个版本???废话不多说,看图
这是gpu驱动程序与cuda版本关系图, 假设我们选择了CUDA10, 那么gpu的驱动程序版本必须>=410.48
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
这是cuda与gpu driver版本关系图链接。这个图是选择gpu driver版本的依据。版本我们知道如何选择了,接下来如何安装gpu driver?
网上说过几个方法, 这里强烈推荐使用apt-get 命令安装:
apt-cache search nvidia -> 这是命令可以查看当前Ubuntu系统支持的gpu driver版本,以下是截取部分输出内容。nvidia-xxx 格式的包就是gpu driver, 如果我们选择了cuda10, 那么gpu driver选择nvidia-410及以上版本都可以,建议选择比较新的版本,nvidia-430
nvidia-304 - NVIDIA legacy binary driver - version 304.137
nvidia-410 - NVIDIA binary driver - version 410.78
nvidia-410-dev - NVIDIA binary Xorg driver development files
nvidia-415 - NVIDIA binary driver - version 415.27
nvidia-415-dev - NVIDIA binary Xorg driver development files
nvidia-418 - NVIDIA binary driver - version 418.56
nvidia-418-dev - NVIDIA binary Xorg driver development files
nvidia-430 - NVIDIA binary driver - version 430.64
nvidia-430-dev - NVIDIA binary Xorg driver development files
apt-get install nvidia-430 -> 使用此命令即可安装gpu driver
说明:
a. apt-get,apt-cache 命令需要做一下配置,方法到处都有,这里不说了
b. ubuntu版本不同,支持的gpu driver版本也不同,apt-cache search nvidia的输出也不尽相同
c. cuda安装包也提供了gpu driver安装选项,但是据说问题很多,这里也就不建议了
d. apt-get install 是不存在任何问题的gpu driver安装方法, 所以建议通过此种方式
3) cuda安装
此时我们安装了ubuntu 18.04, gpu driver(nvidia-430), 接下来安装cuda10
https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=runfilelocal
按照官方提示, 下载cuda_10.0.130_410.48_linux.run, 然后执行 sudo sh cuda_10.0.130_410.48_linux.run
这里需要注意两点:
a. 执行命令后会提示安装gpu driver, 这里选择N,即不通过cuda安装包安装gpu driver. 因为我们已经apt-get install 安装了
b. 安装失败的可能性很大,这是因为Ubuntu系统默认缺少一些依赖包。 此时就是apt-file工具大显身手的时候了。 cuda安装失败的日志中会有缺失的lib名称,通过apt-file查询安装即可。
c. 安装完毕后会在/usr/local/目录下产生cuda目录。
4. cudnn安装
cudnn安装时官网会要求用户注册,提供电邮注册之后即可下载cudnn
https://developer.nvidia.com/cudnn
cudnn选择什么版本???
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 10.0 --> 如果选择cuda10, 那么cudnn就选择对应的cudnn v7.4.2
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 9.2
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 9.0
Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 10.0
Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 9.2
Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 9.0
Download cuDNN v7.3.1 (Sept 28, 2018), for CUDA 10.0
Download cuDNN v7.3.1 (Sept 28, 2018), for CUDA 9.2
cudnn如何安装
这个比较容易,下载的cudnn包括一些c语言库和头文件,按照官网提示分别拷贝到cuda相关目录即可
5. python安装
ubuntu系统默认会安装python, 也可以通过apt-get install 方式安装
常见的python版本, python2.7, python3.5, python3.7, 主要的影响是部分语法有些变化,但是也不多
此处建议装个python3.5或python3.7即可,影响不大
此处重点是python第三方库的安装方式:
a. 通过apt-get install 安装
b. 通过pip命令安装
举个例子,比如 numpy库, 通过apt-get install python3-numpy安装,也可以通过pip install numpy安装
此处建议所有的第三方库都一致使用pip install方式。 原因是一些项目里面第三方库依赖关系比较复杂,通过pip的方式解决比较方便,如果混用不容易处理依赖关系。
6. tensorflow安装
终于到了这一步,tensorflow有cpu与gpu版本,我们安装gpu版本
安装方式: pip install tensorflow-gpu
也通过pip安装。 也有其它安装方式,pip是最简单的
然后还是老问题, tensorflow-gpu 选择什么版本???
tensorflow官网有tensorflow-gpu与cuda版本的关系说明,但是tensorflow官网不知道什么原因上不去了。
以下是从其它网站上找到的关系图,从中可以看到,支持cuda10的最低版本是tensorflow_gpu-1.13.0
说明:
a. 这里tensorflow_gpu是作为python第三方库安装的,也就是说我们用python语言而不是c语言来学习神经网络的,python是更容易的方式
b. 我们之前装ubuntu, gpu driver时假设了我们需要cuda10, 从本节可以看出,cuda版本是根据tensorflow-gpu版本来的,
也就是说,tensorflow版本是整个依赖关系的重点。
c. 通过pip install tensorflow-gpu时,是有默认版本的, 我们可以通过pip install tensorflow-gpu==1.13.0命令指定安装版本
d. tensorflow1.0与tensorflow2.0是有很多变化的,包括语法也有变化,如果是学习建议选择新版,如果是再现一些项目,例如github上的一些项目,则要根据项目要求去选择。 重点再说一次, tensorflow是整个依赖关系的重点。
7. keras安装
依然通过pip安装
keras选择哪个版本???以下是keras与tensorflow版本关系图
https://docs.floydhub.com/guides/environments/
从中可以看出,tensorflow-1.13.0 匹配的keras最低版本是2.2.5
说明:
a. pip install keras==2.2.5 -> 通过pip安装最简单直接
b. 上图中描述的tensorflow版本与keras版本是一对一的,事实上keras版本高一点也可以。
总结:
1. 深度学习环境的搭建重点是依赖关系的确认,而依赖关系的重点是tensorflow的版本,tensorflow版本定,则整体关系可定
2. 很多问题是依赖关系没处理好产生的,比如tensorflow版本与cuda版本不匹配之类的,按照本文思路装一遍即可加深理解
3. 计算机基础好些的按流程走一遍基本就没问题了,不太好的建议多实践几遍
4. caffe,pytorch啥的本文不涉及,但是思路应该是一致的
5. 后续会找一些github上优秀的深度学习项目,介绍原理与实现过程。