购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 硬件和操作系统

搭建开发环境的第一步就是准备计算机硬件和操作系统,之后的软件和开发工具库的安装都和这两者密切相关。最常见的搭配是NVIDIA显卡和Ubuntu操作系统,本节会一一介绍这些和显卡、操作系统有关的概念。

2.1.1 显卡

深度神经网络的运算需要大量的乘法和加法,这些简单的运算可以利用显卡极大地提高运算速度。显卡最初是为了渲染图形而设计的,当开发者需要渲染二维或三维图形时,就可以通过调用OpenGL等图形库的接口来使用显卡的计算能力进行渲染。显卡之所以能加速运算,是因为它能对运算进行并行化,除了渲染图形,显卡也可以用于通用的大规模并行计算。NVIDIA公司为此开发了CUDA应用程序接口,让开发者可以使用NVIDIA显卡进行并行计算。由于大多数深度神经网络的训练框架都是基于CUDA构建的,开发者因此不得不使用NVIDIA显卡来加速运算,这也造成了对NVIDIA显卡的依赖。

深度学习模型需要使用各种复杂的算子(Operator),模型本身还会有复杂的网络结构,对模型的运算进行并行化调度是一个很复杂的任务。用户接触到的PyTorch代码看起来非常简洁易读,但要合理地调用显卡的硬件资源对PyTorch搭建的神经网络模型进行并行化,则需要一整套并行计算的基础设施来支持。下面列举了显卡计算资源调用从底层硬件到顶层应用的整个过程,如图2-1所示。

1)操作系统直接通过硬件开放的接口操作显卡。

2)显卡厂商通过调用操作系统的接口编写显卡驱动程序。

· 图2-1 GPU资源调用系统层级

3)CUDA工具箱通过显卡驱动完成特定的科学计算任务。

4)cuDNN通过调用CUDA来完成特定的与深度学习相关的任务。

5)PyTorch通过调用cuDNN提供给用户一套非常友好的接口。

一般而言,显卡驱动的更新会带来新的功能,可以发挥显卡更多的潜力,而CUDA会根据这些新的改进来开发最新的驱动程序。为了获得最全面的功能支持,CUDA通常需要特定版本的显卡驱动,因此更新的显卡驱动不会影响CUDA的使用。

同一个cuDNN版本可以兼容不同版本的CUDA,而某个版本的PyTorch可能会依赖于较旧的cuDNN和CUDA版本,各个工具库的版本管理和开发环境配置一直是令人头疼的问题。幸运的是,已经有一整套解决方案可以应对这些问题,后文将详细讲解。

2.1.2 操作系统

深度学习最常用的操作系统是Ubuntu。Ubuntu是基于Debian开发的一个Linux发行版。简单来说,Debian在Linux的基础上增加了软件管理功能,并坚持所有代码的证书都是开源免费的。Ubuntu基于Debian的软件管理系统,丰富了应用软件和硬件驱动,让用户可以直接使用,不需要进行复杂的配置。相比而言,使用Linux和Debian等系统,用户有时候需要亲自编译硬件驱动程序,从主板、声卡到显卡的一系列驱动都要手动安装。而Ubuntu使这一切变得更加自动化,无需用户操心。由于长期致力于开发用户友好的操作系统,Ubuntu变得越来越流行,其适配的软件也越来越多。笔者长期使用Ubuntu操作系统,使用体验和Windows并无根本区别,甚至有过之而无不及。

因为很多深度学习的软件和工具包都是基于Ubuntu开发的,开发者遇到问题时也更容易在网络社区找到答案。因此,深度学习围绕着Ubuntu形成了一个完整的生态系统。为了避免不必要的麻烦,直接使用Ubuntu无疑是效率最高的选择。因此,读者最好能为自己的计算机安装一个Ubuntu系统,无论是20.04版还是22.04版都可以。如果由于各种原因无法安装,也可以直接使用Windows 10的Ubuntu子系统。虽然效率相比原装系统稍低,但已能满足开发需求。

Ubuntu最为便利的莫过于其包管理系统。所谓包管理系统,就是一个软件和库的集散地,类似于应用商店,但范围更广泛。包管理系统通过软件源连接网上的软件仓库,用户只需要指定具体的软件名就能为自己的系统安装软件了。例如,用户需要安装Python3这个软件,只需要在Ubuntu的命令行执行以下命令即可:

命令中的sudo指的是使用管理员权限,大部分软件都会在操作系统的底层文件夹写入文件,因而需要管理员权限。使用管理员权限运行的软件apt-get是包管理器,install Python3则是包管理器需要执行的命令,意思是安装最新版的Python3。其他软件均可依此命令安装。安装工具库也可以通过这个命令操作,但应在工具库名称的前面加上lib,代表这是一个库(library)。如果是用于C++开发的库,可能用户还需要相应的头文件(Header),需要在库的名字后面加上“-dev”。例如,安装Eigen3这个库进行开发,只需在命令行中执行以下命令即可:

在Ubuntu上进行开发经常要通过命令行进行操作,常用的Ubuntu命令见表2-1,读者可查找使用。

· 表2-1 常用Ubuntu命令

Ubuntu操作系统还有很多小知识,就不进一步展开了,相信读者会在使用的过程中慢慢学会这些知识和技巧。 tE7WW2zp8x1xseo9Jmug3EgS1sYUvxjRI1yUSNrVO4rtW/tAx7WWCxKJeJ64cV2w

点击中间区域
呼出菜单
上一章
目录
下一章
×