使用 Amazon SageMaker 的托管式 Spot 训练优化和扩展机器学习训练

简介

Amazon SageMaker 是一项全托管的机器学习服务。借助 Amazon SageMaker,数据科学家和开发人员可以快速构建和训练机器学习模型,然后将模型部署到生产就绪的托管环境中。

与按需型实例的价格相比,Amazon EC2 Spot 实例以经济实惠的价格提供可在 AWS 云中使用的闲置计算容量。当 EC2 需要收回容量时,EC2 可能会在两分钟的通知时间内中断 Spot 实例。您可以将 Spot 实例用于各类具有容错性、灵活性的应用程序。例如机器学习、分析、容器化工作负载、高性能计算 (HPC)、无状态 Web 服务器、渲染、CI/CD 和其他测试和开发工作负载。

借助 Amazon SageMaker,您可以使用托管式 Spot 训练在 EC2 Spot 实例上运行训练作业。托管式 Spot 训练运行训练作业时使用的是 Amazon EC2 Spot 实例,而不是按需型实例。您可以指定哪些训练作业使用 Spot 实例,并指定一个停止条件,该停止条件指定 Amazon SageMaker 等待使用 Amazon EC2 Spot 实例运行作业的时间。训练运行期间生成的指标和日志可在 CloudWatch 中进行访问。如果 Spot 实例中断,Amazon SageMaker 将重新启动您的训练作业。您还可以配置托管式 Spot 训练作业以使用检查点。Amazon SageMaker 将检查点数据从本地路径复制到 Amazon S3。当作业重新启动时,Amazon SageMaker 将数据从 Amazon S3 复制回本地路径。

要完成的目标

在本教程中,您将:

  • 启动并执行 SageMaker 笔记本实例
  • 训练一个目标检测模型

前提条件

开始本教程之前,您需要先满足以下条件:

  • AWS 账户:如果您还没有 AWS 账户,请遵循设置环境入门指南中的说明获取快速概览。

 AWS 使用经验

中级

 完成时间

10-20 分钟

 所需费用

不到 10 美元

 前提条件

AWS 账户

  使用的服务

Amazon SageMaker

EC2 Spot 实例

  上次更新时间

2020 年 4 月 10 日

操作步骤

步骤 1:访问 Amazon SageMaker

1.1 — 打开浏览器并导航到 Amazon SageMaker 控制台,或者您可以搜索 SageMaker,也可以在控制台登录页面的 Machine Learning(机器学习)部分下找到 Amazon SageMaker。如果您已经拥有 AWS 账户,请登录该控制台。如果还没有,请新建一个 AWS 账户以开始学习。

1.2 — 在右上角,选择您想要进行 SageMaker 训练的区域。

1.3 — 在 Overview(概览)部分或左侧面板中的 Notebook(笔记本)下,点击 Notebook instances(笔记本实例)。

步骤 2:启动笔记本实例

所需内容:参见步骤 1 中提供的指导。

2.1 — 在 Notebook instances(笔记本实例)窗口中,点击 Create notebook instance(创建笔记本实例)。

2.2 — 在 Notebook instance settings(笔记本实例设置)部分的 Notebook instance name(笔记本实例名称)字段中输入一个名称,如“ManagedSpotTraining”。

向下滚动至 Permissions and encryption(权限和加密)部分,然后从 IAM role(IAM 角色)下拉菜单中选择 Create a new role(创建新角色)。

保留所有剩余选项的默认设置。

2.3 — 在 Create an IAM role(创建 IAM 角色)模态窗口中选择 Any S3 bucket(任何 S3 存储桶),然后点击 Create role(创建角色)。

2.4 — 点击 Create notebook instance(创建笔记本实例)。

步骤 3:打开示例笔记本

3.1 — 点击您在步骤 2 中创建的笔记本实例旁边的 Open JupyterLab(打开 JupyterLab)链接。

3.2 — 点击左侧面板中的 Amazon SageMaker sample notebooks(Amazon SageMaker 示例笔记本)图标,查看示例笔记本列表。

3.3 — 在 Introduction to Amazon Algorithms(Amazon 算法简介)部分下,找到并点击 managed_spot_training_object_detection.ipynb 示例笔记本。

此操作将打开该笔记本的一个只读副本。

3.4 — 在刚刚打开的示例笔记本的右上角点击 Create a Copy(创建副本)。

注意:您必须创建该只读笔记本的一个副本,才能在步骤 4 中执行它。

3.5 — 点击 Create Copy(创建副本)。

步骤 4:执行示例笔记本

4.1 — 点击 Run the selected cells and advance(运行选定的单元格并前进)按钮,逐步遍历示例笔记本的每个单元格。单元格左侧的蓝条表示当前选定的单元格。

这个笔记本是介绍 Amazon SageMaker 目标检测算法的一个端到端示例。在本示例中,我们将演示如何使用单步多框目标检测 (SSD) 算法在 Pascal VOC 数据集上训练目标检测模型。该笔记本已配置为使用 Amazon SageMaker 的托管式 Spot 训练,在 Spot 实例上训练此模型。

