托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

阅读数:78 2019 年 9 月 18 日 18:09

托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

Amazon SageMaker 是一种完全托管的模块化机器学习 (ML) 服务,它可帮助开发人员和数据科学家轻松构建、训练和部署任意规模的模型。您可以使用内置的算法,也可以自带算法,或者使用来自 AWS Marketplace 的算法,让 ML 模型从试验走向大规模生产从未变得如此简单、快速。

Amazon SageMaker 的一个主要优势在于,不论您要处理的规模有多大,您都无需进行任何基础设施管理。例如,您不再需要设置和管理复杂的训练集群,只需告诉 Amazon SageMaker 您要使用哪种 Amazon Elastic Compute Cloud (EC2) 实例类型以及您需要多少实例即可:然后将会按需创建和配置恰当的实例,并在训练作业完成时自动终止这些实例。客户很快认识到,他们无需为空闲的训练实例付费,这是保持成本控制的一个简单方式。

推出托管 Spot 训练功能
我们很高兴能够再进一步,宣布推出 Amazon SageMaker 的托管 Spot 训练功能,这是一个基于 Amazon EC2 Spot 实例的新功能,与在 Amazon SageMaker 中使用按需实例相比,最高可解约 90% 的 ML 训练成本。从推出至今的近 10 年时间里,Spot 实例已经成为在 AWS 上构建可扩展和经济实惠的 IT 平台的基石之一。从今天开始,您将不仅能够在完全托管的基础设施上运行 Amazon SageMaker 训练作业,同时也将受益于完全托管的成本优化优势,让您能够以同样的预算取得更大成果。下面我们详细了解一下!

所有训练配置中都可以使用托管 Spot 训练功能:

  • Amazon SageMaker 支持的所有实例类型;

  • 所有模型:内置算法、内置框架和自定义模型;

  • 所有配置:单实例训练、分布式训练、自动模型调整。
    与任何完全托管式服务一样,它的设置极为简单:

  • 如果您使用控制台,只需打开此功能即可。

  • 如果您使用 Amazon SageMaker 软件开发工具包,只需在 Estimator 构建器中将 train_use_spot_instances 设置为 true 即可。
    就是这么简单:并且这样可以最高节省 90% 的成本。太棒了,对不对?

中断与检查点设置
使用托管 Spot 训练功能时需要注意一个重要的差异。按需训练实例在训练作业完成前都会保持可用,而托管 Spot 训练实例可能在我们需要更多容量时随时被收回。

使用 Amazon Elastic Compute Cloud (EC2) Spot 实例时,您将提前 2 分钟收到终止通知,并且必须自行采取恰当的行动。其实无需担心:因为 Amazon SageMaker 是一种完全托管的服务,它会自动处理此工作,中断训练作业,再次取得足够的 Spot 容量,然后重启或恢复训练作业。如果您在作业开始时间和持续时间上比较灵活,托管 Spot 训练功能将尤其有意义。您还可以使用 MaxWaitTimeInSeconds 参数来控制训练作业的总持续时间(实际训练时间加等候时间)。

为避免在训练作业中断时从头重启训练作业,我们强烈建议您设置检查点,这种方法可以按一定的间隔保存训练中的模型。这样,您可以从定义明确的时间点恢复训练作业,从最近的部分训练模型继续作业。

  • 内置框架和自定义模型:训练代码由您完全控制。只需确保您使用您在 CheckpointConfig 参数中定义并传递到 SageMaker Estimator 的位置,通过恰当的 API 定期将模型检查点保存到 Amazon Simple Storage Service (S3)。请注意 TensorFlow 会默认使用检查点。对于其他框架,相关示例参见我们的示例笔记本和文档。
  • 内置算法:计算机视觉算法支持检查点功能(对象检测算法、语义分割算法以及最近推出的图像分类算法)。由于这些算法往往用于大型数据集的训练,运行的时间也长于其他算法,发生中断的可能性也更高。其他内置算法目前不支持检查点功能。
    好了,说得已经够多,该快速演示一下了!

使用 Spot 训练功能训练内置的对象检测模型
参考此示例笔记本,让我们通过 AWS 控制台使用托管 Spot 训练实例来训练同样的作业,而不使用按需训练实例。前面我已经解释过,我只需关注两件事情:

  • 启用托管 Spot 训练功能(显而易见)。
  • 设 MaxWaitTimeInSeconds 参数。
    首先为我们的训练作业命名,确保它拥有恰当的 AWS Identity and Access Management (IAM) 权限(无变化)。
    托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

然后选择内置的对象检测算法。

托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

然后为我的训练作业选择实例数量和实例类型,确保我拥有足够的存储以满足检查点之需。

托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

下一步是设置超参数,我将使用与笔记本中相同的参数。然后定义训练数据集的位置和属性。

托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

对验证数据集执行同样的操作。
托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

再定义模型检查点的保存位置。这是 Amazon SageMaker 将在发生中断时提取检查点以恢复我的训练作业的位置。

托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

这是最终模型构件的保存位置。

托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

好事只需等待! 例如我启用了托管 Spot 训练功能,并配置了一个十分放松的 48 小时最大等待时间。
托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

一切搞定,让我们来训练此模型。训练完成后,成本节省情况在控制台中一目了然。

托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本

您可以看到,我的训练作业运行了 2423 秒,但得益于托管 Spot 训练功能,我仅支付了 837 秒的费用,节省达 65%! 说到费用,下面我介绍一下它的定价机制。

定价
托管 Spot 训练作业按照完成或终止前运行的持续时间收费。

对于不使用检查点功能的内置算法和 AWS Marketplace 算法,我们强制执行 60 分钟的最大训练时间(MaxWaitTimeInSeconds 参数)。

最后(但不是最不重要),不论训练作业重启或恢复了多少次,您仅需为数据下载时间付费一次。

现已推出!
此新功能已在提供 Amazon SageMaker 服务的所有区域推出,不要等待,立即开始节省成本吧!

与以往一样,我们希望收到您的反馈:请将反馈发布到 AWS 论坛的 Amazon SageMaker 版块,或通过您常用的 AWS 联系方式发送反馈。

本文转载自 AWS 博客。

原文链接:
https://amazonaws-china.com/cn/blogs/china/managed-spot-training-save-up-to-90-on-your-amazon-sagemaker-training-jobs/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布