在 Amazon EC2 上使用 AWS Deep Learning Containers 训练深度学习模型

概述

AWS Deep Learning Containers (DL Containers) 是预先安装了深度学习框架的 Docker 镜像,可以让您跳过从头构建和优化环境的复杂流程,轻松快速部署自定义机器学习环境。

开发人员和数据科学家可以使用 AWS DL Containers 向 Amazon Elastic Container Service for Kubernetes (Amazon EKS)、自建 Kubernetes、Amazon Elastic Container Service (Amazon ECS) 和 Amazon EC2 上部署的容器化应用程序中快速添加机器学习。

在本教程中,您将在 Amazon EC2 实例上使用 AWS Deep Learning Containers 训练 TensorFlow 机器学习模型。

  AWS 使用经验

新手

  受众

开发人员和数据科学家

  完成时间

10 分钟

 所需费用

不到 1 美元

 前提条件

AWS 账户

  使用的服务

AWS Deep Learning Containers、Amazon EC2、Amazon ECR

  上次更新时间

2023 年 4 月 12 日

操作步骤

1.注册 AWS

若要按照本教程进行操作,您需要一个 AWS 账户。在本教程中使用 AWS Deep Learning Containers 无需额外付费 - 您只需为本教程中使用的 Amazon c5.large 实例付费,在执行本教程末尾的终止步骤后,需要支付的费用不超过 1 美元。 

2.添加 Amazon ECR 访问权限

AWS Deep Learning Container 镜像托管在 Amazon Elastic Container Registry (ECR) 上,这是一个全托管 Docker 容器注册表,可以让开发人员轻松存储、管理和部署 Docker 容器镜像。在此步骤中,您将为现有的 IAM 用户授予 Amazon ECR 访问权限(使用 AmazonECS_FullAccess 策略)。

如果您没有现有的 IAM 用户,请参阅 IAM 文档,了解更多信息。

a. 前往 IAM 控制台

打开 AWS 管理控制台,使本分步指南保持打开状态。页面加载后,输入您的用户名和密码即可开始使用。然后在搜索栏中输入 IAM,选择 IAM 以打开服务控制台。

b. 选择用户

在左侧导航窗格中选择 Users(用户)。

c. 添加权限

现在将为新创建的 IAM 用户或现有的 IAM 用户添加权限。在 IAM 用户摘要页面上,选择 Add Permissions(添加权限)。

d. 添加 ECS 完全访问策略

选择 Attach existing policies directly(直接附加现有策略),然后搜索 ECS_FullAccess。选择 Amazon_FullAccess 策略,然后点击该策略以执行 Review(查看)和 Add Permissions(添加权限)操作。

e. 添加内联策略

在 IAM 用户摘要页面上,选择 Add inline policy(添加内联策略)。

f. 粘贴 JSON 策略

选择 JSON 页签并粘贴以下策略:

{
       "Version": "2012-10-17",
       "Statement": [
              {
                     "Action": "ecr:*",
                     "Effect": "Allow",
                     "Resource": "*"
              }
       ]
}

将此策略保存为 ECR,然后选择 Create Policy(创建策略)。

3.启动 AWS Deep Learning Base AMI 实例

在本教程中,我们将在 AWS Deep Learning Base Amazon Machine Image (AMI) 上使用 AWS Deep Learning Containers,这些容器预先打包了必要的依赖项(如 Nvidia 驱动程序、docker 和 nvidia-docker)。您可以使用这些软件包在任何 AMI 上运行 Deep Learning Containers。

a. 前往 EC2 控制台

返回 AWS 管理控制台主页,在搜索栏中输入 EC2,然后选择 EC2 以打开服务控制台。

b. 启动 Amazon EC2 实例

再次前往 Amazon EC2 控制台,然后点击 Launch Instance(启动实例)按钮。

c. 选择 AWS Deep Learning Base AMI

在左侧选择 AWS Marketplace 页签,然后搜索 deep learning base ubuntu。选择 Deep Learning Base AMI (Ubuntu)。您还可以选择 Deep Learning Base AMI (Amazon Linux)

d. 选择实例类型

选择 Amazon EC2 实例类型。Amazon Elastic Compute Cloud (EC2) 是在云中创建和运行虚拟机的 Amazon Web 服务。AWS 将这些虚拟机称为“实例”。

在本教程中,我们将使用 c5.large 实例,但是您可以选择其他实例类型,包括基于 GPU 的实例(如 G4、G5、P3 和 P4)。

点击 Review and Launch(查看并启动)。

e. 启动实例

查看实例的详细信息,并点击 Launch(启动)。

f. 创建新的私钥文件

在下一个页面上,系统会要求您选择现有密钥对或新建密钥对。密钥对用于通过 SSH 实现对您实例的安全访问。AWS 存储密钥对的公钥部分(就像门锁)。您下载和使用密钥对的私钥部分(就像门钥匙)。

