分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 | 亚马逊网络服务

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 | 亚马逊网络服务

2021年,我们推出了 AWS Support 主动服务 作为部分 AWS 企业支持 计划。 自推出以来,我们已经帮助数百家客户优化了他们的工作负载、设置了防护机制,并提高了他们机器学习 (ML) 工作负载成本和使用情况的可见性。

在这一系列的帖子中,我们分享了关于优化成本的经验教训 亚马逊SageMaker. 在这篇文章中,我们专注于使用数据预处理 Amazon SageMaker处理亚马逊SageMaker数据牧马人 工作。

数据预处理在以数据为中心的 AI 方法中起着关键作用。 然而,就计算资源、时间和人力而言,为 ML 训练和评估准备原始数据通常是一项繁琐且要求很高的任务。 数据准备通常需要从不同来源进行整合,并处理缺失值或噪声值、异常值等。

此外,除了常见的提取、转换和加载 (ETL) 任务外,ML 团队有时还需要更高级的功能,例如创建快速模型来评估数据并生成特征重要性分数或训练后模型评估作为 MLOps 管道的一部分。

SageMaker 提供了两个专门用于帮助解决这些问题的功能:SageMaker Processing 和 Data Wrangler。 SageMaker Processing 使您能够在完全托管的基础设施上轻松运行预处理、后处理和模型评估。 Data Wrangler 通过使用单一可视化界面和完全分布式数据处理环境简化数据源集成和特征工程的过程,减少了聚合和准备数据所需的时间。

SageMaker 的这两项功能都提供了极大的灵活性,并提供了多种 I/O、存储和计算选项。 但是,错误地设置这些选项可能会导致不必要的成本,尤其是在处理大型数据集时。

在本文中,我们分析定价因素并为 SageMaker Processing 和 Data Wrangler 作业提供成本优化指导。

SageMaker处理

SageMaker Processing 是一种托管解决方案,用于运行数据处理和模型评估工作负载。 您可以在 ML 工作流中的数据处理步骤中使用它,例如特征工程、数据验证、模型评估和模型解释。 借助 SageMaker Processing,您可以使用自己的自定义处理脚本并选择构建自定义容器或使用 SageMaker 托管容器以及 scikit-learn、Lime、Spark 等常用框架。

SageMaker Processing 根据您选择的实例类型的使用时间和附加到该实例的预配置存储向您收费。 在第 1 部分中,我们展示了如何开始使用 AWS 成本管理器 确定 SageMaker 中的成本优化机会。

您可以通过对使用类型应用过滤器来过滤处理成本。 这些使用类型的名称如下:

  • REGION-Processing:instanceType (例如, USE1-Processing:ml.m5.large)
  • REGION-Processing:VolumeUsage.gp2 (例如, USE1-Processing:VolumeUsage.gp2)

要在 Cost Explorer 中查看您的 SageMaker Processing 成本,首先使用 SageMaker 过滤 服务,和 使用类型, 您可以通过输入 processing:ml 前缀并选择菜单上的列表。

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

避免加工和管道开发成本

在调整和优化 SageMaker 处理作业的运行持续时间之前,我们会检查有关历史作业运行的高级指标。 您可以选择两种方法来执行此操作。

首先,您可以访问 处理中 SageMaker控制台上的页面。

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

或者,您可以使用 列表处理作业 API.

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

处理作业状态可以是 InProgress, Completed, Failed, StoppingStopped.

在开发新的 MLOps 管道时,大量失败的作业很常见。 但是,在 SageMaker 上启动作业之前,您应该始终测试并尽一切努力验证作业,因为使用的资源会产生费用。 为此,您可以使用 SageMaker Processing 本地模式. 本地模式是 SageMaker SDK 的一项功能,允许您创建估算器、处理器和管道,并将它们部署到本地开发环境。 这是在 SageMaker 托管环境中运行脚本之前测试脚本的好方法。 SageMaker 托管容器和您自己提供的容器支持本地模式。 要了解有关如何使用本地模式的更多信息 Amazon SageMaker管道,请参阅 本地模式.

优化与 I/O 相关的成本

SageMaker 处理作业提供对三个数据源的访问,作为托管的一部分 处理输入: 亚马逊简单存储服务 (Amazon S3), 亚马逊雅典娜亚马逊Redshift. 有关更多信息,请参阅 处理S3输入, 雅典娜数据集定义RedshiftDataset定义

在研究优化之前,请务必注意,尽管 SageMaker 处理作业支持这些数据源,但它们不是强制性的。 在您的处理代码中,您可以实现从任何来源下载访问数据的任何方法(前提是处理实例可以访问它)。

