![托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业成本](https://static001.infoq.cn/resource/image/18/72/1819967a1ca2cd1a26abe8c9e4e4c272.jpg)
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) 权限(无变化)。
然后选择内置的对象检测算法。
![](https://static001.infoq.cn/resource/image/ac/ca/ac144122e9a20c8a951e3384dda7ddca.png)
然后为我的训练作业选择实例数量和实例类型,确保我拥有足够的存储以满足检查点之需。
![](https://static001.infoq.cn/resource/image/ec/2e/ecffe2c5a5845e40dd30c718bd85352e.png)
下一步是设置超参数,我将使用与笔记本中相同的参数。然后定义训练数据集的位置和属性。
![](https://static001.infoq.cn/resource/image/6e/56/6e1ac4ce04ea44f952e862472a024956.png)
对验证数据集执行同样的操作。
![](https://static001.infoq.cn/resource/image/5f/7c/5fb236c15ff7fba68308372265efc37c.png)
再定义模型检查点的保存位置。这是 Amazon SageMaker 将在发生中断时提取检查点以恢复我的训练作业的位置。
![](https://static001.infoq.cn/resource/image/4c/ad/4c4f207675b202bf0eaf5710110b83ad.png)
这是最终模型构件的保存位置。
![](https://static001.infoq.cn/resource/image/7f/11/7f3162303b7a7391479ef77e00a1c411.png)
好事只需等待! 例如我启用了托管 Spot 训练功能,并配置了一个十分放松的 48 小时最大等待时间。
![](https://static001.infoq.cn/resource/image/21/3e/21555c8a0125a534b394b532c42ad23e.png)
一切搞定,让我们来训练此模型。训练完成后,成本节省情况在控制台中一目了然。
![](https://static001.infoq.cn/resource/image/6f/68/6fa83be2a67b1638bcf8f114a21d6568.png)
您可以看到,我的训练作业运行了 2423 秒,但得益于托管 Spot 训练功能,我仅支付了 837 秒的费用,节省达 65%! 说到费用,下面我介绍一下它的定价机制。
定价
托管 Spot 训练作业按照完成或终止前运行的持续时间收费。
对于不使用检查点功能的内置算法和 AWS Marketplace 算法,我们强制执行 60 分钟的最大训练时间(MaxWaitTimeInSeconds 参数)。
最后(但不是最不重要),不论训练作业重启或恢复了多少次,您仅需为数据下载时间付费一次。
现已推出!
此新功能已在提供 Amazon SageMaker 服务的所有区域推出,不要等待,立即开始节省成本吧!
与以往一样,我们希望收到您的反馈:请将反馈发布到 AWS 论坛的 Amazon SageMaker 版块,或通过您常用的 AWS 联系方式发送反馈。
本文转载自 AWS 博客。
原文链接:
评论