Amazon SageMaker 培训托管温池的最佳实践

Amazon SageMaker Training Managed Warm Pools 让您可以灵活地选择在用户定义的时间段内重复使用和保留底层基础设施。 这样做的同时还保持了将管理计算实例的无差别繁重工作传递给的好处 Amazon SageMaker 模型训练. 在本文中,我们概述了 SageMaker Training Managed Warm Pools 解决的主要优势和痛点,以及基准和最佳实践。

SageMaker 培训托管温池概述

SageMaker 模型训练是一项完全托管的功能,可以为每个作业启动实例、训练模型、运行然后在作业结束后停止实例。 您只需按工作持续时间付费,精确到秒。 这种完全托管的功能让您可以自由地专注于机器学习 (ML) 算法,而不必担心在训练模型时进行基础设施管理等无差别的繁重工作。

这种机制需要有限的启动时间来训练工作。 虽然这个启动时间,也被称为 冷启动启动时间,相当低,我们一些最苛刻的客户用例需要更短的启动时间,例如 20 秒以下。 有两个突出的用例具有这些要求:

  • 第一个是数据科学家使用 亚马逊SageMaker 训练平台,特别是在训练大型模型(如 GPT3)时,需要多次迭代才能达到生产就绪状态。
  • 第二种是以计划的节奏在同类实例上以编程方式启动大量(大约数百或数千)连续作业。 例如,参数搜索或增量训练。

对于此类用例,花费在开销上的每一秒,例如训练作业的启动时间,都会对所有这些作业产生累积影响。

借助 SageMaker Training Managed Warm Pools,数据科学家和 ML 工程师能够选择让 SageMaker 训练实例或多实例集群在预先指定和可重新配置的时间内保持温暖(keep_alive_period_in_seconds) 在每个培训工作完成后。 因此,即使您在实例或集群上运行的第一个训练作业会招致冷启动惩罚,但对于所有后续训练作业,实例已经启动并运行。 因此,这些在实例之前开始的后续训练作业 keep_alive_period_in_seconds expires 不会招致冷启动启动时间开销。 这可以将训练作业启动时间减少到大约不到 20 秒 (P90)。

数据科学家和 ML 工程师可以使用 SageMaker Training Managed Warm Pools 在训练运行之间保持单个或多个实例温暖以进行实验,或者在同一个单实例或多实例集群上连续运行多个作业。 您只需为训练作业和可重新配置的持续时间付费 keep_alive_period_in_seconds 就像您为每个实例指定的其他地方一样。

本质上,借助 SageMaker 培训托管温池,您可以将 SageMaker 托管实例利用率与选择加入和配置容量以及在短时间间隔内自行管理利用率的能力相结合。 这些间隔在作业之前是可配置的,但如果在作业期间 keep_alive_period_in_seconds 间隔,你需要减少或增加它,你可以这样做。 增加到 keep_alive_period_in_seconds 最多可以每隔 60 分钟执行一次,实例或集群的最长周期为 7 天。

要开始使用温水池,首先 请求增加暖池配额限制,然后指定 keep_alive_period_in_seconds 参数 开始训练工作时。

基准

我们使用 1.34 GB TensorFlow 图像、2 GB 数据和不同的训练数据输入模式(Amazon FSx、快速文件模式、文件模式)执行基准测试以测量作业启动延迟。 这些测试在 us-east-4 区域的 m4、c5、m5 和 c2 系列的各种实例类型上运行。 启动延迟被测量为创建作业到实例上实际训练作业开始的时间。 启动集群并创建暖池的第一个作业有 2-3 分钟的启动延迟。 这种更高的延迟是由于配置基础设施、下载图像和下载数据所花费的时间。 使用暖池集群的后续作业对于快速文件模式 (FFM) 或 Amazon FSx 的启动延迟约为 20 秒,对于文件模式 (FM) 的启动延迟约为 70 秒。 此增量是 FM 要求在作业开始之前从 Amazon S3 下载整个数据集的结果。

您选择的训练数据输入模式会影响启动时间,即使使用暖池也是如此。 有关选择哪种输入模式的指南在本文后面的最佳实践部分。

下表总结了不同训练数据输入模式的作业启动延迟 P90。

数据输入方式 启动延迟 P90(秒)
第一份工作 暖池工作(第二份工作开始)
FSx 136 19
快速文件模式 143 21
文件模式 176 70

使用暖池的最佳实践

在下一节中,我们将分享一些使用暖池时的最佳实践。

什么时候应该使用温水池?

