使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

使用 Amazon SageMaker 中的资源标记为 ML 环境和工作负载设置企业级成本分配

随着企业和 IT 领导者希望加速机器学习 (ML) 的采用,越来越需要了解 ML 环境的支出和成本分配,以满足企业需求。 如果没有适当的成本管理和治理,您的 ML 支出可能会导致您的每月 AWS 账单出现意外。 亚马逊SageMaker 是云中完全托管的 ML 平台,为我们的企业客户提供工具和资源,以建立成本分配措施并提高对团队、业务部门、产品等的详细成本和使用情况的可见性。

在这篇文章中,我们将分享有关 SageMaker 环境和工作负载成本分配的提示和最佳实践。 在包括 SageMaker 在内的几乎所有 AWS 服务中,将标签应用于资源是跟踪成本的标准方法。 这些标签可以帮助您通过开箱即用的解决方案(如 AWS 成本管理器AWS 预算,以及基于来自的数据构建的定制解决方案 AWS 成本和使用报告 (CUR)。

成本分配标签

AWS 上的成本分配是一个三步过程:

  1. 成本分配标签 到您的资源。
  2. 成本分配标签 AWS 账单控制台的部分。
  3. 使用标签跟踪和过滤成本分配报告。

在您创建标签并将其附加到资源后,它们会出现在 AWS 账单控制台的 成本分配标签 根据第 用户定义的成本分配标签. 标签在创建后最多可能需要 24 小时才会显示。 然后,您需要为 AWS 激活这些标签以开始跟踪您的资源。 通常,激活标签后,标签大约需要 24-48 小时才能显示在 Cost Explorer 中。 检查您的标签是否正常工作的最简单方法是在 Cost Explorer 的标签过滤器中查找您的新标签。 如果它在那里,那么您就可以使用标签进行成本分配报告了。 然后,您可以选择按标签键对结果进行分组或按标签值过滤,如以下屏幕截图所示。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

需要注意的一件事:如果您使用 AWS组织 并且已关联 AWS 账户,标签只能在主要付款人账户中激活。 或者,您还可以为 AWS 账户激活 CUR,以将成本分配报告作为 CSV 文件启用,其中您的使用情况和成本按您的活动标签分组。 这使您可以更详细地跟踪您的成本,并更轻松地设置您自己的自定义报告解决方案。

SageMaker 中的标记

概括地说,标记 SageMaker 资源可以分为两个存储桶:

  • 标记 SageMaker 笔记本环境,或者 亚马逊SageMaker Studio 域和域用户,或 SageMaker 笔记本实例
  • 标记 SageMaker 管理的作业(标记、处理、训练、超参数调整、批量转换等)和资源(例如模型、工作团队、端点配置和端点)

我们在这篇文章中更详细地介绍了这些内容,并提供了一些关于如何应用治理控制以确保良好的标记卫生的解决方案。

标记 SageMaker Studio 域和用户

Studio 是一个基于 Web 的 ML 集成开发环境 (IDE),可让您构建、训练、调试、部署和监控您的 ML 模型。 您可以快速启动 Studio 笔记本,并在不中断工作的情况下动态调高或调低基础计算资源。

要自动标记这些动态资源,您需要将标签分配给 SageMaker 域和已配置访问这些资源的域用户。 您可以在的 tags 参数中指定这些标签 创建域 or 创建用户配置文件 在配置文件或域创建期间,或者您可以稍后使用 添加标签 API。 Studio 会自动将这些标签复制并分配给在域中或由特定用户创建的 Studio 笔记本。 您还可以通过在 Studio 控制面板中编辑域设置将标签添加到 SageMaker 域。

以下是在创建过程中为配置文件分配标签的示例。

aws sagemaker create-user-profile --domain-id  --user-profile-name data-scientist-full --tags Key=studiouserid,Value= --user-settings ExecutionRole=arn:aws:iam:::role/SageMakerStudioExecutionRole_datascientist-full

要标记现有域和用户,请使用 add-tags API。 然后将标签应用于任何新笔记本。 要将这些标签应用于现有笔记本,您需要重新启动属于该用户配置文件的 Studio 应用程序(内核网关和 Jupyter 服务器)。 这不会导致笔记本数据丢失。 参考这个 关闭和更新 SageMaker Studio 和 Studio 应用程序 了解如何删除和重新启动 Studio 应用程序。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

标记 SageMaker 笔记本实例

对于 SageMaker 笔记本实例,标记将应用于实例本身。 标签分配给在同一实例中运行的所有资源。 您可以使用标签中的参数以编程方式指定标签 创建笔记本实例 API 或在实例创建期间通过 SageMaker 控制台添加它们。 您还可以随时使用 添加标签 API 或通过 SageMaker 控制台。

请注意,这不包括 SageMaker 托管作业和资源,例如训练和处理作业,因为它们位于服务环境中,而不是在实例上。 在下一节中,我们将更详细地讨论如何将标记应用于这些资源。

标记 SageMaker 托管作业和资源

对于 SageMaker 托管的作业和资源,标记必须应用于 tags 属性作为每个 API 请求的一部分。 一个 SKLearnProcessor 示例在以下代码中进行了说明。 您可以在 GitHub回购.

from sagemaker import get_execution_role
from sagemaker.sklearn.processing import SKLearnProcessor

processing_tags = [{' Key':"cost-center','Value':'TF2WorkflowProcessing'}]
sklearn_processorl = SKLearnProcessor(framework_version='0.23-1' ,
									 role=get_execution_role(),
									 instance_type='ml.m5.xlarge',
									 instance_count=2,
									 tags=processing_tags)

标记 SageMaker 管道

对于 SageMaker 管道,您可以将整个管道标记为一个整体,而不是每个单独的步骤。 SageMaker 管道会自动将标签传播到每个管道步骤。 如果需要,您仍然可以选择向各个步骤添加额外的单独标签。 在 Studio UI 中,管道标签显示在元数据部分。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

要将标签应用到管道,请使用 SageMaker Python SDK:

pipeline_tags = [ {'Key': 'pipeline-type', 'Value': 'TF2WorkflowPipeline'}]
pipeline.upsert(role_arn=role, tags=pipeline_tags)
execution = pipeline.start()

使用 IAM 策略强制标记

尽管标记是实施云管理和治理策略的有效机制,但如果您将其留给最终用户,则执行正确的标记行为可能具有挑战性。 如果缺少特定标签,如何防止创建 ML 资源,如何确保应用正确的标签,以及如何防止用户删除现有标签?

您可以使用 AWS身份和访问管理 (IAM) 政策。 以下代码是阻止 SageMaker 操作的策略示例,例如 CreateDomain or CreateNotebookInstance 如果请求不包含环境键和列表值之一。 这 ForAllValues 修饰符 aws:TagKeys 条件键表示只有键 environment 请求中允许。 这会阻止用户包含其他密钥,例如意外使用 Environment 而不是 environment.

"sagemaker:CreateTrainingJob"
      ],
      "{
      "Sid": "SageMakerEnforceEnvtOnCreate",
      "Action": [
        "sagemaker:CreateDomain",
        "sagemaker:CreateEndpoint",
        "sagemaker:CreateNotebookInstance",
        Effect": "Allow",
      "Resource": "*",
  "Condition": {
            "StringEquals": {
                "aws:RequestTag/environment": [
                    "dev","staging","production"
                ]
            },
            "ForAllValues:StringEquals": {"aws:TagKeys": "environment"}
        }
      }

标签政策服务控制策略 (SCP)也可以是标准化您的 ML 资源的创建和标记的好方法。 有关如何实施在组织级别强制执行和验证标记的标记策略的更多信息,请参阅 成本分配博客系列 #3:实施和验证 AWS 资源标签.

成本分配报告

您可以通过在 Cost Explorer 上过滤视图来查看标签,查看 月度成本分配报告,或通过检查 CUR。

在 Cost Explorer 中可视化标签

Cost Explorer 是一种工具,可让您查看和分析您的成本和使用情况。 您可以使用主图探索您的使用情况和成本:Cost Explorer 成本和使用情况报告。 有关如何使用 Cost Explorer 的快速视频,请查看 如何使用 Cost Explorer 分析我的支出和使用情况?

使用 Cost Explorer,您可以按标签筛选您查看 AWS 成本的方式。 通过...分组 允许我们通过标签键过滤掉结果,例如 Environment, DeploymentCost Center. 标签过滤器帮助我们选择我们想要的值,而不管键是什么。 例子包括 ProductionStaging. 请记住,您必须在添加和激活标签后运行资源; 否则,Cost Explorer 将没有任何使用数据,并且标签值不会显示为过滤器或按选项分组。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

以下屏幕截图是按所有值过滤的示例 BusinessUnit 标签。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

检查 CUR 中的标签

成本和使用情况报告包含最全面的可用成本和使用数据集。 该报告包含您的 AWS 账户使用的 AWS 产品、使用类型和操作的每个唯一组合的行项目。 您可以自定义 CUR 以按小时或按天聚合信息。 月度成本分配报告是设置成本分配报告的一种方式。 您可以设置一个 月度成本分配报告 按产品类别和关联账户用户列出您账户的 AWS 使用情况。 该报告包含与 详细的结算报告 以及标签键的附加列。 您可以按照以下步骤进行设置并下载您的报告 月度成本分配报告.

以下屏幕截图显示了用户定义的标签键在 CUR 中的显示方式。 用户定义的标签键有前缀 user,如 user:Departmentuser:CostCenter. AWS 生成的标签键具有前缀 aws.

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

使用 Amazon Athena 和 Amazon QuickSight 可视化 CUR

亚马逊雅典娜 是一种交互式查询服务,可以使用标准 SQL 轻松分析 Amazon S3 中的数据。 Athena 是无服务器的,因此无需管理基础架构,您只需为运行的查询付费。 要将 Athena 与 CUR 集成,请参阅 使用 Amazon Athena 查询成本和使用情况报告. 然后,您可以构建自定义查询以使用标准 SQL 查询 CUR 数据。 以下屏幕截图是一个查询示例,用于过滤所有具有 TF2WorkflowTraining 值的资源 cost-center 标签。

select * from {$table_name} where resource_tags_user_cost-center= 'TF2WorkflowTraining'

在下面的示例中,我们试图找出哪些资源在 cost-center 标签。

SELECT
 bill_payer_account_id, line_item_usage_account_id, DATE_FORMAT((line_item_usage_start_date), '%Y-%m-%d') AS day_line_item_usage_start_date, line_item_resource_id, line_item_usage_type, resource_tags_user_cost-center
FROM
{$table_name} 
WHERE
 resource_tags_user_cost-center IS NULL
AND line_item_product_code = 'AmazonSageMaker'

更多信息和示例查询可以在 AWS CUR 查询库.

您还可以将 CUR 数据输入 亚马逊QuickSight,您可以在其中以任何您喜欢的方式对其进行切片和切块,以用于报告或可视化目的。 有关将 CUR 数据摄取到 QuickSight 中的说明,请参阅 如何将 AWS 成本和使用报告 (CUR) 提取并可视化到 Amazon QuickSight 中.

使用标签进行预算监控

如果支出意外激增,AWS 预算是提供早期警告的绝佳方式。 您可以创建自定义预算,当您的 ML 成本和使用量超过(或预计超过)用户定义的阈值时提醒您。 借助 AWS 预算,您可以监控每月 ML 总成本或过滤预算以跟踪与特定使用维度相关的成本。 例如,您可以将预算范围设置为包括标记为的 SageMaker 资源成本 cost-center: ML-Marketing,如以下屏幕截图所示。 有关如何设置 AWS 预算的其他维度和详细说明,请参阅 此处.

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

预算警报,您可以在超出(或即将)超出预算限制时发送通知。 这些警报也可以发布到 亚马逊简单通知服务 (Amazon SNS) 主题。 一个 AWS Lambda 然后调用订阅 SNS 主题的函数,并且可以采取任何以编程方式实现的操作。

AWS 预算还允许您配置 预算行动,这是您在超出预算阈值(实际或预测金额)时可以采取的步骤。 这种级别的控制可让您减少帐户中的意外超支。 您可以在帐户中配置对成本和使用情况的特定响应,这些响应将在超出预算目标时自动应用或通过工作流审批流程应用。 这是一个非常强大的解决方案,可确保您的 ML 支出与业务目标保持一致。 您可以选择要采取的操作类型。 例如,当超出预算阈值时,您可以将特定 IAM 用户从管理员权限移至只读权限。 对于使用组织的客户,您可以通过将操作从管理员移动到只读来将操作应用于整个组织单位。 有关如何使用预算操作管理成本的更多详细信息,请参阅 如何在 AWS 多账户环境中管理成本超支 - 第 1 部分.

您还可以设置报告,以每天、每周或每月的节奏监控现有预算的绩效,并将该报告发送到多达 50 个电子邮件地址。 和 AWS 预算报告,您可以将所有与 SageMaker 相关的预算合并到一个报告中。 此功能使您能够从单个位置跟踪您的 SageMaker 足迹,如以下屏幕截图所示。 您可以选择每天、每周或每月接收这些报告(我选择了 包周 对于此示例),然后选择您想要接收它们的星期几。

此功能有助于让您的利益相关者了解您的 SageMaker 成本和使用情况,并帮助他们了解支出的趋势何时不符合预期。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

设置此配置后,您应该会收到类似于以下内容的电子邮件。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。

结论

在这篇文章中,我们展示了如何为 SageMaker 设置成本分配标记,并分享了有关为 SageMaker 环境和工作负载标记最佳实践的技巧。 然后,我们讨论了不同的报告选项,例如 Cost Explorer 和 CUR,以帮助您提高对 ML 支出的可见性。 最后,我们展示了 AWS 预算和预算摘要报告,以帮助您监控组织的 ML 支出。

有关应用和激活成本分配标签的更多信息,请参阅 用户定义的成本分配标签.


关于作者

肖恩·摩根(Sean Morgan)肖恩·摩根(Sean Morgan) 是 AWS 的 AI/ML 解决方案架构师。 他在半导体和学术研究领域拥有丰富的经验,并利用自己的经验帮助客户在 AWS 上实现目标。 在空闲时间,Sean 是一名活跃的开源贡献者和维护者,并且是 TensorFlow Add-ons 的特殊兴趣小组负责人。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。布伦特·拉博斯基 专注于AWS的数据科学,并利用他的专业知识来帮助AWS客户开展自己的数据科学项目。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。尼莱什·谢蒂 在 AWS 担任高级技术客户经理,他帮助企业支持客户简化他们在 AWS 上的云操作。 他对机器学习充满热情,并拥有担任顾问、架构师和开发人员的经验。 工作之余,他喜欢听音乐和观看体育比赛。

使用 Amazon SageMaker PlatoBlockchain Data Intelligence 中的资源标记为 ML 环境和工作负载设置企业级成本分配。 垂直搜索。 哎。詹姆斯吴 是 AWS 的高级 AI/ML 专家解决方案架构师。 帮助客户设计和构建 AI/ML 解决方案。 James 的工作涵盖了广泛的 ML 用例,主要兴趣在于计算机视觉、深度学习和在整个企业中扩展 ML。 在加入 AWS 之前,James 担任了 10 多年的架构师、开发人员和技术领导者,其中包括 6 年的工程经验和 4 年的营销和广告行业经验。

时间戳记:

更多来自 AWS机器学习