23.3. 使用AWS EC2实例¶ 在 SageMaker Studio Lab 中打开 Notebook
在本节中,我们将向你展示如何在一台纯净的Linux机器上安装所有库。回想一下,在 23.2节 中,我们讨论了如何使用Amazon SageMaker,而在AWS上自己构建实例的成本更低。整个过程包括三个步骤:
从AWS EC2申请一个GPU Linux实例。
安装CUDA(或使用预装了CUDA的亚马逊云镜像(AMI))。
安装深度学习框架和运行本书代码所需的其他库。
这个过程也适用于其他实例(以及其他云),尽管需要一些微小的修改。在继续之前,你需要创建一个AWS账户,更多详情请参见 23.2节。
23.3.1. 创建并运行EC2实例¶
登录你的AWS账户后,点击“EC2”(图 23.3.1)进入EC2控制台。

图 23.3.1 打开EC2控制台。¶
图 23.3.2 显示了EC2控制台。

图 23.3.2 EC2控制台。¶
23.3.1.1. 预设位置¶
选择一个附近的数据中心以减少延迟,例如,“Oregon”(俄勒冈,在图 23.3.2右上角的红框中标记)。如果你在中国,可以选择附近的亚太地区,如首尔或东京。请注意,一些数据中心可能没有GPU实例。
23.3.1.2. 增加限制¶
在选择实例之前,通过点击左侧栏中的“Limits”(限制)标签来检查是否有数量限制,如图 23.3.2所示。图 23.3.3 显示了此类限制的一个例子。根据区域,该账户目前无法开设“p2.xlarge”实例。如果你需要开设一个或多个实例,请点击“Request limit increase”(请求提高限制)链接来申请更高的实例配额。通常,处理申请需要一个工作日。

图 23.3.3 实例数量限制。¶
23.3.1.3. 启动实例¶
接下来,点击图 23.3.2中红框标记的“Launch Instance”(启动实例)按钮来启动你的实例。
我们首先选择一个合适的亚马逊云镜像(AMI)。选择一个Ubuntu实例(图 23.3.4)。

图 23.3.4 选择一个AMI。¶
EC2提供了许多不同的实例配置可供选择。这有时会让初学者感到不知所措。tab_ec2
列出了不同的适用机型。
:不同的EC2实例类型
名称 |
GPU |
备注 |
---|---|---|
g2 |
Grid K520 |
老旧 |
p2 |
Kepler K80 |
老旧但作为竞价实例通常很便宜 |
g3 |
Maxwell M60 |
不错的性价比 |
p3 |
Volta V100 |
FP16高性能 |
p4 |
Ampere A100 |
大规模训练高性能 |
g4 |
Turing T4 |
推理优化 FP16/INT8 |
所有这些服务器都有多种型号,表示使用的GPU数量。例如,p2.xlarge有1个GPU,而p2.16xlarge有16个GPU和更多内存。有关更多详细信息,请参阅AWS EC2文档或摘要页面。为了说明目的,一个p2.xlarge就足够了(在图 23.3.5的红框中标记)。

图 23.3.5 选择一个实例。¶
请注意,你应该使用一个带有合适驱动程序的启用了GPU的实例和一个启用了GPU的深度学习框架。否则你将无法从使用GPU中获得任何好处。
我们继续选择用于访问实例的密钥对。如果你没有密钥对,请点击图 23.3.6中的“创建新密钥对”来生成一个密钥对。随后,你可以选择之前生成的密钥对。如果你生成了一个新的密钥对,请确保下载并将其存放在一个安全的位置。这是你通过SSH连接到服务器的唯一方式。

图 23.3.6 选择一个密钥对。¶
在此示例中,我们将保留“网络设置”的默认配置(点击“编辑”按钮以配置子网和安全组等项目)。我们只将默认硬盘大小增加到64 GB(图 23.3.7)。请注意,CUDA本身已经占用了4 GB。

图 23.3.7 修改硬盘大小。¶
点击“启动实例”以启动创建的实例。点击图 23.3.8中显示的实例ID以查看此实例的状态。

图 23.3.8 点击实例ID。¶
23.3.1.4. 连接到实例¶
如图 23.3.9所示,在实例状态变为绿色后,右键单击实例并选择Connect
(连接)以查看实例访问方法。

