用过 AWS EC2 实例的用户可能都知道,EC2 有一种 Spot 实例,能够将 AWS 中暂未使用的 EC2 容量提供给用户,相比按需实例,最多可享受90%的价格折扣。html
那么当你使用 Amazon SageMaker 训练本身的 ML 模型时,面对长时间运行训练任务致使的高额帐单,是否考虑过,能不能经过 EC2 Spot 实例的方式来节约成本?python
好消息来了!git
Amazon SageMaker 的托管 Spot 训练功能已经正式发布!这是一个基于Amazon EC2 Spot 实例的新功能,与在 Amazon SageMaker 中使用按需实例相比,最高可节约90%的 ML 训练成本。Spot 实例并非新事物,从推出至今的近10年时间里,Spot 实例已经成为在 AWS 上构建可扩展和经济实惠 IT 平台的基石之一。从今天开始,用户不只能在彻底托管的基础设施上运行 Amazon SageMaker 训练做业,同时也将受益于彻底托管的成本优化优点,以一样预算取得更大成果。github
全部训练配置中均可以使用托管 Spot 训练功能:算法
就是这么简单:而且能够最高节省90%的成本!很棒吧。框架
使用托管Spot训练功能时须要注意一个重要差别:按需训练实例在训练做业完成前都会保持可用,而托管Spot训练实例可能在咱们须要更多容量时随时被收回。
使用 Amazon Elastic Compute Cloud (EC2) Spot 实例时,咱们将提早2分钟收到终止通知,而且必须自行采起恰当行动。不过也无需担忧,由于 Amazon SageMaker 是一种彻底托管的服务,它会自动处理此工做,中断训练做业,再次取得足够的 Spot 容量后重启或恢复训练做业。若是在做业开始时间和持续时间上比较灵活,托管 Spot 训练功能将尤为有意义。此外,咱们还可使用 MaxWaitTimeInSeconds 参数来控制训练做业的总持续时间(实际训练时间加等候时间)。分布式
为避免在训练做业中断时从头重启训练做业,强烈建议设置检查点,借此便可按必定间隔保存训练中的模型。这样咱们就能够从定义明确的时间点恢复训练做业,从最近的部分训练模型继续做业。ide
接下来一块儿看看实际操做演示吧。工具
参考此示例笔记本,咱们一块儿经过 AWS 控制台使用托管 Spot 训练实例来训练一样的做业,而不使用按需训练实例。上文曾经提到,此时只需关注两件事情:开发工具
首先为训练做业命名,确保它拥有恰当的 AWS Identity and Access Management (IAM)权限(和之前的作法同样)。
而后选择内置的对象检测算法:
接下来为训练做业选择实例数量和实例类型,确保拥有足够的存储以知足检查点之需:
随后设置超参数,此处将使用与笔记本中相同的参数。而后定义训练数据集的位置和属性:
对验证数据集执行一样的操做:
再定义模型检查点的保存位置。这是 Amazon SageMaker 将在发生中断时提取检查点以恢复训练做业的位置。
这是最终模型构件的保存位置:
接下来只须要耐心等待。假设启用了托管 Spot 训练功能,并配置了一个十分宽松的48小时最大等待时间:
一切搞定,让咱们来训练此模型。训练完成后,成本节省状况在控制台中一目了然。
从上图能够看到,训练做业运行了2423秒,但得益于托管 Spot 训练功能,实际上只支付了837秒的费用,节省达65%!说到费用,下文将介绍该方式的订价机制。
托管 Spot 训练做业按照完成或终止前运行的持续时间收费。
若是不使用检查点功能的内置算法和 AWS Marketplace 算法,会强制执行60分钟最大训练时间(MaxWaitTimeInSeconds 参数)。
最后一样重要的是:不管训练做业重启或恢复了多少次,用户仅需为数据下载时间付费一次。
该功能已在提供 Amazon SageMaker 服务的全部区域推出,当即试试吧。