优化和扩展机器学习训练

使用 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 的数据复制回本地路径。

关于本教程
时间 10-20 分钟      
费用 不足 10 USD
使用案例 计算、机器学习
产品 Amazon SageMaker、EC2 Spot 实例
级别 300
上次更新日期 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 步:启动笔记本实例

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 物体检测算法的端到端示例。在本示例中,我们将演示如何使用 Single Shot multibox Detector(SSD)算法在 Pascal VOC 数据集上训练物体检测模型。该笔记本被配置为使用 Amazon SageMaker 的托管式 Spot 训练在 Spot 实例上训练该模型。

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

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

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

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

继续在本笔记本中执行单元格,直到到达使用托管式 Spot 训练的物体检测部分。

 

4.3 – 当到达使用托管式 Spot 训练的物体检测部分时,暂停以审核以下配置选项。

train_use_spot_instances = True

train_max_run=3600

train_max_wait = 3600 if train_use_spot_instances else None

如下面步骤 D 所述,在配置 Amazon SageMaker 训练任务时将使用这些变量。在为训练任务预置实例时,他们将训练任务配置为使用 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 (bool) – 指定是否使用 SageMaker 托管式 Spot 实例进行训练。如果已启用,那么也应设置 train_max_wait 参数。(默认值:False)。

train_max_run (int) – 训练超时时间,以秒为单位(默认值:24 * 60 * 60)。在此时间段后,Amazon SageMaker 将终止任务,不论其当前状态如何。

train_max_wait (int) – 等待 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,TrainingTimeInSecondsis 为 500,则节省 80% 的费用。

您可以在此处详细了解如何计算此节省费用。

5.2 – 您还可以通过控制台查看此节省的费用。

返回到 Amazon SageMaker 控制台,单击左侧区域列表中 Training (训练) 下的 Training jobs (训练任务)

单击最近完成的训练任务,以查看详细信息。

5.3 – 在任务详细信息中,您可以查看托管式 Spot 训练节省费用以及总训练秒数和计费训练秒数指标。

您可以在此处详细了解如何计算此节省费用。

恭喜

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

本教程对您是否有帮助?

使用 Amazon SageMaker Spot 托管式训练

现在您已学习了如何将 EC2 Spot 实例与 Amazon SageMaker 配合使用,您已准备好将托管式 Spot 训练以及您学到的其他最佳实践运用到自己的工作负载中。如果您想继续学习,我们建议您先完成此处的自定进度研讨会。

阅读文档

阅读 Amazon SageMaker 指南中的托管式 Spot 训练,了解 Amazon SageMaker 托管式 Spot 训练的功能和能力。

了解 Amazon EC2 Spot 实例

如果您想了解有关 Amazon EC2 Spot 实例的更多信息,请访问 Amazon EC2 Spot 实例产品页面以浏览文档、视频和博客等。