以下场景推荐使用温池:

  • 您正在通过一系列短期作业交互式地试验和调整您的脚本。
  • 您正在运行自己定制的大规模超参数优化(例如, 同音调).
  • 您有一个批处理过程,它以每天或每周的节奏在同一类型的实例上运行大量(大约数百或数千个)连续作业。 例如,为每个城市训练一个 ML 模型。

当不太可能有人在温池过期前重复使用时,不建议使用温池。 例如,通过自动化 ML 管道运行的单个冗长作业。

最小化暖池训练作业启动延迟

重用暖池的训练作业比创建暖池的第一个作业启动得更快。 这是因为使用缓存的训练容器 Docker 映像保持 ML 实例在作业之间运行,以跳过从中拉取容器 Amazon Elastic Container注册 (亚马逊 ECR)。 然而,即使在重用暖池时,所有作业都会发生某些初始化步骤。 优化这些步骤可以减少您的作业启动时间(第一个作业和后续作业)。 考虑以下:

  • 训练数据输入方式会影响启动时间 – 为每个训练作业重新创建托管训练数据输入通道,从而导致作业启动延迟。 因此,在较小的数据集上进行初始实验将允许更快的启动时间(和更快的训练时间)。 对于实验的后期阶段,当需要大型数据集时,请考虑使用具有最小或固定初始化时间的输入模式类型。 例如,FILE 输入模式从复制整个数据集 亚马逊简单存储服务 (Amazon S3) 到训练实例,这对于大型数据集(即使使用暖池)也很耗时。 快速文件模式更适合较低的启动延迟,因为在工作负载启动之前,只需从 Amazon S3 读取 S3 对象元数据。 这 适用于Lustre的Amazon FSx亚马逊弹性文件系统 (Amazon EFS) 文件系统输入模式,无论文件系统中的文件数量如何,都有固定的初始化时间,这在处理大型数据集时很有用。
    有关如何选择输入通道的更多信息,请参阅 为您的 Amazon SageMaker 训练作业选择最佳数据源.
  • 减少包的运行时安装 – 任何在容器启动过程中发生的软件安装,例如Python的pip或操作系统apt-get,都会增加训练作业的延迟。 最小化这种启动延迟需要在运行时安装与容器构建时安装的灵活性和简单性之间进行权衡。 如果您将自己的 Docker 容器与 SageMaker 一起使用,请参阅 调整您自己的 Docker 容器以与 SageMaker 一起工作. 如果你依赖 预构建的 SageMaker 容器镜像,你需要 扩展预建容器 并明确管理这些容器。 如果您的运行时安装显着增加了启动延迟,请考虑这一点。
  • 避免频繁更新 Docker 镜像 – 如果您将自己的 Docker 容器与 SageMaker 一起使用,请尽量避免在每次作业运行时更新它。 如果 Docker 镜像在两次作业提交之间发生变化,将重新使用暖池,但启动过程将需要从 Amazon ECR 重新拉取容器镜像,而不是重新使用缓存的容器镜像。 如果必须更新 Docker 映像,请将更新限制在最后一个 Docker 层以利用 Docker 层缓存。 理想情况下,您应该删除可能在迭代过程中发生变化的 Dockerfile 内容,例如超参数、数据集定义和 ML 代码本身。 要迭代 ML 代码而不必在每次更改时重建 Docker 映像,您可以采用 SageMaker Training Toolkit 中提倡的框架容器范例。 如果你想用自己的代码开发一个框架容器,参考这个 亚马逊 SageMaker 教程.

在多个用户之间共享暖池

与大型数据科学家团队合作时,您可以共享具有 匹配工作标准, 比如同 AWS身份和访问管理 (IAM) 角色或容器镜像。

让我们看一个示例时间线。 User-1 开始训练作业,该作业完成并生成一个新的暖池。 当 user-2 启动训练作业时,该作业将重用现有的暖池,从而实现快速作业启动。 当 user-2 的作业在使用暖池的情况下运行时,如果另一个用户开始训练作业,则会创建第二个暖池。

这种重用行为有助于通过在启动类似作业的用户之间共享暖池来降低成本。 如果要避免在用户之间共享暖池,那么用户的作业一定不能有 匹配工作标准 (例如,他们必须使用不同的 IAM 角色)。

作业完成时通知用户

使用暖池进行实验时,我们建议在用户的工作完成时通知他们。 这允许用户在暖池到期或 停止 如果不再需要,可以使用温水池。 你也可以 自动触发通知 通过 亚马逊EventBridge.

用于快速实验和故障排除训练作业的更多工具

