案例中心

优化 Amazon SageMaker Canvas 成本的方法:自动关闭闲置应用 机器学习博客

datetime

2026-01-27 12:33:49

阅读数量

9

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

作者:Davide Gallitelli Gunjan Garg Ziyao Huang 和 Huong Nguyen 发表于 2023年11月24日 亚马逊 SageMaker Canvas 博客

关键要点

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

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

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

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

理解与跟踪成本

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

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

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

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

自动关闭 SageMaker Canvas 应用程序

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

定时关闭应用程序 例如每天的1900或每周五的1800自动关闭空闲应用程序 当应用程序在两个小时内没有被使用时

定时关闭应用程序

通过使用 cron 表达式与亚马逊 EventBridge Cron 规则相结合,可以非常轻松地实现 SageMaker Canvas 应用程序的定时关闭,这需要一个计算组件AWS Lambda 函数来调用亚马逊 SageMaker API 的 DeleteApp。在 通过 AWS CDK 和 AWS 服务目录提供和管理 ML 环境 一文中对此进行了讨论,并在相关的 GitHub 仓库 实现。

优化 Amazon SageMaker Canvas 成本的方法:自动关闭闲置应用 机器学习博客

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

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

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

自动关闭空闲应用程序

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

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

一个 亚马逊 CloudWatch 警报,它运行查询以检查 TimeSinceLastActive 指标的 MAX 值。如果此值大于作为输入提供给 CloudFormation 模板的阈值,它将触发自动化的其余部分。此查询可以针对单一用户配置文件、单一领域或所有领域进行运行。根据想要的控制级别,您可以使用:alldomainsallusers 模板:检查在部署模板所在区域的所有用户和领域onedomainallusers 模板:检查在特定领域中的所有用户

onedomainoneuser 模板:检查特定领域中一个用户配置文件

警报状态改变会在亚马逊 EventBridge 的默认事件总线上生成一个事件,这里设置了亚马逊 EventBridge 规则来触发一个 AWS Lambda 函数。

AWS Lambda 函数识别在阈值时间内空闲的 SageMaker Canvas 应用程序,并使用 DeleteApp API 将其删除。

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

MaxMetrics 如何工作

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

json{ Namespace /aws/sagemaker/Canvas/AppActivity Dimensions [ [ DomainId UserProfileName ] ] Metrics [ { Name TimeSinceLastActive Unit Seconds Value 12345 } ]}

此指标的关键组件包括:

Dimensions,尤其是 DomainID 和 UserProfileName,允许管理员定位所有领域和用户中哪些应用程序处于空闲状态。Value,表示自上次在 SageMaker Canvas 应用程序中活动以来的秒数。SageMaker Canvas 将以下操作视为活动:在 SageMaker Canvas 应用程序中执行的任何操作例如点击按钮、转换数据集、生成内部推断、部署模型;使用现成的模型或通过聊天界面与生成式 AI 模型交互;在指定时间安排的批量推断;更多信息请参见 管理自动化。

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

pythonimport boto3 datetime

cw = boto3client(cloudwatch)metricdataresults = cwgetmetricdata( MetricDataQueries=[ { Id q1 Expression SELECT MAX(TimeSinceLastActive) FROM /aws/sagemaker/Canvas/AppActivity GROUP BY DomainId UserProfileName Period 900 } ] StartTime=datetimedatetime(2023 1 1) EndTime=datetimedatetimenow() ScanBy=TimestampAscending)

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

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

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

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

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

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

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

结论

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

速云梯登录

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

使用亚马逊 SageMaker Canvas 进行无代码机器学习预测客户流失使用来自亚马逊 SageMaker Canvas 的 ML 预测在亚马逊 QuickSight 中发布预测仪表板通过无代码机器学习与亚马逊 SageMaker Canvas 实现制造质量的计算机视觉缺陷检测民主化使用亚马逊 SageMaker Canvas 的情感分析和文本分析模型,从产品评论中获取洞察利用亚马逊 SageMaker Canvas 的生成式 AI,使业务用户从公司文档中提取洞察

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

构建、共享、部署:业务分析师和数据科学家如何利用无代码 ML 和亚马逊 SageMaker Canvas 实现更快的市场响应时间使用更新的数据集在亚马逊 SageMaker Canvas 中重新训练 ML 模型和自动化批量预测通过亚马逊 SageMaker 模型注册表将亚马逊 SageMaker Canvas 中构建的 ML 模型投入生产使用 AWS CDK 和 AWS 服务目录提供和管理 ML 环境的亚马逊 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 喜欢阅读并与朋友聚会。

标签:亚马逊 SageMaker,亚马逊 SageMaker Canvas,机器学习