Monitor Amazon SageMaker Pipelines cross-account with custom Amazon CloudWatch dashboards

TL;DR · AI 摘要
Monitor Amazon SageMaker Pipelines cross-account with custom Amazon CloudWatch dashboards Artificial Intelligence Monito...
核心要点
- 主题聚焦:Monitor Amazon SageMaker Pipelines cross-account
- 来源:AWS Machine Learning Blog,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
使用自定义 Amazon CloudWatch 仪表板监控跨账户的 Amazon SageMaker Pipelines | 人工智能
使用自定义 Amazon CloudWatch 仪表板监控跨账户的 Amazon SageMaker Pipelines
通过 Amazon SageMaker Pipelines,组织可以自动化其机器学习(ML)工作负载,并作为其机器学习运维(MLOps)策略的一部分,将其分布到多个 AWS 账户和 AWS 区域。
然而,当 SageMaker Pipelines 跨多个 AWS 环境部署时,对其进行监控可能会变得复杂。开发人员和运维工程师必须在多个账户和区域之间手动切换,以检查 SageMaker Pipeline 的执行情况,这会导致运营开销。
Amazon SageMaker Studio 提供了在单一账户和区域内的 SageMaker Pipelines 监控功能。组织可以使用 Amazon CloudWatch、AWS Lambda、Amazon DynamoDB 和 Amazon EventBridge 等服务,构建符合其可观测性需求的仪表板,以跟踪跨多个 AWS 环境的 SageMaker Pipelines 执行情况。
在本文中,我们将介绍一种解决方案,该方案利用 Amazon CloudWatch 自定义仪表板,集中监控跨 AWS 账户和区域的 SageMaker Pipelines。配套的 GitHub 仓库提供了一个可自定义的 AWS 云开发工具包(AWS CDK)示例,用于实现所需的基础设施。
该解决方案旨在通过单一界面提供详细且接近实时的可见性,以监控多个区域和多个账户中运行的 SageMaker Pipelines 执行情况,从而帮助简化日常运营。在下一节中,我们将详细探讨该解决方案的架构。
解决方案概述
该解决方案实现了一个交互式 CloudWatch 仪表板,旨在为跨多个 AWS 账户和区域运行的 SageMaker Pipelines 提供统一的可见性。
我们选择了一种无服务器、事件驱动的架构,该架构能够实时响应 SageMaker Pipeline 事件,避免了始终开启的监控系统或轮询机制带来的开销。使用托管或无服务器服务以及原生服务集成还可以帮助降低前期成本和维护工作量。
该实现遵循中心辐射模型,通过在主账户和区域中集中监控,减少复杂性,同时每个次要账户或区域中的轻量级组件会跟踪 SageMaker Pipelines 数据并将其转发到监控中心。下图说明了这种架构。
图中描述的解决方案包含两个主要的 AWS CloudFormation 堆栈:仪表板堆栈和转发器堆栈,这些模块化组件构成了解决方案的核心。
仪表板堆栈包含 CloudWatch 仪表板、Amazon DynamoDB 存储表以及用于数据处理和可视化的 AWS Lambda 函数。它仅部署在充当监控中心的主账户和区域中。
转发器堆栈部署在提供 SageMaker Pipeline 数据的被监控账户中。这些轻量级堆栈使用 Amazon EventBridge 将增强数据发送到监控中心。
通过以下工作流程,这两个堆栈共同收集、处理并显示聚合信息给用户:
- 当 SageMaker Pipeline 的某个步骤状态发生变化时,Amazon SageMaker AI 会生成源事件。这些事件包含事件时间、Pipeline 的 Amazon 资源名称(ARN)、Pipeline 执行的 ARN、步骤状态等元数据。
- Amazon EventBridge 规则会实时捕获此类事件,并将其发送到 AWS Lambda 函数进行处理。
- Lambda 函数处理事件数据,并添加 SageMaker Pipeline 执行的状态或显示名称等附加元数据,然后将数据发送到本地 EventBridge 总线。
- 自定义的 EventBridge 规则捕获增强后的数据,并将其转发到监控中心账户。
- AWS 身份和访问管理(IAM)角色和资源策略确保跨账户事件传输的安全性。
- 监控账户中的另一个 EventBridge 规则会触发 Lambda 函数,该函数收集每个 SageMaker Pipeline 执行的数据并存储到 DynamoDB 表中。存储的数据包括区域、账户 ID、创建时间、开始和停止时间、显示名称以及每个 SageMaker Pipeline 执行及其各个步骤的状态等信息。
- Lambda 函数为仪表板后端提供支持,从 DynamoDB 表中读取数据并返回格式化 HTML。
- 一个包含自定义小部件的 Amazon CloudWatch 仪表板作为用户前端,无需离开 AWS 管理控制台即可使用。它显示 SageMaker Pipeline 执行信息,包括相关账户 ID、区域、创建时间和当前状态。用户可以通过交互元素按 Pipeline 名称筛选数据,并查看单次执行中各步骤的详细信息。这些信息包括步骤名称、类型、开始和结束时间以及状态。
- 如果仪表板用户出现异常活动,CloudWatch 会触发警报。Amazon 简单通知服务(Amazon SNS)随后会将警报发送给 SNS 主题的订阅者,该主题使用客户管理的 AWS 密钥管理服务(AWS KMS)密钥进行加密。当小部件调用相应 Lambda 函数的次数超过仪表板堆栈中定义的阈值时,会触发警报。
该解决方案旨在通过无服务器、事件驱动的集线器-辐条架构,为跨账户和跨区域的 SageMaker Pipeline 可观测性提供统一视图仪表板。
数据来源于 SageMaker AI 事件和 API 调用,经过转换后可提供完整的 Pipeline 执行状态视图。这些数据存储在中心化的 DynamoDB 表中,然后在自定义的 CloudWatch 仪表板上显示。可以通过使用 Lambda 函数读取和处理额外信息后再存储到 DynamoDB 表中来扩展仪表板功能。
在下一节中,我们将展示如何部署该解决方案。
先决条件
您必须满足以下先决条件:
- 一个已为 AWS CDK 启用两个区域的 AWS 账户。其中一个区域将托管监控仪表板,另一个区域将生成跨区域 SageMaker Pipeline 事件,这些事件将在仪表板中显示。
- 一个包含至少一个已启用区域的第二个 AWS 账户,用于生成将在仪表板中显示的跨账户事件。
- 作为 shell 环境变量的 AWS 凭据,具有部署解决方案的足够权限。
- Python(3.14 或更高版本)。
- 已安装的 AWS CDK(2.1100.1 或更高版本)。
- 已安装的 AWS 命令行界面(AWS CLI)(2.32.12 或更高版本)。
- 需要 Docker 用于 Lambda 函数打包。
- 每个账户和区域组合中至少需要一个 SageMaker Pipeline。如果没有现有 SageMaker Pipeline,可以通过 SageMaker Studio 在 Amazon SageMaker AI 领域中的 SageMaker AI Projects 创建。
部署解决方案
满足前提条件后,请按照以下步骤部署解决方案。
- 克隆 GitHub 代码库。
- 按照 README 文件中的详细部署说明,使用 AWS CDK 和 AWS CLI 部署堆栈。
- 在每个账户和区域中导航到 AWS CloudFormation 控制台。选择 DashboardStack 或 ForwarderStack 堆栈以查看部署信息和创建的资源详情。
部署解决方案后,您可以测试其功能。在下一节中,我们将解释如何验证其功能。
测试解决方案
部署解决方案后,请按照以下步骤测试仪表板的功能。您可以在 SageMaker Studio 中创建 SageMaker Pipeline 并启动执行。
- 在 Amazon CloudWatch 控制台中,导航窗格中选择 Dashboards。
- 选择仪表板 PipelineMonitoringDashboard。
- 当提示时,允许 Lambda 函数执行。请确保其名称包含 customWidget,以符合最佳实践。仪表板应更新为如下所示的界面。
- 如果没有最近的 SageMaker Pipeline 执行,请从监控仪表板所在的同一账户和区域开始,在受监控的账户和区域中启动新的执行,以简化操作。
- 返回仪表板,使用小部件右上角的刷新按钮重新加载结果。您应看到新的 SageMaker Pipeline 执行状态更新。请确保使用仪表板顶部的时间范围选择器选择包含 SageMaker Pipeline 执行的时间段。
- 选择 Steps details 按钮。按照上一步所述允许自定义小部件 Lambda 函数执行。弹出窗口将显示单个 SageMaker Pipeline 步骤的详细信息,如下图所示。
- 使用仪表板顶部的时间范围选择器,按自定义时间段筛选 SageMaker Pipeline 执行。您将仅看到所选时间段内的执行记录。
- 使用小部件左上角的 Pipeline name 过滤器,输入一个 SageMaker Pipeline 的名称,然后刷新小部件。您将仅看到与搜索名称匹配的 SageMaker Pipeline 执行记录。
最佳实践和注意事项
在实施此类监控解决方案时,请考虑以下建议,以提高可靠性、安全性和操作效率,或根据组织需求进行定制。
- 灵活性和定制化:您可以通过在填充 DynamoDB 表的 Lambda 函数中添加新数据、增加可视化逻辑来进一步丰富自定义仪表板。还可以添加更多筛选器、指标、交互式弹窗或内置 CloudWatch 小部件,以整合和扩展对 ML 工作负载的监控。此外,您还可以扩展解决方案以监控 AWS Step Functions 状态机执行、AWS Batch 或 AWS Glue 上的作业,或支持 ML 工作负载的 Amazon EMR 集群。在这些情况下,建议创建专用的 EventBridge 事件总线,以隔离监控流量与其他事件。
- 指标和警报:通过多层监控 SageMaker Pipeline,使用 EventBridge 规则监控服务事件,使用 CloudWatch 日志异常检测监控 ML 作业执行日志,并使用 CloudWatch 指标监控资源使用情况。可在日志和指标上配置额外警报,或直接发送事件通知,将 Amazon SNS 警报发送给团队。
- 仪表板可访问性和自定义:考虑使用不同方法共享 CloudWatch 仪表板以提高访问效率,避免通过 AWS 管理控制台操作。此外,可考虑使用 Amazon 管理的 Grafana 作为数据可视化的替代方案。
- 私有网络:对于有严格安全要求的组织,考虑在 Amazon 虚拟私有云(VPC)内部部署解决方案以提高隔离性。可通过 VPC 对等连接或 AWS Transit Gateway 在不同区域和账户之间连接 VPC。
- 与持续集成和持续交付(CI/CD)集成:为提高可靠性,使用 CI/CD 管道在运行 ML 工作流的环境中部署解决方案。例如,AWS Organizations 和 AWS 部署框架(ADF)可帮助您在不同环境中一致且可重复地部署。
清理资源
要清理资源,请前往 CloudFormation 服务控制台,对已部署的每个账户和区域组合,删除 DashboardStack 或 ForwarderStack 的实例。
或者,可以重复之前执行的相同 AWS CDK 命令,使用相同的 AWS 凭证和 CLI 参数,但将 cdk deploy 替换为 cdk destroy。
如果仅为了测试解决方案而创建了 SageMaker 项目、资源和 SageMaker AI 领域实例,请记得在每个账户和区域中删除这些内容。
结论
我们演示了如何设置一个解决方案,通过交互式 CloudWatch 仪表板跨 AWS 账户和区域监控 SageMaker Pipelines,以提高运营效率。该方案设计用于提供实时更新,直接与 AWS 管理控制台集成,并采用完全无服务器且事件驱动的架构以实现更高的可扩展性。
要进一步根据组织标准调整此方案,请了解如何通过 AWS 专业服务团队的支持加速云上旅程。
参考以下资源了解 MLOps 最佳实践:
- 基于 Terraform 和 GitHub 实施安全的 MLOps 平台
- AIOps 模块
- 在大规模上治理 ML 生命周期,第 1 部分:使用 Amazon SageMaker 构建 ML 工作负载的架构框架
- 使用 Amazon SageMaker Pipelines、GitHub 和 GitHub Actions 构建端到端的 MLOps 管道
- 使用 Amazon CloudWatch 构建 Amazon SageMaker 的集中监控和报告解决方案
还可以查看 CloudWatch 仪表板中更多自定义小部件的示例,以进一步增强环境的可观测性。
作者简介
'"`