通过自动关闭 Amazon SageMaker Studio 中的闲置资源来节省成本
Amazon SageMaker Studio 提供了一个基于 Web 的统一可视化界面,您可以在其中执行所有机器学习(ML)开发步骤,使数据科学团队的工作效率提高 10 倍。该 Studio 还可以为您提供构建、训练和部署模型所需每个步骤的完全访问权限、控制及可见性。Studio 笔记本是协作式笔记本,由于不需要事先设置计算实例和文件存储,因此可以快速启动。Amazon SageMaker 是一项完全托管式服务,它提供的功能可以将基础设施管理的繁重工作抽象化,并针对您对大规模 ML 活动的敏捷性和可扩展性需求提供各种不同功能和按用量付费的定价模型。
Amazon SageMaker Studio
https://aws.amazon.com/sagemaker/studio/
Amazon SageMaker
https://aws.amazon.com/sagemaker/
定价模型
https://aws.amazon.com/sagemaker/pricing/
在本文中,我们将演示如何执行以下操作:
1.使用可以手动和自动安装的自动关闭 Jupyter 扩展程序检测和阻止 Studio 中产生成本的空闲资源
2.启用事件通知以跟踪 Studio 域中尚未安装自动关闭扩展程序的用户配置文件
3.使用已安装的自动关闭扩展程序自动关闭可能导致高于预期成本的实例以管理 Amazon SageMaker Data Wrangler 成本
Amazon SageMaker Data Wrangler
https://aws.amazon.com/sagemaker/data-wrangler/
📢 想要了解更多亚马逊云科技最新技术发布和实践创新,敬请关注在上海、北京、深圳三地举办的 2021 亚马逊云科技中国峰会!点击图片报名吧~
Studio 组件
在 Studio 中,运行的笔记本与 JupyterServer UI 分开进行容器化,以便分离计算基础设施的规模。Studio 笔记本在由以下内容定义的环境中运行:
实例类型–底层硬件配置,其决定定价费率。这包括处理器的数量和类型(vCPU 和 GPU),以及内存的数量和类型。
Amazon SageMaker 映像–托管笔记本内核的兼容容器映像(由 Amazon SageMaker 提供或自定义)。该图像定义了它提供的内核规格,例如内置的 Python 3(数据科学)内核。
Amazon SageMaker 内核网关应用程序–在特定实例类型上运行的容器映像实例。多个应用程序可以共享正在运行的实例。
运行内核会话-检查和运行笔记本中所含代码的过程。在同一应用程序中打开具有相同规格和实例类型的多个打开笔记本(内核)。
Studio UI 作为 JupyterServer 类型的单独应用程序运行,而不是 KernelGateway,它允许您从 Studio UI 中将打开的笔记本切换到不同的内核或实例类型。有关笔记本内核运行与 KernelGateway 应用程序、用户和 Studio 域如何相关的更多信息,请参阅使用 Amazon SageMaker Studio 笔记本。
使用 Amazon SageMaker Studio 笔记本
https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks.html
Studio 计费
使用 Studio 不收取额外费用。运行 Studio 笔记本、交互式 Shell、控制台和终端所产生的成本取决于 Studio 实例类型的使用情况。有关计费以及定价示例的信息,请参阅 Amazon SageMaker 定价。
Amazon SageMaker 定价
https://aws.amazon.com/sagemaker/pricing/
在 Studio 中运行 Studio 笔记本、交互式 Shell 或映像终端时,必须选择内核和实例类型。这些资源是根据从 UI 中选择的类型使用 Studio 实例启动的。如果此类型的实例之前已启动且可用,则资源将在该实例上运行。对于基于 CPU 的映像,默认实例类型为 ml.t3.medium。对于基于 GPU 的映像,默认实例类型为 ml.g4dn.xlarge。产生的成本取决于实例类型,您需要为每个实例单独计费。计费从创建实例时开始,并在实例上的所有应用程序关闭或实例关闭时结束。
关闭实例即停止产生费用。如果您关闭在实例上运行的笔记本但没有关闭实例,则仍将产生费用。当您在同一实例类型上打开多个笔记本时,即使它们使用的是不同内核,笔记本也会在同一实例上运行。您只需按一个实例运行的时间计费。在打开实例并关闭各个资源(包括笔记本、终端、内核、应用程序和实例)之后,您可以在笔记本中更改实例类型。您还可以同时关闭其中一个类别中的所有资源。关闭笔记本时,笔记本中所有未保存的信息都将丢失。笔记本不会被删除。
更改实例类型
https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-run-and-manage-switch-instance-type.html
您可以从 Studio File(文件)菜单或 Running Terminal and Kernels(运行终端和内核)窗格关闭打开的笔记本。Running Terminal and Kernels(运行终端和内核)窗格由四个部分组成。每个部分都列出了该类型的所有资源。您可以单独关闭每个资源,也可以同时关闭一个部分中的所有资源。选择关闭某个部分中的所有资源时,会发生以下情况:
运行实例/运行应用程序–关闭所有实例、应用程序、笔记本、内核会话、Data Wrangler 会话、控制台或 Shell 以及映像终端。系统终端没有关闭。选择此选项可停止所有计费。
内核会话-关闭所有内核、笔记本、控制台或 Shell。
终端会话-关闭所有映像终端和系统终端。
要关闭资源,请在左侧边栏中选择 Running Terminals and Kernels(运行终端和内核)图标。要关闭特定资源,请选择与资源相同行上的电源图标。
对于正在运行的实例,确认对话框列出了将关闭的所有资源。对于正在运行的应用程序,将显示确认对话框。选择 Shut Down All(全部关闭)以继续。内核会话或终端会话不显示确认对话框。要关闭一个部分中的所有资源,请选择区域标签右侧的 X 图标。此时将显示确认对话框。选择 Shut Down All(全部关闭)以继续。
使用 JupyterLab 扩展程序自动关闭空闲的内核
您可以使用 Studio 自动关闭扩展程序自动检测和关闭闲置资源,而不是依赖用户来自行关闭不再使用的资源,从而节省成本。JupyterLab 扩展程序是简单的附加组件,可扩展笔记本环境的基本功能。当 Studio 内运行的内核、应用程序和实例在规定的时间内空闲时,该扩展程序会自动关闭这些内核、应用和实例。您可以通过 UI 直观地配置空闲时间阈值(以分钟为单位)。在内核空闲足够长时间后,扩展程序会自动关闭它们。有关如何下载和安装扩展程序的说明,请参阅 GitHub 存储库。
JupyterLab 扩展程序
https://jupyterlab.readthedocs.io/en/stable/user/extensions.html
GitHub 存储库
https://github.com/aws-samples/sagemaker-studio-auto-shutdown-extension
如果您正在为用户使用 Amazon Identity and Access Management(IAM)验证,则可以在启动 JupyterServer 期间自动安装扩展程序;如果您使用的是单点登录(SSO)身份验证,则可以手动安装扩展程序。
Amazon Identity and Access Management
安装扩展后,它会在 Studio 界面的左侧边栏中作为图标显示。您可以使用此扩展程序提供的用户界面配置空闲时间限制。GitHub 存储库中提供了安装说明。
空闲时间限制参数用于设置一个时间,在此时间之后,没有活动笔记本会话的空闲资源将关闭。默认情况下,空闲时间限制设置为 120 分钟。
限制和故障排除
自动关闭扩展程序具有以下限制:
扩展程序不监控开放终端上的活动。例如,如果您的内核在您配置的时间内处于空闲状态,但终端未处于空闲状态,则扩展程序会关闭终端和内核。
如果在 Amazon SageMaker Studio 控制台上删除 JupyterServer 并重新创建它,则必须重新安装扩展程序并配置空闲时间限制。如果您使用自动安装方法,则不是限制。
您可以在/aws/sagemaker/studio 日志组下查看 Amazon CloudWatch 中的扩展日志,然后通过<Studio_domain>/<user_profile>/JupyterServer/default 日志流来检查扩展日志。
Amazon CloudWatch
http://aws.amazon.com/cloudwatch
Studio 自动关闭扩展程序检查器
下图说明了如何启用电子邮件通知以跟踪位于 Studio 下的多个用户配置文件中运行的空闲资源。
无论您如何在 Studio 域中安装自动关闭扩展程序,管理员都可能希望跟踪没有安装自动关闭扩展程序的任何用户并加以提醒。为了帮助跟踪合规性并优化成本,您可以按照 GitHub 存储库中的说明设置自动关闭扩展程序检查器并启用事件通知。
GitHub 存储库
https://github.com/aws-samples/sagemaker-studio-auto-shutdown-extension/tree/main/extension-checker
根据架构图,CloudWatch Events 规则会定期触发(例如,每小时或每晚)。要创建规则,我们选择固定计划并指定任务运行的频率。对于我们的目标,我们选择一个 Amazon Lambda 函数,该函数定期检查 Studio 域下的所有用户配置文件是否都安装了自动关闭扩展程序。此函数将收集未能满足此要求的用户配置文件名称。
CloudWatch Events 规则
Amazon Lambda
然后,用户配置文件将被发送到 Amazon Simple Notification Service(Amazon SNS)主题,Studio 管理员和其他利益相关者可以订阅该主题,以便获取通知(例如通过电子邮件或 Slack)。以下屏幕截图显示了一封电子邮件提醒通知,其中位于 Amazon SageMaker 域 d-bo6udbiz4vmi 中的用户配置文件 user-w 和 user-y 没有安装自动关闭扩展程序。
Amazon Simple Notification Service
自动关闭 Data Wrangler 资源
为了进一步演示自动关闭扩展程序的工作原理,让我们从 Studio 中的 Data Wrangler 的角度来加以分析。Data Wrangler 是 Amazon SageMaker 的一项新功能,它使数据科学家和工程师能够使用可视化界面更快地为 ML 应用程序准备数据。
当您从 Studio 启动 Data Wrangler 时,它会自行启动一个 ml.m5.4xlarge 实例并使用该实例启动内核。当您不使用 Data Wrangler 时,请务必关闭其运行的实例以免产生额外费用。
Data Wrangler 每 60 秒自动保存一次数据流。为避免丢失工作,请在关闭 Data Wrangler 之前手动保存数据流。为此,请选择 File(文件),然后选择 Save Data Wrangler Flow(保存 Data Wrangler 流)。
要关闭 Studio 中的 Data Wrangler 实例,请选择 Running Instance and Kernels(正在运行的实例和内核)图标。在 Running Apps(运行应用程序)下,找到 amazon-sagemaker-data-wrangler-1.0 应用程序。选择此应用程序旁边的电源图标。
手动执行这些步骤可能会很麻烦,而且很容易忘记。借助自动关闭扩展程序,您可以确保为 Data Wrangler 提供动力的空闲资源不被随意关闭,以避免产生额外的 Amazon SageMaker 成本。
结论
在这篇博文中,我们演示了如何通过使用自动关闭 Jupyter 扩展程序关闭 Studio 中运行的空闲资源,从而降低 Amazon SageMaker 成本。我们还展示了如何设置自动关闭扩展程序检查器以及如何启用事件通知来跟踪 Studio 中尚未安装扩展程序的用户配置文件。最后,我们展示了该扩展程序如何通过关闭为 Data Wrangler 提供动力的闲置资源来降低 Data Wrangler 的成本。
有关优化资源使用和成本的更多信息,请参阅 Amazon SageMaker 中的资源调整规模并避免不必要的成本。
Amazon SageMaker 中的资源调整规模并避免不必要的成本
本篇作者
Arunprasath Shankar
亚马逊云科技专家解决方案架构师
致力于帮助全球客户在云中有效、高效地扩展人工智能解决方案。在业余时间,Arun 喜欢看科幻电影和听古典音乐。
Andras Garzo
亚马逊云科技解决方案架构师
致力于帮助客户迁移到 Amazon SageMaker、采用最佳实践并节省成本。
Pavan Kumar Sunder
亚马逊云科技高级研发工程师
他提供技术指导,并通过在亚马逊云科技上展示可能的技术来帮助客户加快创新。他为我们的客户围绕人工智能(AI)/ML、IoT 和机器人技术构建了多个原型。
Alex Thewsey
亚马逊云科技专家解决方案架构师
Alex 通过人工智能(AI)和 ML 帮助东南亚的客户设计和实施解决方案。他还喜欢卡丁车,从事开源项目,并努力跟上新的 ML 研究趋势。
评论