优化 Amazon SageMaker

亚马逊 SageMaker Canvas 通过自动关闭空闲应用程序优化成本

作者 :Davide Gallitelli, Gunjan Garg, Ziyao Huang, 和 Huong Nguyen 发表于 2023年11月24日

关键要点

  • 采用 亚马逊 SageMaker Canvas ,一个无代码的机器学习和生成式 AI 工作空间,帮助客户简化机器学习技术的应用。
  • 新增 自动关闭空闲应用程序 的功能,以优化使用 SageMaker Canvas 的成本。
  • 介绍两种控制成本的方法:定时关闭应用程序和自动关闭空闲应用程序。

随着各类公司纷纷采用亚马逊 SageMaker Canvas,客户们开始寻求关注成本优化的方案。正如 中定义的那样,优化成本的工作负载能够充分利用所有资源,满足功能需求,并在最低价格点实现成果。

今天,我们将介绍一种新的方法,用于进一步优化 SageMaker Canvas 应用程序的成本。SageMaker Canvas 现在收集 指标,提供应用程序使用情况和空闲状态的洞察。客户可以使用这些信息自动关闭空闲的 SageMaker Canvas 应用程序,避免产生意外费用。

在本文中,我们将展示如何通过简单的无服务器架构自动关闭空闲的 SageMaker Canvas 应用程序以控制成本。本文中使用的模板可在 找到。

理解与跟踪成本

了解和控制任何工作负载(无论是本地还是云端)的成本,教育总是第一步。让我们先回顾一下 模型。简而言之,SageMaker Canvas采用按需付费的定价模型,基于两个维度:

维度描述
工作空间实例以前称为会话时间,与运行 SageMaker Canvas 应用程序相关的成本
AWS 服务费用训练模型、部署端点、生成推断所产生的费用

客户始终可以完全控制 SageMaker Canvas 启动的资源,并通过 AWS 计费和成本管理服务跟踪与 SageMaker Canvas应用程序相关的费用。如需更多信息,请参考 。

为了限制工作空间实例的相关费用,最佳实践是注销,而不是关闭浏览器标签。要注销,请选择 SageMaker Canvas 应用程序左侧面板上的注销 按钮。

自动关闭 SageMaker Canvas 应用程序

对于希望提供自动控制以关闭 SageMaker Canvas 应用程序并控制成本的 IT 管理员,有两种方法可以选择:

  1. 定时关闭应用程序 (例如每天的19:00或每周五的18:00)
  2. 自动关闭空闲应用程序 (当应用程序在两个小时内没有被使用时)

定时关闭应用程序

通过使用 cron 表达式(与亚马逊 EventBridge Cron 规则相结合),可以非常轻松地实现 SageMaker Canvas应用程序的定时关闭,这需要一个计算组件(AWS Lambda 函数)来调用亚马逊 SageMaker API 的 DeleteApp。在 一文中对此进行了讨论,并在相关的 实现。

上述架构的一个优势在于,它非常容易复制,以实现 SageMaker Canvas 应用程序的定时创建。通过结合定时创建和定时删除,云管理员可以确保 SageMaker Canvas应用程序在用户开始工作日(例如工作日的早上9点)时准备就绪,并在工作日结束时(例如晚上7点)自动关闭(周末始终关闭)。所需的操作只需将调用 DeleteApp API 的代码行更改为 CreateApp,并更新 cron 表达式以反映所需的应用程序创建时间。

尽管该方法易于实施和测试,但所建议的架构的一个缺点是,它并未考虑应用程序当前是否正在使用,而是无条件关闭它,这可能会导致与正在使用的用户发生摩擦,因为他们的会话可能会突然结束。

您可以从以下 GitHub 仓库获得与这一架构相关的模板:

自动关闭空闲应用程序

从今天开始,亚马逊 SageMaker Canvas 会发出 CloudWatch指标,提供应用程序使用和空闲状态的洞察。这使得管理员能够定义一个解决方案来读取空闲指标,将其与阈值进行比较,并定义特定的自动关闭逻辑。以下段落将提供有关 SageMaker Canvas 发出的空闲指标的更详细概述。

为了实现基于空闲指标的 SageMaker Canvas 应用程序的自动关闭,我们提供了一个 AWS CloudFormation模板。该模板包含三个主要组件:

  1. 一个 ,它运行查询以检查 TimeSinceLastActive 指标的 MAX 值。如果此值大于作为输入提供给 CloudFormation 模板的阈值,它将触发自动化的其余部分。此查询可以针对单一用户配置文件、单一领域或所有领域进行运行。根据想要的控制级别,您可以使用:
  2. all-domains-all-users 模板:检查在部署模板所在区域的所有用户和领域
  3. one-domain-all-users 模板:检查在特定领域中的所有用户
  4. one-domain-one-user 模板:检查特定领域中一个用户配置文件
  5. 警报状态改变会在亚马逊 EventBridge 的默认事件总线上生成一个事件,这里设置了亚马逊 EventBridge 规则来触发一个 AWS Lambda 函数。
  6. AWS Lambda 函数识别在阈值时间内空闲的 SageMaker Canvas 应用程序,并使用 将其删除。

您可以从以下 GitHub 仓库获取与此架构相关的 AWS CloudFormation 模板:

