MXNet深度学习实战
上QQ阅读APP看书,第一时间看更新

2.1 环境配置

目前,使用GPU基本上是应用深度学习框架时的默认配置了,毕竟现在仅仅用CPU来训练深度学习算法非常慢,而且进行这样操作的人也非常少,因此我在本章中关于开发环境的搭建都是基于GPU进行介绍,需要注意的是,支持GPU的MXNet既可以在GPU上运行,也可以在CPU上运行,但如果你安装的是仅支持CPU的MXNet,那么就只能在CPU上运行了。相比之下,安装支持GPU的深度学习框架要比安装仅支持CPU的深度学习框架更复杂一些,因为要额外安装CUDA、cuDNN等,所以如果你想安装仅支持CPU的MXNet,那么基本上输入几个命令就可以了。

深度学习框架所需要的开发环境主要包括操作系统、显卡驱动、CUDA和cuDNN,这些基本上是你在使用MXNet或者其他深度学习框架时都会涉及的,其中,显卡驱动、CUDA和cuDNN是你安装支持GPU的MXNet时需要准备的。操作系统是最基本的开发环境,你的所有操作都是基于该系统进行的。显卡驱动是使用GPU硬件时要安装的,而且需要与你的GPU型号相匹配。CUDA是英伟达(NVIDIA)官方推出的统一计算架构,是使用支持GPU的深度学习框架时必不可少的内容。cuDNN是英伟达(NVIDIA)推出的加速库,一般在你安装深度学习框架之前都会默认安装。另外,在集成开发环境方面(IDE)推荐使用PyCharm,项目开发和代码调试都十分方便,接下来我们依次介绍各项环境配置的内容。

在操作系统方面,我推荐使用Linux,本书采用的是目前使用最广泛的Linux版本:Ubuntu。目前Ubuntu主要有18.04 LTS和16.04 LTS两个主流版本,考虑到Ubuntu16.04 LTS比较稳定且应用广泛,因此本书的所有代码均基于Ubuntu16.04 LTS进行开发。如果你想查看自己机器的系统信息,可以在命令行通过以下命令来查看。符号“$”表示Ubuntu系统的终端操作界面的命令行前缀,在本书中符号“$”表示一条命令的开始,这一点与大部分系统的定义一致。另外,如果没有特殊指明的话,不以符号“$”开头的内容均表示输入命令后的运行结果。查看系统信息的代码如下:

注意 本书中的命令行命令、命令行输出、Python代码和Python代码输出都会添加灰色底纹加以区分。

在显卡驱动方面,如果你的GPU机器还没有安装显卡驱动,那么你将无法使用GPU训练模型。假设你已经安装好了显卡驱动,那么可以使用下面这个命令查看你的显卡信息:

如果运行该命令没有报错且显示了如图2-2所示的关于显卡的具体信息,那就说明你的机器上已经安装了可用的显卡驱动。

图2-2 显卡信息

图2-2中除了显示显卡型号信息之外,还有每块GPU的显存上限、当前显存的使用情况和利用率等信息,另外还可以使用下面的命令动态查看显存的占用情况,默认每2秒刷新一次:

显卡驱动的安装并不复杂,在安装驱动前,首先要从网上下载指定型号和版本的驱动文件,英伟达(NVIDIA)官方提供了显卡驱动的下载地址:https://www.geforce.com/drivers。用户可以根据自己机器上GPU的型号选择对应的显卡驱动和版本进行安装。以常用的GeForce GTX 1080 Ti显卡为例(本书采用的显卡型号),首先在下载地址中选择对应的显卡类型,如图2-3所示,这里选择GeForce GTX 1080 Ti,然后点击下方的START SEARCH就可以得到各种版本的显卡驱动,比如图2-3中显示了两种版本的显卡驱动,一个版本是415.13(Version 415.13),另一个版本是410.78(Version 410.78)。点击你需要的显卡驱动就会进入下载界面,然后点击下载就可以得到对应版本的驱动,最后安装驱动文件即可。需要说明的是,显卡驱动基本上都是向下兼容的,因为我们选用CUDA 8.0版本,所以目前大部分显卡驱动都是支持的,驱动版本不需要完全一样。在本书中,我采用的显卡驱动版本是384.130,前面提到的查看显卡信息的命令就可以看到显卡驱动的版本,具体而言是图2-2顶部的Driver Version内容。

CUDA(Compute Unified Device Architecture)是英伟达(NVIDIA)官方推出的统一计算架构,支持GPU的MXNet的许多底层计算都会用到CUDA加速库。目前常用的CUDA版本是CUDA 8.0和CUDA 9.0,鉴于目前CUDA 8.0应用广泛且比较稳定,因此本书采用CUDA 8.0。关于CUDA的安装,可以参考英伟达的CUDA官方文档 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/。

图2-3 显卡驱动下载界面

cuDNN(NVIDIA CUDA®Deep Neural Network)是英伟达推出的加速库,一般在你安装MXNet之前默认安装,因为MXNet的很多底层计算都是基于cuDNN库实现的,本书采用的cuDNN版本是cuDNN 7.0.3。关于cuDNN的安装,可以参考英伟达的cuDNN官方链接 https://developer.nvidia.com/cudnn。

虽然Python代码可以通过各种Python解释器运行或者进行交互式编写(比如,我们在命令行通过运行Python或者Python3命令进入的Python环境,其实就是启动了CPython解释器,这是目前使用非常广泛的Python解释器),但是我们知道深度学习算法的项目代码一般都比较复杂,对于复杂的工程代码而言,如果仅依靠Python解释器来编写和调试代码就比较麻烦了,因此需要一个合适的开发环境(IDE)方便用户编写、调试和运行深度学习的Python代码,如果读者目前已经有用得比较顺手的IDE,那么可以不用更换,如果没有的话,可以尝试使用PyCharm。PyCharm是一个主要用于Python语言开发的集成开发环境,用户可以通过PyCharm编写、调试、运行Python代码,非常方便。

读者可以从PyCharm的官方网站上下载并安装指定系统环境和版本的PyCharm,参考链接如下:https://www.jetbrains.com/pycharm/download/#section=linux,该链接中也包含了相关的教学,对于新手而言,PyCharm入门的门槛较低。目前PyCharm主要有专业版(professional)和社区版(community)两个版本可选,如图2-4所示。专业版PyCharm需要购买才能长期使用。社区版PyCharm可以免费使用,对于普通的Python开发而言基本上已经足够了,不过目前只有专业版PyCharm支持Docker。

图2-4 PyCharm下载界面

本书的大部分代码采用的编程语言是Python,目前Python也是各大深度学习框架中文档最丰富的接口语言。虽然当前广泛使用的Python版本是Python2.x,但是因为Python2.x在2020年将不再维护,所以本书采用的Python版本是Python3.x,具体而言是Python3.5.2。

[1] https://docs.nvidia.com/cuda/cuda-installation-guide-linux/。

[2] https://developer.nvidia.com/cudnn。