使用暖池,您可以在 20 秒内开始一项工作。 某些场景需要实时、动手的交互式实验和故障排除。 开源 SageMaker SSH 帮助程序库 允许您 shell 进入 SageMaker 训练容器并进行远程开发和调试。

结论

借助 SageMaker Training Managed Warm Pools,您可以在每次作业后让模型训练硬件实例保持温暖一段指定的时间。 这可以将模型训练作业的启动延迟减少多达 8 倍。 SageMaker 培训托管温池在所有提供 SageMaker 模型培训的公共 AWS 区域可用。

要开始,请参阅 使用 SageMaker 托管温池进行训练.


关于作者

罗米·达塔(Romi Datta)罗米·达塔(Romi Datta)博士  是 Amazon SageMaker 团队的产品管理高级经理,负责培训、处理和功能存储。 他在 AWS 工作了 4 年多,在 SageMaker、S3 和 IoT 担任多个产品管理领导职务。 在加入 AWS 之前,他曾在 IBM、德州仪器和英伟达担任各种产品管理、工程和运营领导职务。 他拥有硕士和博士学位。 拥有德克萨斯大学奥斯汀分校的电气和计算机工程博士学位,以及芝加哥大学布斯商学院的 MBA 学位。

Amazon SageMaker 培训托管温池 PlatoBlockchain 数据智能的最佳实践。垂直搜索。人工智能。阿伦·纳加拉詹 是 Amazon SageMaker 团队的首席工程师,专注于训练和 MLOps 领域。 从 SageMaker 发布那年起,他就一直在 SageMaker 团队工作,乐于为 SageMaker 的不同领域做出贡献,包括实时推理和模型监视器产品。 他喜欢探索太平洋西北地区的户外活动和爬山。

Amazon SageMaker 培训托管温池 PlatoBlockchain 数据智能的最佳实践。垂直搜索。人工智能。艾米尤 是 AWS SageMaker 的软件开发经理。 她专注于召集软件工程师团队来构建、维护和开发 SageMaker 培训平台的新功能,帮助客户更高效、更轻松地培训他们的 ML 模型。 她对 ML 和 AI 技术充满热情,尤其是在研究生阶段与图像和视觉相关的领域。 在业余时间,她喜欢与家人一起从事音乐和艺术工作。

Amazon SageMaker 培训托管温池 PlatoBlockchain 数据智能的最佳实践。垂直搜索。人工智能。 李思飞 是 Amazon AI 的一名软件工程师,她致力于构建 Amazon 机器学习平台,并且是 Amazon SageMaker 发布团队的一员。 在业余时间,她喜欢演奏音乐和阅读。

Amazon SageMaker 培训托管温池 PlatoBlockchain 数据智能的最佳实践。垂直搜索。人工智能。赵娜 是 AWS SageMaker 的一名软件开发工程师。 她热衷于 ML/AI 技术,一直专注于构建 SageMaker Training 平台,使客户能够快速轻松地训练机器学习模型。 工作之余,她喜欢旅行和与家人共度时光。

Amazon SageMaker 培训托管温池 PlatoBlockchain 数据智能的最佳实践。垂直搜索。人工智能。帕拉斯梅赫拉 是 AWS 的高级产品经理。 他专注于帮助构建 Amazon SageMaker 培训和处理。 在业余时间,Paras 喜欢与家人共度时光,也喜欢在湾区骑公路自行车。 你可以在 LinkedIn.

Amazon SageMaker 培训托管温池 PlatoBlockchain 数据智能的最佳实践。垂直搜索。人工智能。吉利纳楚姆 是一名高级 AI/ML 专家解决方案架构师,是 EMEA 亚马逊机器学习团队的一员。 Gili 对训练深度学习模型的挑战以及机器学习如何改变我们所知道的世界充满热情。 在业余时间,吉利喜欢打乒乓球。

Amazon SageMaker 培训托管温池 PlatoBlockchain 数据智能的最佳实践。垂直搜索。人工智能。奥利维尔·克鲁尚 是 AWS 的机器学习专家解决方案架构师,常驻法国。 Olivier 帮助 AWS 客户(从小型初创公司到大型企业)开发和部署生产级机器学习应用程序。 在业余时间,他喜欢阅读研究论文并与朋友和家人一起探索荒野。

Amazon SageMaker 培训托管温池 PlatoBlockchain 数据智能的最佳实践。垂直搜索。人工智能。艾米丽·韦伯(Emily Webber) 在 SageMaker 推出后就加入了 AWS,从那时起就一直在努力向全世界宣传它! 除了为客户打造新的机器学习体验之外,Emily 还喜欢冥想和研究藏传佛教。

时间戳记:

更多来自 AWS机器学习