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 的更多信息,请参阅 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 还提供了一些额外的优势。具体而言,它提供:
-
从任何应用程序管理 SageMaker 资源的一致体验;无论您使用的是 Kubeflow Pipelines、Kubernetes CLI (
kubectl
) 还是其他 Kubeflow 应用程序(如笔记本)。 -
在 Kubeflow Pipelines 工作流之外管理和监控 SageMaker 资源的灵活性。
-
零设置时间来使用 SageMaker 组件(如果您部署了完整的 Kubeflow on Amazon
版本),因为 SageMaker Operator 是其部署的一部分。
SageMaker Components for Kubeflow Pipelines 列表
以下是所有 SageMaker Components for Kubeflow Pipelines 及其可用版本的列表。您也可以在 GitHub 中找到所有 SageMaker Components for Kubeflow Pipelines
注意
我们鼓励用户在任何可用的情况下使用 SageMaker 组件的版本 2。
-
Ground Truth
使用 Ground Truth,您可以直接从 Kubeflow Pipelines 工作流提交 SageMaker Ground Truth 标注作业。
组件版本 1 组件版本 2 X
-
工作团队
使用工作团队组件,您可以直接从 Kubeflow Pipelines 工作流创建 SageMaker 私有工作团队作业。
组件版本 1 组件版本 2 X
-
处理
使用处理组件,您可以直接从 Kubeflow Pipelines 工作流向 SageMaker 提交处理作业。
组件版本 1 组件版本 2 X
-
训练
使用训练组件,您可以直接从 Kubeflow Pipelines 工作流提交 SageMaker 训练作业。
-
超参数优化
使用超参数优化组件,您可以直接从 Kubeflow Pipelines 工作流向 SageMaker 提交超参数优化作业。
组件版本 1 组件版本 2 X
-
托管部署
使用托管组件,您可以使用 Kubeflow Pipelines 工作流中的 SageMaker 托管服务来部署模型。
组件版本 1 组件版本 2 托管组件版本 2 包含在 SageMaker 上创建托管部署所需的三个子组件。
-
SageMaker 模型 Kubeflow Pipelines 组件版本 2
,负责模型构件和包含推理代码的模型映像注册表路径。 -
SageMaker 端点配置 Kubeflow Pipelines 组件版本 2
,负责定义端点的配置,例如实例类型、模型、实例数和无服务器推理选项。 -
SageMaker 端点 Kubeflow Pipelines 组件版本 2
,负责按照端点配置中的规定在 SageMaker 上创建或更新端点。
-
-
批量转换
使用批量转换组件,您可以通过 Kubeflow Pipelines 工作流在 SageMaker 中为整个数据集运行推理作业。
组件版本 1 组件版本 2 X
-
模型监控器
使用模型监控器组件,您可以从 Kubeflow Pipelines 工作流监控生产环境中的 SageMaker 机器学习模型的质量。
组件版本 1 组件版本 2 X
模型监控器组件由四个子组件组成,用于监控模型中的偏差。
-
SageMaker 数据质量作业定义 Kubeflow Pipelines 组件版本 2
,负责监控数据质量的偏差。 -
SageMaker 模型质量作业定义 Kubeflow Pipelines 组件版本 2
,负责监控模型质量指标的偏差。 -
SageMaker 模型偏差作业定义 Kubeflow Pipelines 组件版本 2
,负责监控模型预测中的偏差。 -
SageMaker 模型可解释性作业定义 Kubeflow Pipelines 组件版本 2
,负责监控特征归因的偏差。
此外,为了按指定频率进行按计划监控,第五个组件(即 SageMaker 监控计划 Kubeflow Pipelines 组件版本 2
)负责按计划监控从实时端点收集的数据。 有关 Amazon SageMaker 模型监控器的更多信息,请参阅监控数据和模型质量。
-
IAM 权限
使用 SageMaker 组件部署 Kubeflow Pipelines 需要以下三层身份验证:
-
一个 IAM 角色,授予您的网关节点(可以是本地计算机,也可以是远程实例)访问 Amazon Elastic Kubernetes Service (Amazon EKS) 集群的权限。
访问网关节点的用户代入此角色,以便:
-
创建 Amazon EKS 集群并安装 KFP
-
创建 IAM 角色
-
为您的示例输入数据创建 Amazon S3 存储桶
该角色需要以下权限:
-
CloudWatchLogsFullAccess
-
IAMFullAccess
-
AmazonS3FullAccess
-
AmazonEC2FullAccess
-
AmazonEKSAdminPolicy(使用 Amazon EKS 基于身份的策略示例中的架构创建此策略)
-
-
由 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 权限附加到集群并将构件转换为模型。