目 录CONTENT

文章目录

使用 SageMaker HyperPod 上的交互式 IDE 增强您的机器学习工作流

Administrator
2025-11-25 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

📢 转载信息

原文链接:https://aws.amazon.com/blogs/machine-learning/power-up-your-ml-workflows-with-interactive-ides-on-sagemaker-hyperpod/

原文作者:Durga Sury, Joshua Towner, Joshua Dunne, Khushboo Srivastava, Prayag Singh, and Edward Sun


Amazon SageMaker HyperPod 集群配合使用 Amazon Elastic Kubernetes Service (EKS) 编排,现已支持创建和管理交互式开发环境,例如 JupyterLab 和开源的 Visual Studio Code。通过为数据科学家提供托管环境和熟悉的工具,该功能简化了机器学习的开发生命周期。此功能引入了一个名为 Amazon SageMaker Spaces 的新附加组件,供 AI 开发者创建和管理用于运行 Notebook 的独立环境。组织现在可以通过在同一基础设施上运行交互式工作负载和训练作业来最大限度地利用其 GPU 投资,并支持部分 GPU 分配以提高成本效益。此功能降低了管理多个开发环境的复杂性,使数据科学家能够专注于构建和部署其 AI 和 ML 模型。


本文将展示 HyperPod 管理员如何为他们的集群配置 Spaces,以及数据科学家如何创建和连接到这些 Spaces。您还将学习如何从本地 VS Code 环境直接连接到在 HyperPod 中创建的 Spaces。


解决方案概述

下图展示了在 HyperPod 集群上创建和管理 Spaces 所涉及的不同组件。

Solution architecture showing how Spaces on HyperPod works

该功能的工作原理如下:

  1. 集群管理员从 SageMaker AI 控制台安装 Spaces 附加组件。管理员可以选择 快速安装 (Quick install)自定义安装 (Custom install) 选项来安装此附加组件。
  2. 集群设置完成后,数据科学家和 AI 开发者可以使用 HyperPod 命令行界面 (CLI)kubectl 创建 Spaces。
  3. Space 创建后,用户可以通过以下两种方式之一连接到正在运行的 Space:
    1. 访问 Space Web UI:这需要设置 AWS Application Load Balancer (ALB),并在 Amazon Route 53 中设置或注册您自己的自定义域名系统 (DNS)。设置好自定义域名后,用户将能够通过其 Web 浏览器使用预签名 URL 安全地连接到 JupyterLab 或代码编辑器 Space。
    2. 远程 IDE 连接(从本地 Visual Studio Code 远程连接到 Space):在底层使用 SSH-over-SSM 隧道技术,安全地将远程 IDE 连接到 SageMaker Spaces Pod,而无需客户管理 SSH 密钥或暴露端口 22。

先决条件

要继续操作,您需要具备以下先决条件:

  1. 一个具有创建 IAM 角色、SageMaker 资源(如 HyperPod)以及访问 EKS 集群资源的权限的 AWS 账户。如果您要创建新的 SageMaker HyperPod 集群,还需要创建网络和存储资源的权限,请参阅集群创建的 IAM 权限
  2. 一个使用 EKS 编排的 SageMaker HyperPod 集群,运行 Kubernetes 版本 1.30 或更高版本。如果没有,您可以按照使用 Amazon EKS 编排创建 SageMaker HyperPod 集群中的说明进行创建。此工作流程将创建 HyperPod 集群、EKS 集群以及关联的资源,例如 Amazon Virtual Private Cloud (VPC) 和用于存储的 Amazon FSx for Lustre 卷。
  3. 安装了 HyperPod CLI(或 kubectl)。
  4. 本地 IDE,如 VS Code,并安装了 AWS Toolkit for VS Code,用于连接到 Spaces。

步骤 1:安装 Spaces 附加组件

