Press "Enter" to skip to content

使用 AWS CDK 部署 Amazon SageMaker Studio 生命周期配置

Amazon SageMaker Studio 是第一个完全集成的机器学习(ML)开发环境(IDE)。Studio 提供了一个单一的基于 Web 的可视界面,您可以在其中执行所有 ML 开发步骤,包括准备数据、构建、训练和部署模型。生命周期配置是由 Studio 生命周期事件触发的 Shell 脚本,例如启动新的 Studio 笔记本。您可以使用生命周期配置自定义 Studio 环境。该自定义包括安装自定义包、配置笔记本扩展、预加载数据集和设置源代码库。例如,作为 Studio 域的管理员,您可能希望在长时间不活动后自动关闭笔记本应用程序以节省成本。

Amazon Web Services 云开发工具包(AWS CDK)是一个通过代码定义云基础设施并通过 AWS CloudFormation 堆栈进行配置的框架。堆栈是 AWS 资源的集合,可以进行编程式更新、移动或删除。AWS CDK 构件是 AWS CDK 应用程序的构建块,表示定义云架构的蓝图。

在本文中,我们将展示如何使用 AWS CDK 设置 Studio、使用 Studio 生命周期配置,并为您的组织中的数据科学家和开发人员启用其访问。

解决方案概述

生命周期配置的模块化使您可以将其应用于域中的所有用户或特定用户。这样,您可以快速、一致地设置生命周期配置并在 Studio 内核网关或 Jupyter 服务器中引用它们。内核网关是与笔记本实例交互的入口点,而 Jupyter 服务器表示 Studio 实例。这使您可以应用 DevOps 最佳实践,并在所有 AWS 帐户和区域中满足安全、合规性和配置标准。在本文中,我们使用 Python 作为主要语言,但可以轻松将代码更改为其他 AWS CDK 支持的语言。有关更多信息,请参阅使用 AWS CDK。

先决条件

首先,请确保您具备以下先决条件:

  • 已安装 AWS 命令行界面(AWS CLI)。
  • 已安装 AWS CDK。有关更多信息,请参阅入门指南和使用 Python。
  • 具有创建 AWS 身份和访问管理(IAM)角色、Studio 域和 Studio 用户配置文件的权限的 AWS 档案。
  • Python 3+。

克隆 GitHub 存储库

首先,克隆 GitHub 存储库。

当您克隆存储库时,可以观察到我们有一个经典的 AWS CDK 项目,其中包含目录 studio-lifecycle-config-construct,其中包含创建生命周期配置所需的构造和资源。

AWS CDK 构件

我们要检查的文件是 aws_sagemaker_lifecycle.py。此文件包含我们使用的 SageMakerStudioLifeCycleConfig 构件,用于设置和创建生命周期配置。

SageMakerStudioLifeCycleConfig 构件提供了使用自定义 AWS Lambda 函数和从文件读取的 Shell 代码构建生命周期配置的框架。该构造包含以下参数:

  • ID – 当前项目的名称。
  • studio_lifecycle_content – Base64 编码的内容。
  • studio_lifecycle_tags – 分配给组织 Amazon 资源的标签。它们作为键值对输入,对于此配置是可选的。
  • studio_lifecycle_config_app_typeJupyterServer 适用于唯一的服务器本身,而 KernelGateway 应用程序对应于运行 SageMaker 映像容器。

有关 Studio 笔记本架构的更多信息,请参阅深入了解 Amazon SageMaker Studio Notebooks 架构。

以下是 Studio 生命周期配置构造(aws_sagemaker_lifecycle.py)的代码片段:

class SageMakerStudioLifeCycleConfig(Construct):
 def __init__(
 self,
 scope: Construct,
 id: str,
 studio_lifecycle_config_content: str,
 studio_lifecycle_config_app_type: str,
 studio_lifecycle_config_name: str,
 studio_lifecycle_config_arn: str,
 **kwargs,
 ):
 super().__init__(scope, id)
 self.studio_lifecycle_content = studio_lifecycle_content
 self.studio_lifecycle_config_name = studio_lifecycle_config_name
 self.studio_lifecycle_config_app_type = studio_lifecycle_config_app_type

 lifecycle_config_role = iam.Role(
 self,
 "SmStudioLifeCycleConfigRole",
 assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"),
 )

 lifecycle_config_role.add_to_policy(
 iam.PolicyStatement(
 resources=[f"arn:aws:sagemaker:{scope.region}:{scope.account}:*"],
 actions=[
 "sagemaker:CreateStudioLifecycleConfig",
 "sagemaker:ListUserProfiles",
 "sagemaker:UpdateUserProfile",
 "sagemaker:DeleteStudioLifecycleConfig",
 "sagemaker:AddTags",
 ],
 )
 )

 create_lifecycle_script_lambda = lambda_.Function(
 self,
 "CreateLifeCycleConfigLambda",
 runtime=lambda_.Runtime.PYTHON_3_8,
 timeout=Duration.minutes(3),
 code=lambda_.Code.from_asset(
 "../mlsl-cdk-constructs-lib/src/studiolifecycleconfigconstruct"
 ),
 handler="onEvent.handler",
 role=lifecycle_config_role,
 environment={
 "studio_lifecycle_content": self.studio_lifecycle_content,
 "studio_lifecycle_config_name": self.studio_lifecycle_config_name,
 "studio_lifecycle_config_app_type": self.studio_lifecycle_config_app_type,
 },
 )

 config_custom_resource_provider = custom_resources.Provider(
 self,
 "ConfigCustomResourceProvider",
 on_event_handler=create_lifecycle_script_lambda,
 )

 studio_lifecyle_config_custom_resource = CustomResource(
 self,
 "LifeCycleCustomResource",
 service_token=config_custom_resource_provider.service_token,
 )
 self. studio_lifecycle_config_arn = studio_lifecycle_config_custom_resource.get_att("StudioLifecycleConfigArn")