图 23.3.9 查看实例访问方法。¶
如果这是一个新密钥,为了让SSH正常工作,它不能是公开可查看的。进入你存放D2L_key.pem
的文件夹并执行以下命令,使密钥不公开可查看:
chmod 400 D2L_key.pem

图 23.3.10 查看实例访问和启动方法。¶
现在,复制图 23.3.10下方红框中的SSH命令并粘贴到命令行中:
ssh -i "D2L_key.pem" ubuntu@ec2-xx-xxx-xxx-xxx.y.compute.amazonaws.com
当命令行提示“Are you sure you want to continue connecting (yes/no)”时,输入“yes”并按Enter键登录到实例。
你的服务器现在已经准备好了。
23.3.2. 安装CUDA¶
在安装CUDA之前,请务必用最新的驱动程序更新实例。
sudo apt-get update && sudo apt-get install -y build-essential git libgfortran3
这里我们下载CUDA 12.1。访问NVIDIA的官方仓库找到下载链接,如图 23.3.11所示。

图 23.3.11 找到CUDA 12.1的下载地址。¶
复制说明并将其粘贴到终端以安装CUDA 12.1。
# The link and file name are subject to changes
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
安装程序后,运行以下命令查看GPU:
nvidia-smi
最后,将CUDA添加到库路径中,以帮助其他库找到它,例如,将以下几行附加到~/.bashrc
的末尾。
export PATH="/usr/local/cuda-12.1/bin:$PATH"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-12.1/lib64
23.3.3. 安装运行代码所需的库¶
要运行本书的代码,只需在EC2实例上按照安装中针对Linux用户的步骤进行操作,并使用以下技巧在远程Linux服务器上工作:
要在Miniconda安装页面上下载bash脚本,请右键单击下载链接并选择“复制链接地址”,然后执行
wget [复制的链接地址]
。运行
~/miniconda3/bin/conda init
后,你可以执行source ~/.bashrc
,而无需关闭并重新打开当前的shell。
23.3.4. 远程运行Jupyter Notebook¶
要远程运行Jupyter Notebook,你需要使用SSH端口转发。毕竟,云中的服务器没有显示器或键盘。为此,从你的台式机(或笔记本电脑)按如下方式登录到你的服务器:
# This command must be run in the local command line
ssh -i "/path/to/key.pem" ubuntu@ec2-xx-xxx-xxx-xxx.y.compute.amazonaws.com -L 8889:localhost:8888
接下来,在EC2实例上进入本书下载代码的位置,然后运行:
conda activate d2l
jupyter notebook
图 23.3.12 显示了运行Jupyter Notebook后可能的输出。最后一行是端口8888的URL。

图 23.3.12 运行Jupyter Notebook后的输出。最后一行是端口8888的URL。¶
由于你使用了到端口8889的端口转发,请复制图 23.3.12红框中的最后一行,将URL中的“8888”替换为“8889”,然后在你的本地浏览器中打开它。
23.3.5. 关闭未使用的实例¶
由于云服务是按使用时间计费的,你应该关闭未在使用的实例。请注意,还有其他选择:
“停止”实例意味着你将能够再次启动它。这类似于关闭你常规服务器的电源。然而,停止的实例仍将为保留的硬盘空间收取少量费用。
“终止”实例将删除所有与之相关的数据。这包括磁盘,因此你无法再次启动它。只有当你确定将来不再需要它时才这样做。
如果你想将该实例用作更多实例的模板,请在图 23.3.9中的示例上右键单击,然后选择“Image”(映像)\(\rightarrow\)“Create”(创建)以创建实例的映像。完成后,选择“Instance State”(实例状态)\(\rightarrow\)“Terminate”(终止)以终止实例。下次你想使用此实例时,可以按照本节中的步骤,基于保存的映像创建实例。唯一的区别是,在图 23.3.4中显示的“1. Choose AMI”(选择AMI)中,你必须使用左侧的“My AMIs”(我的AMI)选项来选择你保存的映像。创建的实例将保留存储在映像硬盘上的信息。例如,你将不必重新安装CUDA和其他运行时环境。
23.3.6. 小结¶
我们可以按需启动和停止实例,而无需购买和构建自己的计算机。
在使用支持GPU的深度学习框架之前,我们需要安装CUDA。
我们可以使用端口转发在远程服务器上运行Jupyter Notebook。