首先,将 Spaces 附加组件安装到您的 SageMaker 集群。此附加组件允许用户直接在集群计算资源上运行 JupyterLab 和代码编辑器应用程序。快速安装选项是上手的最快方式。只需单击一下,SageMaker AI 就会使用优化的默认设置自动创建和配置所需的 AWS 资源。安装步骤如下:

  1. 在 SageMaker AI 控制台中,选择左侧窗格中的 Clusters,然后导航到您的 HyperPod 集群。
  2. 选择 IDE and Notebooks 选项卡。
  3. 选择 Quick install

Screenshot of the SageMaker console with IDE and Notebooks selected

  1. 检查将自动安装的依赖项,然后选择 Install

快速安装将使用默认设置创建 Spaces 附加组件的关联依赖项。它们列在下面:

  1. SageMaker Spaces 的 IAM 角色:
    1. 用于 AWS API 调用和 AWS Systems Manager 会话管理器 (SSM) 操作的控制器 Pod 角色。
    2. 用于 AWS Key Management Service (KMS) 操作和 JWT 签名的集群内部路由器角色。
    3. SSM 托管实例角色,用于远程访问 Spaces。
      可以在设置权限中找到 IAM 角色列表和所需权限。
  2. 远程访问组件:
    1. 启用到 Spaces 的 SSH 连接,包括 SSM 激活和会话文档。这会激活 Systems Manager 高级层,其中包含额外的按实例收费。
  3. 依赖的 EKS 附加组件:
    1. 用于证书管理的 Cert-manager
    2. 用于持久性存储卷的 Amazon Elastic Block Store (EBS) CSI 驱动程序。
    3. 用于管理 AWS Elastic Load Balancers 的 AWS Load Balancer Controller
  4. SageMaker Spaces 附加组件
    1. 部署 Spaces 控制器和集群内部路由器,用于管理 Space 的生命周期操作。

快速安装选项不安装 Web UI 配置,例如用于通过 Web 浏览器访问 Spaces 的 Route 53 DNS 记录和 SSL 证书。管理员可以执行自定义安装选项,或在附加组件安装后配置这些属性。有关配置 Web 浏览器访问的说明,请参阅操作员安装 – helm/控制台


安装通常需要 2-5 分钟,具体取决于预先存在的依赖项的可用性,或者 Spaces 附加组件是否需要完全预配新资源。安装完成后,管理员可以执行以下操作,如下所示:

  • 在 Spaces 表中查看数据科学家创建的 Spaces。
  • 配置命名空间,按团队或项目组织 Spaces。
  • 创建 Space 模板,其中包含常见用例的预配置设置。
  • 根据需要编辑配置,以启用或禁用 Spaces 功能或更改配置设置。

Screenshot of IDE and Notebooks after installing the add-on

对于生产用例,我们推荐使用自定义安装选项,管理员可以在其中设置应用最小权限原则的细粒度 IAM 策略。有关使用自定义安装选项(包括命名空间和默认模板)可以设置的完整配置集,请参阅安装

步骤 2:创建或更新 EKS 访问条目

要授予用户创建和管理 Spaces 的权限,请通过 EKS 访问条目授予他们访问权限。需要以下两个访问条目策略:

  • AmazonSagemakerHyperpodSpacePolicy
  • AmazonSagemakerHyperpodSpaceTemplatePolicy

有关创建和编辑访问条目的说明,请参阅创建访问条目更新访问条目

步骤 3:创建和管理 Spaces

数据科学家可以使用 kubectl 或 HyperPod CLI 在集群上创建 JupyterLab 和代码编辑器 Spaces。有关创建和管理 Spaces 的详细说明,请参阅 Hyperpod CLI

要创建 Space,请运行以下命令:

# 使用 hyp CLI 设置集群上下文
hyp set-cluster-context --cluster-name <your-hyperpod-cluster-name>
# 创建一个 space
hyp create hyp-space \
    --name "data-science-space" \
    --display-name "Data Science Workspace" \
    --namespace "default"

hyp create hyp-space 命令将使用默认设置创建一个 Space。要创建代码编辑器空间,请使用以下命令:

