SageMaker Components for Kubeflow Pipelines - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

SageMaker Components for Kubeflow Pipelines

本文档概述了如何使用 SageMaker Components for Kubeflow Pipelines。借助这些管道组件,您可以从 Kubeflow Pipelines 创建和监控原生 SageMaker 训练、优化、端点部署和批量转换作业。通过在 SageMaker 上运行 Kubeflow Pipelines 作业,可以将数据处理和训练作业从 Kubernetes 集群转移到 SageMaker 经过机器学习优化的托管服务。本文档假设您事先了解 Kubernetes 和 Kubeflow。

什么是 Kubeflow Pipelines?

Kubeflow Pipelines (KFP) 是一个基于 Docker 容器构建和部署便携式、可扩展的机器学习 (ML) 工作流的平台。Kubeflow Pipelines 平台由以下各项组成:

  • 用于管理和跟踪实验、作业和运行的用户界面 (UI)。

  • 用于计划多步骤机器学习工作流的引擎 (Argo)。

  • 用于定义和操作管道和组件的 SDK。

  • 用于使用 SDK 与系统交互的笔记本。

管道是对以有向无环图形式表示的机器学习工作流的描述。工作流中的每个步骤都以 Kubeflow Pipelines 组件的形式表示,该组件是 Amazon SDK for Python (Boto3) 模块。

有关 Kubeflow Pipelines 的更多信息,请参阅 Kubeflow Pipelines 文档

什么是 Kubeflow Pipelines 组件?

Kubeflow Pipelines 组件是一组用于执行 Kubeflow 管道中一个步骤的代码。组件由 Docker 映像中内置的 Python 模块表示。当管道运行时,组件的容器将在运行 Kubeflow 的 Kubernetes 集群中的一个工作线程节点上实例化,然后执行您的逻辑。管道组件可以读取先前组件的输出,并创建管道中下一个组件可以使用的输出。利用这些组件可以快速轻松地为实验和生产环境编写管道,而无需与底层 Kubernetes 基础设施进行交互。

您可以在 Kubeflow 管道中使用 SageMaker 组件。您只需使用 Kubeflow Pipelines SDK 加载组件并描述管道,而无需在自定义容器中封装逻辑。当管道运行时,您的指令将转换为 SageMaker 作业或部署。然后,工作负载在 SageMaker 的完全托管基础设施上运行。

为什么要使用 SageMaker Components for Kubeflow Pipelines?

SageMaker Components for Kubeflow Pipelines 为从 SageMaker 启动计算密集型作业提供了另一种选择。这些组件将 SageMaker 与 Kubeflow Pipelines 的可移植性和编排功能集成在一起。使用 SageMaker Components for Kubeflow Pipelines,您可以在 Kubeflow Pipelines 工作流中创建和监控 SageMaker 资源。管道中的每个作业都在 SageMaker 而不是本地 Kubernetes 集群上运行,这样您就可以利用 SageMaker 的关键特征,例如数据标注、大规模超参数优化和分布式训练作业,或者一键式安全且可扩展的模型部署。仍然可以从 Kubeflow Pipelines UI 访问来自 SageMaker 的作业参数、状态、日志和输出。

SageMaker 组件将 SageMaker 的关键特征集成到您的机器学习工作流(从准备数据到构建、训练和部署机器学习模型)中。您可以创建完全使用这些组件构建的 Kubeflow Pipelines,也可以根据需要将单个组件集成到工作流中。这些组件有一种或两个版本。组件的每个版本都利用不同的后端。有关这些版本的更多信息,请参阅 SageMaker Components for Kubeflow Pipelines 版本

使用 SageMaker Components for Kubeflow Pipelines 不收取任何额外费用。您通过这些组件使用的任何 SageMaker 资源都会产生费用。

SageMaker Components for Kubeflow Pipelines 版本

SageMaker Components for Kubeflow Pipelines 有两个版本。每个版本都利用不同的后端在 SageMaker 上创建和管理资源。

  • SageMaker Components for Kubeflow Pipelines 版本 1(v1.x 或更低版本)使用 Boto3 (Amazon SDK for Python (Boto3)) 作为后端。

  • SageMaker Components for Kubeflow Pipelines 版本 2(v2.0.0-alpha2 及更高版本)使用 SageMaker Operators for Kubernetes (ACK)

    Amazon 引入 ACK 是为了促进以 Kubernetes 原生方式管理 Amazon Cloud 资源。ACK 包括一组特定于 Amazon 服务的控制器,其中一个是 SageMaker 控制器。利用 SageMaker 控制器,使用 Kubernetes 作为控制平面的机器学习开发人员和数据科学家可以更轻松地在 SageMaker 中训练、优化和部署机器学习 (ML) 模型。有关更多信息,请参阅 SageMaker Operators for Kubernetes

两个版本的 SageMaker Components for Kubeflow Pipelines 均受支持。但是,版本 2 还提供了一些额外的优势。具体而言,它提供:

  1. 从任何应用程序管理 SageMaker 资源的一致体验;无论您使用的是 Kubeflow Pipelines、Kubernetes CLI (kubectl) 还是其他 Kubeflow 应用程序(如笔记本)。

  2. 在 Kubeflow Pipelines 工作流之外管理和监控 SageMaker 资源的灵活性。

  3. 零设置时间来使用 SageMaker 组件(如果您部署了完整的 Kubeflow on Amazon 版本),因为 SageMaker Operator 是其部署的一部分。

SageMaker Components for Kubeflow Pipelines 列表

以下是所有 SageMaker Components for Kubeflow Pipelines 及其可用版本的列表。您也可以在 GitHub 中找到所有 SageMaker Components for Kubeflow Pipelines

注意

我们鼓励用户在任何可用的情况下使用 SageMaker 组件的版本 2。

IAM 权限

使用 SageMaker 组件部署 Kubeflow Pipelines 需要以下三层身份验证:

  • 一个 IAM 角色,授予您的网关节点(可以是本地计算机,也可以是远程实例)访问 Amazon Elastic Kubernetes Service (Amazon EKS) 集群的权限。

    访问网关节点的用户代入此角色,以便:

    • 创建 Amazon EKS 集群并安装 KFP

    • 创建 IAM 角色

    • 为您的示例输入数据创建 Amazon S3 存储桶

    该角色需要以下权限:

  • 由 Kubernetes 管道 Pod (kfp-example-pod-role) 或 SageMaker Operators for Kubernetes 代入的用于访问 SageMaker 的 Kubernetes IAM 执行角色。此角色用于从 Kubernetes 创建和监控 SageMaker 作业。

    该角色需要以下权限:

    • AmazonSageMakerFullAccess

    您可以通过创建和附加自己的自定义策略来限制 KFP 和控制器 Pod 的权限。

  • 由 SageMaker 作业代入的用于访问 Amazon 资源(如 Amazon S3 或 Amazon ECR (kfp-example-sagemaker-execution-role))的 SageMaker IAM 执行角色。

    SageMaker 作业使用此角色来:

    • 访问 SageMaker 资源

    • 从 Amazon S3 输入数据

    • 将输出模型存储到 Amazon S3

    该角色需要以下权限:

    • AmazonSageMakerFullAccess

    • AmazonS3FullAccess

将管道转换为使用 SageMaker

您可以通过移植通用 Python 处理容器训练容器,将现有管道转换为使用 SageMaker。如果您使用 SageMaker 进行推理,则还需要将 IAM 权限附加到集群并将构件转换为模型。