在导入和安装构造之后,您可以使用它。以下代码片段显示如何在 app.py 或其他构造中使用该构造来创建生命周期配置:

my_studio_lifecycle_config = SageMakerStudioLifeCycleConfig(
 self,
 "MLSLBlogPost",
 studio_lifecycle_config_content="base64content",
 studio_lifecycle_config_name="BlogPostTest",
 studio_lifecycle_config_app_type="JupyterServer",
 
 )

部署 AWS CDK 构造

要部署 AWS CDK 堆栈,请在克隆存储库的位置运行以下命令。

根据您的路径配置,命令可能是 python 而不是 python3

  1. 创建虚拟环境:

    1. 对于 macOS/Linux,请使用 python3 -m venv .cdk-venv
    2. 对于 Windows,请使用 python3 -m venv .cdk-venv
  2. 激活虚拟环境:

    1. 对于 macOS/Linux,请使用 source .cdk-venv\bin\activate
    2. 对于 Windows,请使用 .cdk-venv/Scripts/activate.bat
    3. 对于 PowerShell,请使用 .cdk-venv/Scripts/activate.ps1
  3. 安装必需的依赖项:

    1. pip install -r requirements.txt
    2. pip install -r requirements-dev.txt
  4. 此时,您可以选择为此代码合成 CloudFormation 模板:

    cdk synth
  5. 使用以下命令部署解决方案:

    1. aws configure
    2. cdk bootstrap
    3. cdk deploy

堆栈成功部署后,您应该能够在 CloudFormation 控制台上查看堆栈。

使用 AWS CDK 部署 Amazon SageMaker Studio 生命周期配置 AI 新闻 第1张

您还可以在 SageMaker 控制台上查看生命周期配置。

使用 AWS CDK 部署 Amazon SageMaker Studio 生命周期配置 AI 新闻 第2张

选择生命周期配置以查看运行的 shell 代码以及您分配的任何标签。

使用 AWS CDK 部署 Amazon SageMaker Studio 生命周期配置 AI 新闻 第3张

附加工作室生命周期配置

有多种方法可以附加生命周期配置。在本节中,我们介绍两种方法:使用 AWS 管理控制台和使用提供的基础架构进行编程。

使用控制台附加生命周期配置

要使用控制台,请完成以下步骤:

  1. 在 SageMaker 控制台上,选择导航窗格中的
  2. 选择您正在使用的域名和当前用户配置文件,然后选择 编辑
  3. 选择要使用的生命周期配置,然后选择 附加

从这里,您也可以将其设置为默认值。

使用 AWS CDK 部署 Amazon SageMaker Studio 生命周期配置 AI 新闻 第4张

以编程方式附加生命周期配置

您还可以通过构建生成的方式检索Studio生命周期配置的ARN,并将其以编程方式附加到Studio构建。以下代码显示将生命周期配置ARN传递给Studio构建:

default_user_settings=sagemaker.CfnDomain.UserSettingsProperty(
                execution_role=self.sagemaker_role.role_arn,
                jupyter_server_app_settings=sagemaker.CfnDomain.JupyterServerAppSettingsProperty(
                    default_resource_spec=sagemaker.CfnDomain.ResourceSpecProperty(
                        instance_type="system",
                        lifecycle_config_arn = my_studio_lifecycle_config.studio_lifeycycle_config_arn

                    )
                )

清理

完成本节中的步骤以清理您的资源。

删除Studio生命周期配置

要删除生命周期配置,请完成以下步骤:

  1. 在SageMaker控制台中,选择导航窗格中的Studio生命周期配置
  2. 选择生命周期配置,然后选择删除

使用 AWS CDK 部署 Amazon SageMaker Studio 生命周期配置 AI 新闻 第5张

删除AWS CDK堆栈

当您完成所创建的资源时,可以通过在克隆存储库的位置运行以下命令来销毁AWS CDK堆栈:

cdk destroy

确认删除堆栈时,请输入yes

您还可以使用以下步骤在AWS CloudFormation控制台上删除堆栈:

  1. 在AWS CloudFormation控制台中,选择导航窗格中的堆栈
  2. 选择要删除的堆栈。
  3. 在堆栈详细信息窗格中,选择删除
  4. 提示时选择删除堆栈

如果遇到任何错误,您可能需要根据您的账户配置手动删除一些资源。

结论

在本文中,我们讨论了Studio作为ML工作负载的IDE的作用。 Studio提供生命周期配置支持,允许您设置自定义shell脚本来执行自动化任务,或在启动时设置开发环境。我们使用AWS CDK构建构建基础架构,用于自定义资源和生命周期配置。构建被合成为CloudFormation堆栈,然后部署以创建在Studio和笔记本内核中使用的自定义资源和生命周期脚本。

有关更多信息,请访问Amazon SageMaker Studio。

Leave a Reply

Your email address will not be published. Required fields are marked *