选择 Create a new key pair(新创密钥对),然后为其命名。然后点击 Download Key Pair(下载密钥对)并将密钥存储在安全位置。如果您丢失密钥,将无法访问您的实例。如果他人获取了您的密钥,就能够访问您的实例。

如果您仍可以访问先前创建的私钥文件,则可以通过选择 Choose an existing key pair(选择现有密钥对)来使用现有的私钥。

g. 查看实例详细信息

在控制台上选择实例 ID,查看新创建的 Amazon EC2 实例的详细信息。 

4.连接到实例

在此步骤中,您将使用 SSH 连接到新启动的实例。以下说明使用 Mac/Linux 环境。如果您使用的是 Windows,请按照本教程的步骤 4 操作

a. 查找并复制实例的公共 DNS

在 Description(说明)页签下面,复制 Amazon EC2 实例的公共 DNS (IPv4)。

b. 打开命令行终端

在终端上使用以下命令切换到安全密钥所在的目录,然后使用 SSH 连接到您的实例。

cd /Users/<your_username>/Downloads/

chmod 0400 <your .pem filename>

ssh -L localhost:8888:localhost:8888 -i <your .pem filename> ubuntu@<your instance DNS>

c. 安装 Docker

停止所有正在进行的系统更新,以便我们放心安装 Docker。

sudo pkill -f "apt.systemd.daily"
sudo apt install docker.io

5.登录 Amazon ECR

AWS Deep Learning Container 镜像托管在 Amazon Elastic Container Registry (ECR) 上,这是一个全托管 Docker 容器注册表,可以让开发人员轻松存储、管理和部署 Docker 容器镜像。在此步骤中,您将登录 Amazon ECR 并验证服务访问权限。

a. 使用 AWS 凭据配置 EC2 实例

您需要提供 AWS 访问密钥 ID 和私有访问秘钥。如果您还没有此信息,可以在此处创建访问密钥 ID 和私有访问密钥。

b. 登录 Amazon ECR

您将使用以下命令登录 Amazon ECR:

sudo su – 
$(aws ecr get-login --region us-east-1 --no-include-email --registry-ids 763104351884)

注意:您需要在命令中包含“$”和圆括号。在此步骤结束时,您将看到“Login Succeeded”(登录成功)的消息。

6.使用 Deep Learning Containers 运行 TensorFlow 训练

在此步骤中,我们将使用 AWS Deep Learning Container 镜像和 Python 3.6 在 CPU 实例上进行 TensorFlow 训练。

a. 运行 AWS Deep Learning Containers

现在,您将使用以下命令在 EC2 实例上运行 AWS Deep Learning Container 镜像。如果 Deep Learning Container 镜像在本地不存在,此命令将自动拉取该镜像。

若使用 CPU 实例:

docker run -it 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:2.8.0-cpu-py39-ubuntu20.04-e3

注意:此步骤可能需要几分钟时间,具体取决于镜像的大小。如果您使用的是 GPU 实例,请使用“nvidia-docker”而非“docker”。此步骤成功完成后,您将为容器输入 bash 提示符。

b. 拉取要训练的示例模型

我们将克隆 Keras 存储库,其中包括用于训练模型的示例 Python 脚本。

git clone https://github.com/gilinachum/keras

c. 开始训练

使用以下命令开始训练经典的 MNIST CNN 模型:

python keras/mnist.py

您刚才已使用 AWS Deep Learning Container 开始训练。

 

7.终止资源

在此步骤中,您将终止在学习本教程的过程中创建的 Amazon EC2 实例。

重要说明:终止当前未使用的资源可降低成本,这是一种最佳做法。如果不终止资源,系统可能会从您的账户中扣费。

a. 选择运行中的实例

在 Amazon EC2 控制台上,选择 Running Instances(运行中的实例)。

 

b. 终止 EC2 实例

选择您创建的 EC2 实例,然后依次选择 Actions > Instance State > Terminate(操作 > 实例状态 > 终止)。

c. 确认终止

系统会提示您是否确认终止操作。点击 Yes, Terminate(是,终止)。

注意:此过程可能需要几秒钟才能完成。在您的实例终止后,EC2 控制台上的实例状态将更改为 terminated(已终止)。

 

结论

您已使用 AWS Deep Learning Containers 成功对 MNIST CNN 模型进行 TensorFlow 训练。

您可以使用 AWS DL Containers 对 Amazon EC2、Amazon ECS、Amazon EKS 和 Kubernetes 上的 CPU 和 GPU 资源进行训练和推断。

使用这些稳定的深度学习镜像(已针对 AWS 上的性能和规模进行优化)可以构建自己的自定义深度学习环境。

此页内容对您是否有帮助?

后续步骤