作者 :Davide Gallitelli, Gunjan Garg, Ziyao Huang, 和 Huong Nguyen 发表于 2023年11月24日
随着各类公司纷纷采用亚马逊 SageMaker Canvas,客户们开始寻求关注成本优化的方案。正如 中定义的那样,优化成本的工作负载能够充分利用所有资源,满足功能需求,并在最低价格点实现成果。
今天,我们将介绍一种新的方法,用于进一步优化 SageMaker Canvas 应用程序的成本。SageMaker Canvas 现在收集 指标,提供应用程序使用情况和空闲状态的洞察。客户可以使用这些信息自动关闭空闲的 SageMaker Canvas 应用程序,避免产生意外费用。
在本文中,我们将展示如何通过简单的无服务器架构自动关闭空闲的 SageMaker Canvas 应用程序以控制成本。本文中使用的模板可在 找到。
了解和控制任何工作负载(无论是本地还是云端)的成本,教育总是第一步。让我们先回顾一下 模型。简而言之,SageMaker Canvas采用按需付费的定价模型,基于两个维度:
维度 | 描述 |
---|---|
工作空间实例 | 以前称为会话时间,与运行 SageMaker Canvas 应用程序相关的成本 |
AWS 服务费用 | 训练模型、部署端点、生成推断所产生的费用 |
客户始终可以完全控制 SageMaker Canvas 启动的资源,并通过 AWS 计费和成本管理服务跟踪与 SageMaker Canvas应用程序相关的费用。如需更多信息,请参考 。
为了限制工作空间实例的相关费用,最佳实践是注销,而不是关闭浏览器标签。要注销,请选择 SageMaker Canvas 应用程序左侧面板上的注销 按钮。
对于希望提供自动控制以关闭 SageMaker Canvas 应用程序并控制成本的 IT 管理员,有两种方法可以选择:
通过使用 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模板。该模板包含三个主要组件:
TimeSinceLastActive
指标的 MAX 值。如果此值大于作为输入提供给 CloudFormation 模板的阈值,它将触发自动化的其余部分。此查询可以针对单一用户配置文件、单一领域或所有领域进行运行。根据想要的控制级别,您可以使用:all-domains-all-users
模板:检查在部署模板所在区域的所有用户和领域one-domain-all-users
模板:检查在特定领域中的所有用户one-domain-one-user
模板:检查特定领域中一个用户配置文件您可以从以下 GitHub 仓库获取与此架构相关的 AWS CloudFormation 模板:
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 运行生产级工作负载,请参考以下帖子:
*
*
*
*
* * *
## 作者介绍

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

**Huong Nguyen** 是 AWS 的高级产品经理。她负责 SageMaker的数据生态系统集成,拥有14年的经验,致力于构建面向企业和消费者的以客户为中心和数据驱动的产品。

**Gunjan Garg** 是 AWS 的亚马逊 SageMaker 团队的首席工程师,负责产品的技术领导。在过去五年中,她在 AI/ML组织中担任多个角色,目前专注于 Amazon SageMaker Canvas。
删除)
**Ziyao Huang** 是亚马逊 SageMaker Data Wrangler的软件开发工程师。他热衷于构建优秀的产品,使机器学习对于客户更加简便。工作之外,Ziyao 喜欢阅读并与朋友聚会。
标签:,,
Leave a Reply