hyp create hyp-space \
--name code-editor-demo \
--display-name "code-editor space" \
--memory 8Gi \
--template-ref name=sagemaker-code-editor-template,namespace=jupyter-k8s-system

您也可以在创建 Space 时修改设置,示例如下:

hyp create hyp-space \
   --name test-space \
   --display-name "test space" \
   --memory 8Gi \
   --volume name=vol,mountPath=/home/,persistentVolumeClaimName=pvcname

创建 Space 后,您可以从 Web UI 或本地 VS Code 访问该 Space。要在 VS Code 中打开 Space,请运行:

hyp create hyp-space-access \
    --name data-science-space \
    --connection-type vscode-remote

如果您已按照我们的文档设置了自定义域名,则可以获取 Space 访问 URL,如下所示。这将会在您的浏览器中打开您的 Space。

hyp create hyp-space-access \
    --name data-science-space \
    --connection-type web-ui

或者,您可以使用 AWS Toolkit 从本地 VS Code 连接到 Space。在 VS Code IDE 中,打开 AWS Toolkit 面板。在 Toolkit 中,HyperPod 下方。在这里,您可以列出、启动、停止和连接到 Spaces。

Screenshot showing AWS Toolkit for VS Code and HyperPod Spaces

需要使用 HyperPod CLI 或 kubectl 创建 Spaces。

HyperPod CLI 支持对 Spaces 的其他 CRUD 操作,例如更新、描述和删除 Spaces。有关操作列表,请参阅 Github 上的 HyperPod CLI

对于熟悉 kubectl 的实践者,他们也可以使用 kubectl 创建、更新和删除 Spaces。例如,您可以使用 kubectl 创建一个 Space,如下所示:

kubectl apply -f - <<EOF
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
  name: training-workspace-1
  namespace: hyperpod-training-team
  labels:
   kueue.x-k8s.io/queue-name: hyperpod-ns-training-team-localqueue
   kueue.x-k8s.io/priority-class: ide-priority
spec:
  displayName: "Training Team Workspace 1"
  image: jupyter/minimal-notebook:latest
  desiredStatus: Running
  resources:
    requests:
      cpu: 3
      memory: 12Gi
    limits:
      cpu: 3
      memory: 12Gi
EOF

最佳实践

在使用 SageMaker Spaces 时,我们推荐以下最佳实践。

用户管理、RBAC 和协作

SageMaker Spaces 通过 Amazon EKS 访问条目来识别用户,这些访问条目源于您使用 HyperPod CLI 或 kubectl 与 Space 交互时的 IAM 身份。捕获的 EKS 身份可能显示为 IAM 用户或假设角色会话 ARN。对于假设角色,当管理员应用 IAM 策略以强制执行反映单个用户身份的假设角色会话名称时,会话名称可以代表实际用户。如果未强制执行会话名称或会话名称未唯一映射到用户,SageMaker Spaces 访问控制将回退到基于角色的访问控制,导致共享相同角色的所有用户被视为相同的身份。有关更多详细信息,请参阅添加用户和设置服务账户


Spaces 可以是私有的,仅对创建 Space 的用户可访问,也可以是公共的,对有权访问托管 Kubernetes 命名空间的所有用户可访问。Spaces 默认是公共的。创建者和管理员组仍然保留完全控制权,包括更新或删除 Space 的能力。仅当访问权限限制给创建者和管理员组时,Space 才会变为私有。此模型为团队提供了灵活的基础:公共 Spaces 支持共享环境中的开放协作,而私有 Spaces 则提供隔离。


如果配置为共享,多个用户可以在同一 Space 上协作。当与 JupyterLab 环境的 SageMaker Distribution 镜像一起启用时,我们还支持实时协作 (RTC),使用户能够协作进行交互式 ML 实验和工作负载。

管理员默认设置和控制

