亚马逊AWS官方博客
托管 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
参数中定义并传递到 SageMakerEstimator
的位置,通过恰当的 API 定期将模型检查点保存到 Amazon Simple Storage Service (S3)。请注意 TensorFlow 会默认使用检查点。对于其他框架,相关示例参见我们的示例笔记本和文档。 - 内置算法:计算机视觉算法支持检查点功能(对象检测算法、语义分割算法以及最近推出的图像分类算法)。由于这些算法往往用于大型数据集的训练,运行的时间也长于其他算法,发生中断的可能性也更高。其他内置算法目前不支持检查点功能。
好了,说得已经够多,该快速演示一下了!
使用 Spot 训练功能训练内置的对象检测模型
参考此示例笔记本,让我们通过 AWS 控制台使用托管 Spot 训练实例来训练同样的作业,而不使用按需训练实例。前面我已经解释过,我只需关注两件事情:
- 启用托管 Spot 训练功能(显而易见)。
- 设
MaxWaitTimeInSeconds
参数。
首先为我们的训练作业命名,确保它拥有恰当的 AWS Identity and Access Management (IAM) 权限(无变化)。
然后选择内置的对象检测算法。
然后为我的训练作业选择实例数量和实例类型,确保我拥有足够的存储以满足检查点之需。
下一步是设置超参数,我将使用与笔记本中相同的参数。然后定义训练数据集的位置和属性。
对验证数据集执行同样的操作。
再定义模型检查点的保存位置。这是 Amazon SageMaker 将在发生中断时提取检查点以恢复我的训练作业的位置。
这是最终模型构件的保存位置。
好事只需等待! 例如我启用了托管 Spot 训练功能,并配置了一个十分放松的 48小时最大等待时间。
一切搞定,让我们来训练此模型。训练完成后,成本节省情况在控制台中一目了然。
您可以看到,我的训练作业运行了 2423 秒,但得益于托管 Spot 训练功能,我仅支付了 837 秒的费用,节省达 65%! 说到费用,下面我介绍一下它的定价机制。
定价
托管 Spot 训练作业按照完成或终止前运行的持续时间收费。
对于不使用检查点功能的内置算法和 AWS Marketplace 算法,我们强制执行 60 分钟的最大训练时间(MaxWaitTimeInSeconds
参数)。
最后(但不是最不重要),不论训练作业重启或恢复了多少次,您仅需为数据下载时间付费一次。
现已推出!
此新功能已在提供 Amazon SageMaker 服务的所有区域推出,不要等待,立即开始节省成本吧!
与以往一样,我们希望收到您的反馈:请将反馈发布到 AWS 论坛的 Amazon SageMaker 版块,或通过您常用的 AWS 联系方式发送反馈。
– Julien;