为了更好地了解处理性能和检测优化机会,我们建议遵循 记录最佳实践 在你的处理脚本中。 SageMaker 将您的处理日志发布到 亚马逊CloudWatch.

在以下示例作业日志中,我们看到脚本处理耗时 15 分钟(介于 Start custom scriptEnd custom script).

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

但是,在 SageMaker 控制台上,我们看到作业额外花费了 4 分钟(几乎占作业总运行时间的 25%)。

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

这是因为除了我们的处理脚本花费的时间之外,SageMaker 管理的数据下载和上传也需要时间(4 分钟)。 如果这被证明是成本的很大一部分,请考虑加快下载时间的替代方法,例如使用具有多处理功能的 Boto3 API 来同时下载文件,或者使用第三方库作为 WebDataset 或 s5cmd 以更快地从 Amazon S3 下载. 有关详细信息,请参阅 使用 s3cmd 并行化 S5 工作负载. 请注意,由于以下原因,此类方法可能会在 Amazon S3 中产生费用 数据传输.

处理作业也支持 管道模式. 通过这种方法,SageMaker 将输入数据从源直接流式传输到您的处理容器,进入命名管道,而无需使用 ML 存储卷,从而消除了数据下载时间和更小的磁盘容量。 然而,这需要比简单地从磁盘上的文件读取更复杂的编程模型。

如前所述,SageMaker Processing 还支持 Athena 和 Amazon Redshift 作为数据源。 使用这些源设置处理作业时,SageMaker 会自动将数据复制到 Amazon S3,处理实例会从 Amazon S3 位置获取数据。 但是,作业完成后,没有托管清理过程,复制的数据仍将保留在 Amazon S3 中,并可能产生不必要的存储费用。 因此,在使用 Athena 和 Amazon Redshift 数据源时,请确保实施清理程序,例如 Lambda 函数 按计划运行 或在一个 拉姆达步骤 作为 SageMaker 管道的一部分。

与下载一样,上传处理工件也可以成为优化的机会。 使用配置处理作业的输出时 ProcessingS3Output 参数,你可以指定哪个 S3UploadMode 使用。 这 S3UploadMode 参数默认值为 EndOfJob,这将使 SageMaker 在作业完成后上传结果。 但是,如果您的处理作业产生多个文件,您可以设置 S3UploadModeContinuous,从而可以在处理继续的同时上传工件,并减少作业运行时间。

适当大小的处理作业实例

选择正确的实例类型和大小是优化 SageMaker 处理作业成本的主要因素。 您可以通过迁移到同一实例系列中的不同版本或迁移到另一个实例系列来调整实例大小。 在同一个实例族内迁移时,只需要考虑CPU/GPU和内存。 有关选择正确处理资源的更多信息和一般指导,请参阅 确保 Amazon SageMaker 上的高效计算资源.

为了微调实例选择,我们首先分析 CloudWatch 中的处理作业指标。 有关详细信息,请参阅 使用Amazon CloudWatch监控Amazon SageMaker.

CloudWatch 从 SageMaker 收集原始数据并将其处理成可读的、近乎实时的指标。 尽管这些统计数据会保留 15 个月,但 CloudWatch 控制台将搜索限制为过去 2 周内更新的指标(这确保仅显示当前作业)。 处理作业指标可以在 /aws/sagemaker/ProcessingJobs 命名空间中找到,收集的指标是 CPUUtilization, MemoryUtilization, GPUUtilization, GPUMemoryUtilizationDiskUtilization.

以下屏幕截图显示了我们之前看到的处理作业的 CloudWatch 示例。

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

在此示例中,我们看到平均 CPU 和内存值(这是 CloudWatch 中的默认值):平均 CPU 使用率为 0.04%,内存为 1.84%,磁盘使用率为 13.7%。 为了调整大小,请始终考虑最大 CPU 和内存使用率(在此示例中,前 98 分钟的最大 CPU 使用率为 3%)。 作为一般规则,如果您的最大 CPU 和内存使用率始终低于 40%,您可以放心地将机器减半。 例如,如果您使用的是 ml.c5.4xlarge 实例,则可以迁移到 ml.c5.2xlarge,这可以将成本降低 50%。

数据管理员职位

Data Wrangler 是一个特性 亚马逊SageMaker Studio 为数据探索和处理提供可重复和可扩展的解决方案。 您可以使用 Data Wrangler 界面以交互方式导入、分析、转换和特征化您的数据。 这些步骤被记录在一个配方(一个 .flow 文件)中,然后您可以在 Data Wrangler 作业中使用它。 这有助于您对数据重新应用相同的数据转换,还可以作为 ML 管道的一部分或独立扩展到分布式批处理数据处理作业。

