亚马逊AWS官方博客
Cinnamon AI 使用 Amazon SageMaker 托管 Spot 训练可节省 70% 的 ML 模型训练成本
开发人员需要不断对机器学习 (ML) 模型进行反复训练,才能够持续优化模型预测效果。模型训练时间在数分钟至数小时不等,也可能会花费多天才能完成,具体时长根据数据集大小而定。ML 开发是一个复杂、成本高的迭代过程。使用低成本的方式开展计算密集型工作对 ML 开发来说至关重要,这也是实现规模化的关键因素。
Amazon SageMaker 是用于大规模构建、训练、调整和部署 ML 模型的全托管服务。Amazon SageMaker 托管 Spot 训练采用 Amazon EC2 Spot 实例进行训练,可以为您节省 90% 的训练成本。
EC2 Spot 实例可以很好地优化 ML 训练的计算成本,其使用的是空闲的 Amazon EC2 资源。与按需实例相比,最高可以节省90%的费用。当特定可用区 (AZ) 的按需实例类型请求出现激增,AWS会收回 Spot 实例,在收回前会提前2分钟发出通知。
这篇博文将说明 Cinnamon AI 如何通过使用 Amazon SageMaker 托管 Spot 训练在保证预算不增加的情况下,降低其 70% 的 ML 训练成本,并提升 40% 每日训练作业量。
Amazon SageMaker 托管 Spot 训练
托管 Spot 训练采用 EC2 Spot 实例运行训练作业,而不选择使用按需实例。Amazon SageMaker 借助托管 Spot 训练管理 Spot 容量和处理中断情况。如果Spot实例被 中断,托管 Spot 训练将暂停训练作业,并在 Spot 容量处于可用状态时可靠地完成恢复。因此,托管 Spot 训练非常适用于启动时间和运行时长都比较灵活的训练任务。您可以配置自己的训练作业,以使用多个检查点。这样做Amazon SageMaker 将会把检查点数据从本地路径复制到 Amazon S3,并从上一个检查点处恢复已中断的训练作业,而不会选择重新启动。托管 Spot 训练是您无需为“轮训检查spot资源”和“处理中断问题”制作工具。不论您使用的是热门 ML 框架、还是Amazon SageMaker 内置算法或者自定义模型来训练,您都可以使用托管 Spot 训练。
如需启用该功能,请通过 Amazon SageMaker 控制台选择启用托管 Spot 训练(Enable managed spot training)。见以下截图。
如果您正在使用 Amazon SageMaker SDK,请在 Estimator 的构造函数中将 train_use_spot_instances 设置为 true 即可。您也可以设置StoppingCondition,用于控制 Amazon SageMaker 等待 Spot 实例有可用资源的时长。
Cinnamon AI 可节省 70% 的模型训练成本
随着现有认知性人工智能 (AI) 系统创造出巨大的发展机遇,许多公司目前正在开发具备AI能力的产品用于构建智能化服务。其中一间企业就是总部设在日本的创业公司 Cinnamon AI。该公司通过AI 服务产品完成其使命——“通过降低重复性工作发掘人类潜力”。
Cinnamon AI 的旗舰产品 Flax Scanner 是一种文档阅读器。该产品运用自然语言处理 (NLP) 算法实现自动化提取无结构的商业文件(如发票、收据、保险理赔和财务报表等)数据。该产品可以将此类文档转换成可以导入数据库的文件。核心目标是消除人工阅读此类文档才能提取相关数据的必要性,达到为企业缩短数百万小时的办公时间,降低运营成本的目的。该服务同样适用于手写文档和日文。
Cinnamon AI 还开发了另外两套 ML 驱动型服务,分别是 Rossa Voice 和 Aurora。Rossa Voice 是一种高精度实时语音识别服务,包含多种用于语音欺诈检测和转录呼叫中心记录的应用程序。Aurora 是一种自动提取文档长句必要信息的服务。您可以使用该服务查找说明书和合同文件中的重要信息。
Cinnamon AI 需要降低 ML 开发成本,因此他们决定将多个不同的开发环境整合到同一个平台上,通过该方式不断优化成本投入。他们选择采用 AWS 开发其 ML 服务,因为 AWS 服务范围较广,且提供多种具有成本效益的定价选项,以及精细化安全控制和技术支持。Cinnamon AI 首先将其所有 ML 工作量从本地环境和其他云提供商迁移到 AWS 上。之后,Cinnamon AI 团队开始优化 EC2 的使用情况,并启用 Amazon SageMaker 训练他们的 ML 模型。他们于近期开始使用托管 Spot 训练功能,利用 Spot 实例进行训练,大幅优化了他们的成本结构。
“Amazon SageMaker 的托管 Spot 训练功能已经对我们的 AWS 成本节省工作产生了深远影响。在使用托管 Spot 训练后,我们的 AWS EC2 成本足足降低了 70%。” Cinnamon AI 基础设施和信息安全办公室总经理 Tetsuya Saito 表示。“此外,托管 Spot 训练不需要复杂方法支持,通过 SageMaker 开发工具包即可轻松使用。”
下图显示了六个月内 Cinnamon AI 模型训练成本节省变化趋势。在 2019 年 6 月,该团队将其 ML 工作量迁移至 AWS,随后开始启用 EC2 按需实例进行模型训练。您可以将此作为训练成本的参考点。在未来数月当中,他们主要通过精简实例型号和采用 GPU 实例(P2、P3)优化大型训练作业的 “EC2-按需”用量。他们还针对使用按需实例的模型训练采用了 Amazon SageMaker,降低了约 20% 左右的训练成本。此外,他们在 2019 年 11 月通过托管 Spot 训练将 Spot 实例用于模型训练,大幅降低成本,成本节省率达到 70% 之多。他们在成本节省方面所取得的显著成果也使得他们在保持降低成本开销的同时,将日常模型训练作业量提升了 40%。
Cinnamon AI 的模型开发环境
Cinnamon AI 目前正在开发多个 借助ML赋能的 产品和服务,他们的数据类型会因应用程序而有所不同。相关数据类型包括 2D 图像、音频和文本,数据集大小在 100 MB 至 40 GB 范围内的文本。他们主要使用自定义的深度学习模型。他们选用的框架有 TensorFlow、PyTorch 和 Keras。他们针对耗时型神经网络训练作业使用 GPU 实例,运行时间从数小时到数天不等;针对小型模型训练实验使用 CPU 实例。
下面的架构图从宏观角度描述了 Cinnamon AI 的ML环境和工作流。
AI 研究员在其工作站上开发代码,再将代码同步到始终在线的共享 EC2 服务器上(按需实例)。该实例用于调用 Amazon SageMaker 本地模型,以运行、测试和调试小数据集上的脚本和模型。执行的代码经过测试后,将被打包放入 Docker 映像中,并保存到 Amazon ECR。这使得研究员可以跨团队分享他们的工作,在各自的 Amazon SageMaker 训练实例上把Docker 映像从ECR上拉取过来。同样地,研究员可以在 EC2 服务器上使用 Amazon SageMaker Python 开发工具包初始化 Amazon SageMaker Estimator,再在 Amazon SageMaker 中启动训练作业。
几乎所有 Cinnamon AI 训练作业均是通过托管 Spot 训练在 Amazon SageMaker 中的 Spot 实例上实现运行,开启检查点在中途保存模型状态。Amazon SageMaker 在训练进行期间将检查点保存到 Amazon S3,这样即可在发生 Spot 中断的情况下使用检查点恢复训练。除 S3 外,Cinnamon AI 采用 Amazon FSx for Lustre 向 Amazon SageMaker 传送数据,对 ML 模型进行训练。与从 S3 直接加载数据相比,使用 Amazon FSx for Lustre 缩短了 SageMaker 训练实例的数据加载时间。他们可以利用 EC2 实例和 SageMaker 训练实例访问 S3 和 Amazon FSx for Lustre 中的数据。Amazon SageMaker 把训练指标发送给Amazon CloudWatch, Cinnamon AI的研究人员在其上完成对训练过程的监控。
小结
因此,对于启动时间和运行时间灵活的训练任务来说,托管 Spot 训练是个优化成本的理想方法。Cinnamon AI 团队已经充分发挥了 Amazon SageMaker 成本节省策略的优势,提高了每日实验次数,并将训练成本降低了 70%。如果您还未针对模型训练使用 Spot 实例,请尝试使用托管 Spot 训练。有关更多信息,请参阅托管 Spot 训练:最高可节省 90% 的 Amazon SageMaker 训练作业。您可以从此处开始了解 Amazon SageMaker。
关于作者
Sundar Ranganathan 是 EC2 团队主要商务拓展经理。除大数据、容器和开发运营工作量外,他和他的团队还专注于 AI/ML 的 EC2 Spot。他曾在 NetApp、Micron Technology、Qualcomm 和 Mentor Graphics 的产品管理和产品开发部门担任管理职务。
Yoshitaka Haribara 博士是日本创业公司的解决方案架构师,专注在机器学习领域。他曾帮助 Cinnamon AI 将工作量迁移至 Amazon SageMaker。
AWS 高级解决方案架构师 Shoko Utsunomiya 的其他贡献。