《MXNet深度学习实战》—3.3 Module
920
2022-05-30
CHAPTER 2
第2章
搭建开发环境
MXNet官方提供了多种安装方式,安装过程非常简单,详细内容请参考官方安装链接:https://mxnet.incubator.apache.org/install/index.html,本章中关于MXNet的安装主要参考这个官方链接。该链接中提供了多种安装MXNet的方式,如图2-1所示,这里一共显示了5行安装内容,每行又包含多个选项。第一行表示MXNet的版本,点击下拉选项可以选择不同版本的MXNet;第二行表示操作系统,比如最常用的Linux、MacOS和Windows等;第三行表示API,最常用的是Python语言的接口;第四行表示训练环境,简单来讲就是,是否需要GPU;第五行表示不同的安装方式,比如通过pip工具进行安装、通过Docker进行安装等。
图2-1 MXNet安装方式
当你选择好了图2-1中的这些选项,安装界面就会按照你的选项给出详细的安装步骤供你参考。本章将以其中最常用的两种安装方式为例介绍如何安装MXNet,一种是采用Docker安装,另一种是采用pip在本地安装。
Docker是一个环境隔离工具,目前在工业界应用非常广泛,采用这种方式其实并不需要你安装MXNet,而只需先安装Docker,然后通过Docker这个工具从镜像(image)库中拉取MXNet镜像就可以直接使用MXNet了。为什么Docker会得到广泛应用呢?主要原因在于一方面你可以在一个镜像环境中运行你的代码,这个环境与你的电脑环境是隔离的,这样你在镜像中的安装和配置操作都不会影响到你的电脑环境,同时还能保证在你电脑上能够正常运行的代码移植到他人电脑上一样能正常运行,因为只要提供相同的镜像就能保证代码的运行环境相同。另一方面是方便,你想要什么样的镜像都可以从网上拉取,比如你想用CUDA 9.0、MXNet 1.3.1或者CUDA 8.0、MXNet 1.3.1等,那么直接从镜像库中拉取对应版本的镜像即可,这样你就不需要每次都在本地安装,可谓是一劳永逸。目前Docker的发展比较成熟,官方镜像库中提供了非常丰富的选择,大部分镜像中还安装好了CUDA、cuDNN、OpenCV等常用工具或库,因此基本上是拉取后就能直接使用,非常方便。当然,对于新手而言,学习Docker的安装和使用还需要一些时间,因此假如你想要快速上手深度学习框架,那么可以考虑第二种安装方式,也就是通过pip命令进行安装。
本地pip安装就是平时我们最熟悉的直接在电脑上安装MXNet,只要配置好相关的环境,比如显卡驱动、CUDA、cuDNN和其他所需的工具,安装MXNet就只是一行命令的事了。这种安装方式比较直接易懂,但是容易出现的问题是后续的环境依赖不好维护,虽然安装MXNet不需要配置太多的环境依赖,但是随着相关库或者软件的不断使用和升级,环境依赖会变得越来越复杂,后期很容易出现这样的问题:在你的电脑上能正常运行的代码移植到他人的电脑上无法正常运行,或者要经过比较复杂费时的环境配置后才能正常运行。
因此如果你有一定的开发能力及经验,项目中需要进行环境隔离,尤其是有代码移植的需要时,那么推荐你安装Docker,然后在Docker镜像中运行你的MXNet项目。如果你刚刚入门,暂时不需要做环境隔离,并且相信后期不会因为环境依赖问题而搞得焦头烂额,那么采用本地pip安装会更加直观。
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训练模型。假设你已经安装好了显卡驱动,那么可以使用下面这个命令查看你的显卡信息:
$ nvidia-smi
如果运行该命令没有报错且显示了如图2-2所示的关于显卡的具体信息,那就说明你的机器上已经安装了可用的显卡驱动。
图2-2 显卡信息
图2-2中除了显示显卡型号信息之外,还有每块GPU的显存上限、当前显存的使用情况和利用率等信息,另外还可以使用下面的命令动态查看显存的占用情况,默认每2秒刷新一次:
$ watch nvidia-smi
显卡驱动的安装并不复杂,在安装驱动前,首先要从网上下载指定型号和版本的驱动文件,英伟达(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官方文档。
图2-3 显卡驱动下载界面
cuDNN(NVIDIA CUDA?Deep Neural Network)是英伟达推出的加速库,一般在你安装MXNet之前默认安装,因为MXNet的很多底层计算都是基于cuDNN库实现的,本书采用的cuDNN版本是cuDNN 7.0.3。关于cuDNN的安装,可以参考英伟达的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。
深度学习 Ubuntu Python
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。