使用 AWS Deep Learning Containers 在 Amazon EC2 上

训练深度学习模型

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 上的容器化应用程序添加机器学习功能。

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

关于本教程
时间 10 分钟                                           
费用 低于 1 USD
使用案例 Machine Learning
产品 AWS Deep Learning Containers、Amazon EC2、Amazon ECR
受众 开发人员、数据科学家
级别 新手
上次更新日期 2019 年 3 月 27 日

1.注册 AWS

您需要一个 AWS 账户才能按照本教程操作。按照本教程使用 AWS Deep Learning Containers 无需额外付费 – 您只需为本教程中使用的 Amazon c5.large 实例付费,在完成本教程末尾的终止步骤后,其费用将不到 1 USD。 

已拥有账户? 登录您的账户

2.添加访问 Amazon ECR 的权限

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

如果您没有现有的 IAM 用户,请参阅 IAM 文档以了解详情。

a.导航到 IAM 控制台

打开 AWS 管理控制台,以便使本分步指南处于打开状态。此屏幕加载后,请输入您的用户名和密码以便开始操作。在搜索栏中输入 IAM,然后选择 IAM 以便打开服务控制台。

AWS Management Console

b.选择用户

在左侧导航窗格中,选择用户

3b-new

c.添加权限

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

3c

d.添加 ECS 完全访问策略

选择直接附加现有策略,搜索 ECS_FullAccess。选择 Amazon_FullAccess 策略,依次单击查看添加权限

3d-new

e.添加内联策略

在 IAM 用户摘要页面上选择添加内联策略

3e-new

f.粘贴 JSON 策略

选择 JSON 选项卡并粘贴以下策略:

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

将此策略另存为 “ECR”,然后选择创建策略

 

3f-new

3.启动一个 AWS Deep Learning Base AMI 实例

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

a.导航到 EC2 控制台

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

step_2

b.启动一个 Amazon EC2 实例

再次导航到 Amazon EC2 控制台,然后选择 Launch Instance(启动实例)按钮。

step_4a-new

c.选择 AWS Deep Learning Base AMI

选择左侧的 AWS Marketplace 选项卡,然后搜索“deep learning base ubuntu”。选择 Deep Learning Base AMI (Ubuntu)。您还可以选择 Deep Learning Base AMI (Amazon Linux)

step_4b-new

d.选择实例类型

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

在本教程中,我们将使用 c5.large 实例,不过您可以选择其他实例类型,包括基于 GPU 的 P3 实例。

选择检查和启动

step_4c-new

e.启动您的实例

查看实例的详细信息,然后选择启动

step_4d-new

f.创建一个新的私钥文件

在下一个屏幕中,系统会要求您选择现有密钥对或创建新的密钥对。您可以使用密钥对通过 SSH 安全访问实例。AWS 会存储密钥对的公有部分,该部分密钥的作用就像门锁。您需下载并使用密钥对的私有部分,该部分密钥的作用就像门锁钥匙。

选择创建新密钥对,并为其命名。然后选择下载密钥对,并将密钥存储在安全的位置。如果丢失密钥,您就无法访问您的实例。如果他人获得您的密钥,他们就能够访问您的实例。

如果以前创建了私钥文件,并且现在仍可访问,则可以选择选择现有的密钥对,使用现有私钥。

step_4e-new

g.查看实例详情

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

step_4f-new

4.连接到您的实例

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

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

说明选项卡下,复制您的 Amazon EC2 实例的公共 DNS (IPv4)。

step_5a-new

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>
step_5b-new

5.登录到 Amazon ECR

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

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

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

step_6a-new

b.登录到 Amazon ECR

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

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

注意:您需要在命令中包含“$”和圆括号。完成此步骤后,您将看到“登录成功”。

 

step_6b-new

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 映像在本地不存在,则此命令将自动提取该映像。

docker run -it 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:1.13-cpu-py36-ubuntu16.04

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

 

7a-new

b.拉取一个示例模型进行训练

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

git clone https://github.com/fchollet/keras.git
7b-new

c.开始训练

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

python keras/examples/mnist_cnn.py

您已经成功使用 AWS Deep Learning Container 开始了训练。

 

7c-new

7.终止资源

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

重要说明:终止当前未在使用的资源可降低成本,这是最佳实践。不终止资源可能会在您的账户下产生费用。

a.选择您正在运行的实例

在 Amazon EC2 控制台上,选择正在运行的实例

 

8a-new

b.终止您的 EC2 实例

选择您之前创建的 EC2 实例,再选择操作 > 实例状态 > 终止

8b-new

c.确认终止

系统会提示您确认终止。选择是,终止

注意:完成此过程可能需要几秒钟。终止实例后,EC2 控制台上的“实例状态”会变为“已终止”。

 

8c-new

恭喜

您已使用 AWS Deep Learning Containers 通过 TensorFlow 成功地训练了 MNIST CNN 模型。

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

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

本教程对您是否有帮助?

谢谢
请告知我们您喜欢什么。
很抱歉让您失望了
是否存在过时、令人困惑或不准确的内容? 请向我们提供反馈,帮助我们改进本教程。