MaxMetrics 如何工作

SageMaker Canvas 在 /aws/sagemaker/Canvas/AppActivity 命名空间中发出 TimeSinceLastActive 指标,表示无用户活动的应用程序空闲秒数。我们可以使用这一新指标在 SageMaker Canvas应用程序在定义时间内空闲时触发自动关闭。SageMaker Canvas 暴露的 TimeSinceLastActive 的模式如下:

`json { "Namespace": "/aws/sagemaker/Canvas/AppActivity", "Dimensions": 。

此指标可以通过亚马逊 CloudWatch API 读取,例如 。例如,使用 AWS SDK for Python (boto3):


cw = boto3.client('cloudwatch') metric_data_results = cw.get_metric_data(
MetricDataQueries=[ { "Id": "q1", "Expression": 'SELECTMAX(TimeSinceLastActive) FROM "/aws/sagemaker/Canvas/AppActivity" GROUP BYDomainId, UserProfileName', "Period": 900 } ],
StartTime=datetime.datetime(2023, 1, 1), EndTime=datetime.datetime.now(),
ScanBy='TimestampAscending' ) ```

该查询从与 SageMaker Canvas 相关的命名空间中提取 `TimeSinceLastActive` 的 MAX 值,并根据 `DomainID`
和 `UserProfileName` 进行分组。

## 部署和测试自动关闭解决方案

要部署自动关闭堆栈,请按以下步骤操作:

  1. 从上述 GitHub 仓库下载您要实现的解决方案的 AWS CloudFormation 模板。选择您希望为所有 SageMaker 域实施的解决方案、为单个 SageMaker 域或单个用户实施。
  2. 更新模板参数:
  3. **空闲超时** \- SageMaker Canvas 应用程序被允许空闲的时间(以秒为单位),默认值为2小时。
  4. **警报周期** \- CloudWatch 警报用于计算空闲超时的聚合时间(以秒为单位),默认值为20分钟。
  5. (可选)**SageMaker 域 ID** 和 **用户配置文件名称** 。
  6. 部署 CloudFormation 堆栈以创建资源。

一旦部署完成(应不超过两分钟),AWS Lambda 函数和亚马逊 CloudWatch 警报将配置为在空闲时自动关闭 Canvas应用程序。要测试自动关闭脚本,您可以执行以下操作:

  1. 确保 SageMaker Canvas 应用程序在正确的领域内,并且使用了正确的用户配置文件(如果进行了配置)。
  2. 停止使用 SageMaker Canvas 应用程序,并等待空闲超时周期(默认2小时)。
  3. 检查应用程序是否在超过阈值时间后被停止,通过检查 CloudWatch 警报是否被触发,并在触发自动化后恢复正常状态。

在我们的测试中,我们将空闲超时时间设定为两个小时(7200秒)。在以下由亚马逊 CloudWatch 指标绘制的图表中,您可以看到 SageMakerCanvas 应用程序在达到阈值之前持续发出 `TimeSinceLastActive` 指标(1),这触发了警报。一旦警报被触发,AWS Lambda函数便被执行,删除了该应用程序,并使指标回落至阈值以下(2)。

## 结论

在这篇文章中,我们实现了一个针对空闲 SageMaker Canvas 应用程序的自动关闭解决方案,利用了 AWS Lambda 和 CloudWatch警报,以及 SageMaker Canvas新发出的空闲指标。通过此解决方案,客户不仅可以优化其机器学习工作负载的成本,还能避免因忘记关闭应用程序而产生的意外费用。

我们期待看到客户们能通过这一解决方案,解决更多新的用例和工作负载。欲了解更多 SageMaker Canvas如何帮助您实现商业目标的示例,请参阅以下帖子:

  * 
  * 
  * 
  * 
  * 

要了解如何使用亚马逊 SageMaker Canvas 运行生产级工作负载,请参考以下帖子:

  * 
  * 
  * 
  * 

* * *

## 作者介绍

![](https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2021/12/20/Davide-
删除)
  
**Davide Gallitelli** 是 AI/ML的高级解决方案架构师,驻扎在布鲁塞尔,紧密与全球客户合作,帮助他们采用低代码/无代码的机器学习技术和生成式
AI。他从小就是开发者,7岁开始编程,并在大学学习了 AI/ML,此后便对其产生了浓厚的兴趣。

![](https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2023/03/20/Huong-
删除)
  
**Huong Nguyen** 是 AWS 的高级产品经理。她负责 SageMaker的数据生态系统集成,拥有14年的经验,致力于构建面向企业和消费者的以客户为中心和数据驱动的产品。

![](https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2020/12/08/Gunjan-
删除)
  
**Gunjan Garg** 是 AWS 的亚马逊 SageMaker 团队的首席工程师,负责产品的技术领导。在过去五年中,她在 AI/ML组织中担任多个角色,目前专注于 Amazon SageMaker Canvas。

删除)  
**Ziyao Huang** 是亚马逊 SageMaker Data Wrangler的软件开发工程师。他热衷于构建优秀的产品,使机器学习对于客户更加简便。工作之外,Ziyao 喜欢阅读并与朋友聚会。

标签:,,

Leave a Reply

Required fields are marked *