目标检测是指对图像中的目标进行识别和定位的过程。典型的目标检测解决方案将图像作为输入,在包含感兴趣目标的图像上提供一个边界框,并标识该框内的目标。

该示例笔记本是此处笔记本的修改版本。

使用 Run the selected cells and advance(运行选定的单元格并前进)按钮继续运行笔记本,直至您到达步骤 C为止。

4.2 — 当您执行整个笔记本中的单元格时,将看到每个单元格执行后的输出结果,并且 [*] 指示器将显示步骤增量 [N],其中 N 等于所执行的步骤。

继续执行该笔记本中的单元格,直到您到达使用托管式 Spot 训练进行目标检测这一部分。

4.2 — As you execute cells throughout the notebook, you will see output after the execution of each cell, and the [*] indicator will display a step incrementer [N] where N equals the step that was executed.

Continue executing cells within this notebook until you reach the Object Detection using Managed Spot Training section.

 

4.3 — 当您到达使用托管式 Spot 训练进行目标检测的部分时,请暂停一下,查看以下配置选项。

train_use_spot_instances = True

train_max_run=3600

train_max_wait = 3600 if train_use_spot_instances else None

这些变量用于配置 Amazon SageMaker 训练作业,如下面的步骤 D 所述。在为训练作业预置实例时,它们会将训练作业配置为使用 Spot 实例。它们还配置超时行为,以指定 Amazon SageMaker 应该等待 Spot 实例变为可用的时间,以及训练作业的最长持续时间。

4.4 — 示例笔记本使用 Sagemaker Python SDK 配置高级接口,可以简化在 Amazon SageMaker 中训练和部署模型的过程。其中一个接口是 SageMaker.estimator。Estimator 接口。借助此接口配置训练作业非常简单,只需在实例化时向接口传递一些附加参数。

train_use_spot_instances=train_use_spot_instances,

train_max_run=train_max_run,

train_max_wait=train_max_wait

这些选项使用步骤 C 中定义的变量,将 train_use_spot_instances 配置为 True,将 train_max_run 配置为 3600 秒,将 train_max_wait 配置为 3600 秒。这些参数的更多详细信息如下所示。

train_use_spot_instances(布尔类型)- 指定是否使用 SageMaker 托管式 Spot 实例进行训练。如果启用,则还应设置 train_max_wait 参数。(默认值:False)。

train_max_run(整数类型)- 训练超时时间,以秒为单位(默认值:24 * 60 * 60)。超过该时间后,无论当前状态如何,Amazon SageMaker 都会终止作业。

train_max_wait(整数类型)- 等待 Spot 训练实例的超时时间,以秒为单位(默认值:None)。超过该时间后,Amazon SageMaker 不会再等待 Spot 实例变为可用(默认值:None)。

您可以在此处提供的文档中了解有关 SageMaker Python SDK 和 Estimator 接口的更多信息。

4.5 — 继续使用 Run the selected cells and advance(运行选定的单元格并前进)按钮运行笔记本,直到您到达笔记本的末尾。

记录以下命令:

od_model.fit(inputs=data_channels, logs=True)

执行此命令将使用提供的配置选项开始模型训练作业。训练作业执行期间会输出进度反馈,如图所示。

在执行模型训练作业时,您可以在此处了解有关 Amazon SageMaker 托管式 Spot 训练的更多信息。

训练作业将在 10 分钟内完成。

步骤 5:查看节省情况

5.1 — 训练作业完成时,SageMaker Python SDK 将输出使用托管式 Spot 训练的节省量,以及有关总训练秒数和计费训练秒数的指标。

您可以使用公式 (1 - BillableTimeInSeconds/TrainingTimeInSeconds) * 100 来计算使用托管式 Spot 训练的节省量。例如,如果 BillableTimeInSeconds 为 100,TrainingTimeInSeconds 为 500,则节省量为 80%。

您可以在此处了解有关节省量计算方式的更多信息。

5.2 — 您也可以通过控制台查看节省情况。

返回 Amazon SageMaker 控制台,点击左侧列表中 Training(训练)下的 Training jobs(训练作业)。

点击最近完成的训练作业,查看详细信息。

5.3 — 在作业详细信息中,您可以查看托管式 Spot 训练的节省量,以及有关总训练秒数和计费训练秒数的指标。

您可以在此处了解有关节省量计算方式的更多信息。

步骤 6:清除资源

请务必关闭和删除本教程中使用的所有资源。

结论

恭喜您!您现已使用 EC2 Spot 实例上的 Amazon SageMaker 训练作业训练了一个目标检测模型。现在,您已经准备好将 Spot 实例集成到 Amazon SageMaker 训练作业中,并开始优化机器学习工作负载的成本和性能。

后续步骤

您可以按照下面的后续步骤继续您的 AWS 之旅。

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