管理员设置的模板可帮助数据科学家快速使用为其用例预配置的 Space 设置。SageMaker 提供了两个预先创建的系统模板,一个用于 JupyterLab,一个用于代码编辑器,以便数据科学家无需额外配置即可开始使用。管理员还可以为数据科学家设置自定义模板,包括自定义配置,如镜像、存储和计算。管理员可以根据管理员的需求,在集群中使用模板,并且模板非常灵活。管理员可以根据特定的用例、项目或依赖项要求创建多个模板。

自定义 Spaces

管理员和开发人员可以使用自定义镜像和生命周期脚本来自定义其 Spaces。使用生命周期脚本进行最小化定制,例如安装其他包、设置默认变量或运行清理任务,同时仍可利用 SageMaker Distribution 镜像的功能。对于具有标准化开发和训练镜像的组织,SageMaker Spaces 也支持用户的自定义镜像和入口点。有关自定义镜像规范,请参阅自定义

关闭空闲计算资源

Spaces 默认支持自动关闭空闲工作区的特性,以优化资源使用。启用空闲关机后,系统会定期检查 Space 的活动情况,如果工作区空闲时间超过指定的超时时长,工作区将自动停止,从而释放计算资源供其他任务使用。管理员可以设置默认超时并选择不覆盖默认设置,以强制执行空闲关机。

与其它 HyperPod 附加组件集成

为了防止资源使用超额,请设置 HyperPod 任务治理,它提供全面的资源管理控制。为防止工作区因不相关工作负载的变化而被驱逐,请配置任务治理,将交互式 ML 工作负载设置为最高优先级,或将它们调度到关闭了驱逐设置的任务治理命名空间中。


设置 HyperPod 可观测性插件,以监控集群中运行的 Spaces 的资源使用情况。通过一键安装,可观测性插件可以洞察 Spaces 随时间使用的资源量,从而使管理员能够观察和调整其计算分配。

部分 GPU 支持

SageMaker Spaces 支持部分 GPU 配置,特别是 NVIDIA GPU 提供的 MIG 技术。MIG 带来的部分 GPU 支持意味着用户可以共享 GPU 实例,优化计算使用,同时在工作负载之间保持隔离。这意味着在部分 GPU 配置上运行的实验不太可能干扰在同一 GPU 上运行的其他工作负载。


要检查集群中的实例是否支持部分 GPU,请运行以下命令:

hyp list-accelerator-partition-type --instance-type <instance type>

如果您的集群包含支持部分 GPU 的实例组,您可以创建带有部分 GPU 的 Space,如下所示:

hyp create hyp-space \
--name test-space \
--display-name "mig-testing" \
--accelerator-partition-type mig-3g.20gb \
--accelerator-partition-count 1 \
--memory 8Gi \
--template-ref sagemaker-code-editor-template

清理

为避免产生不必要的费用,请清理本指南中创建的资源。

  1. 删除您创建的所有 Space。对您创建的每个 Space 运行此命令:
    hyp delete hyp-space \
    --name <space-name>
  2. 移除 SageMaker HyperPod Spaces 附加组件:从集群详细信息页面,导航到 IDE and Notebooks 选项卡,然后选择 Remove
  3. 如果出于本博文目的创建了 HyperPod 集群,请删除该集群以避免为未使用的计算付费。要删除集群,请按照删除 SageMaker HyperPod 集群中的说明操作。此外,如果您使用控制台创建了集群,请转到 AWS CloudFormation 控制台并删除父堆栈,以移除为集群创建的额外资源,例如存储和网络资源。父堆栈的格式将是 sagemaker-<your-hyperpod-cluster-name>-<unique-id>

结论

SageMaker HyperPod 中的 Spaces 通过在专用的计算资源上提供更安全、托管的开发环境,提升了数据科学家和 AI 开发人员的生产力。我们回顾了管理员和数据科学家的设置步骤,展示了团队如何快速创建和连接到 Spaces。通过此功能,团队现在可以减少花在环境设置上的时间,专注于模型开发,同时保持一致的开发环境。通过与 HyperPod 任务治理功能集成,管理员可以优化成本和公平的计算分配。




🚀 想要体验更好更全面的AI调用?

欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。

0

评论区