有关在 Studio 中优化 Data Wrangler 应用程序的指南,请参阅本系列的第 2 部分。

在本节中,我们重点关注优化 Data Wrangler 作业。

数据牧马人使用 SageMaker Spark 处理作业 使用 Data Wrangler 管理的容器。 此容器运行作业中 .flow 文件的说明。 与任何处理作业一样,Data Wrangler 根据您选择的实例的使用持续时间和附加到该实例的配置存储向您收费。

在 Cost Explorer 中,您可以通过对使用类型应用过滤器来过滤 Data Wrangler 作业成本。 这些使用类型的名称是:

  • REGION-processing_DW:instanceType (例如, USE1-processing_DW:ml.m5.large)
  • REGION-processing_DW:VolumeUsage.gp2 (例如, USE1-processing_DW:VolumeUsage.gp2)

要在 Cost Explorer 中查看您的 Data Wrangler 成本,请过滤服务以使用 SageMaker,以及 使用类型, 选择 processing_DW 前缀并选择菜单上的列表。 这将向您显示与实例使用(小时)和存储量 (GB) 相关的成本。 (如果您想查看 Studio Data Wrangler 成本,您可以按 Studio_DW 字首。)

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

调整和安排 Data Wrangler 作业实例的大小

目前,Data Wrangler 仅支持具有以下实例大小的 m5 实例:ml.m5.4xlarge、ml.m5.12xlarge 和 ml.m5.24xlarge。 您可以使用分布式作业功能来微调您的作业成本。 例如,假设您需要处理需要 350 GiB RAM 的数据集。 4xlarge (128 GiB) 和 12xlarge (256 GiB) 可能无法处理,将导致您使用 m5.24xlarge 实例 (768 GiB)。 但是,您可以使用两个 m5.12xlarge 实例 (2 * 256 GiB = 512 GiB) 并将成本降低 40% 或三个 m5.4xlarge 实例 (3 * 128 GiB = 384 GiB) 并节省 50% 的 m5.24xlarge实例成本。 您应该注意,这些是估计值,分布式处理可能会引入一些会影响整体运行时间的开销。

更改实例类型时,请确保更新 火花配置 因此。 例如,如果您有一个配置有属性的初始 ml.m5.4xlarge 实例作业 spark.driver.memory 设置为2048并 spark.executor.memory 设置为55742,后来扩展到ml.m5.12xlarge,这些配置值需要增加,否则将成为处理作业的瓶颈。 您可以在 Data Wrangler GUI 或附加到配置路径的配置文件中更新这些变量(请参阅以下示例)。

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

Data Wrangler 的另一个引人注目的功能是能够 设置一个预定的工作. 如果您定期处理数据,您可以创建一个计划来自动运行处理作业。 例如,您可以创建一个计划,在您获取新数据时自动运行处理作业(例如,请参阅 导出到 Amazon S3 or 导出到 Amazon SageMaker 功能商店). 但是,您应该注意,当您创建计划时,Data Wrangler 会创建一个 eventRule 在 EventBridge 中。 这意味着您还需要为您创建的事件规则(以及用于运行处理作业的实例)付费。 有关详细信息,请参阅 Amazon EventBridge 定价.

结论

在这篇文章中,我们提供了有关预处理时成本分析和最佳实践的指导

使用 SageMaker Processing 和 Data Wrangler 作业的数据。 与预处理类似,在构建、训练和运行 ML 模型时有许多选项和配置设置可能会导致不必要的成本。 因此,随着机器学习成为跨行业的强大工具,ML 工作负载需要保持成本效益。

SageMaker 提供广泛而深入的功能集,以促进 ML 管道中的每个步骤。

这种稳健性还提供了持续的成本优化机会,而不会影响性能或敏捷性。


作者简介

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。迪帕里•拉贾莱 是 AWS 的高级 AI/ML 专家。 她与企业客户合作,为在 AWS 生态系统中部署和维护 AI/ML 解决方案提供技术指导和最佳实践。 她曾与众多组织合作处理涉及 NLP 和计算机视觉的各种深度学习用例。 她热衷于帮助组织利用生成式 AI 来增强他们的使用体验。 在业余时间,她喜欢电影、音乐和文学。

分析 Amazon SageMaker 支出并根据使用情况确定成本优化机会,第 3 部分:处理和 Data Wrangler 作业 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。乌里·罗森博格 是欧洲、中东和非洲的人工智能和机器学习专家技术经理。 Uri 总部位于以色列,致力于为企业客户提供有关 ML 的所有事物的支持,以大规模设计、构建和运营。 在业余时间,他喜欢骑自行车、徒步旅行和看日落(每天至少一次)。

时间戳记:

更多来自 AWS机器学习