

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# SageMaker Kubeflow 管道的人工智能组件
<a name="kubernetes-sagemaker-components-for-kubeflow-pipelines"></a>

借助 Kubeflow Pipelines 的 SageMaker AI 组件，你可以从 Kubeflow Pipelines 中创建和监控原生 SageMaker AI 训练、调整、端点部署和批量转换作业。通过在 SageMaker AI 上运行 Kubeflow Pipeline 作业，您可以将数据处理和训练作业从 Kubernetes 集群转移到 SageMaker 人工智能经过机器学习优化的托管服务。本文档假设您事先了解 Kubernetes 和 Kubeflow。

**Topics**
+ [什么是 Kubeflow Pipelines？](#what-is-kubeflow-pipelines)
+ [什么是 Kubeflow Pipelines 组件？](#kubeflow-pipeline-components)
+ [为什么要在 Kubeflow 管道中使用 SageMaker 人工智能组件？](#why-use-sagemaker-components)
+ [SageMaker 适用于 Kubeflow 管道版本的 AI 组件](#sagemaker-components-versions)
+ [Kubeflow 管道 SageMaker 的人工智能组件清单](#sagemaker-components-list)
+ [IAM 权限](#iam-permissions)
+ [将管道转换为使用 SageMaker AI](#converting-pipelines-to-use-amazon-sagemaker)
+ [安装 Kubeflow Pipelines](kubernetes-sagemaker-components-install.md)
+ [使用 SageMaker AI 组件](kubernetes-sagemaker-components-tutorials.md)

## 什么是 Kubeflow Pipelines？
<a name="what-is-kubeflow-pipelines"></a>

Kubeflow Pipelines (KFP) 是一个基于 Docker 容器构建和部署便携式、可扩展的机器学习 (ML) 工作流的平台。Kubeflow Pipelines 平台由以下各项组成：
+ 用于管理和跟踪实验、作业和运行的用户界面 (UI)。
+ 用于计划多步骤机器学习工作流的引擎 (Argo)。
+ 用于定义和操作管道和组件的 SDK。
+ 用于使用 SDK 与系统交互的笔记本。

管道是对以[有向无环图](https://www.kubeflow.org/docs/pipelines/concepts/graph/)形式表示的机器学习工作流的描述。工作流程中的每个步骤都表示为 Kubeflow Pipeline [组件](https://www.kubeflow.org/docs/pipelines/overview/concepts/component/)，它是一个 适用于 Python (Boto3) 的 Amazon SDK 模块。

有关 Kubeflow Pipelines 的更多信息，请参阅 [Kubeflow Pipelines 文档](https://www.kubeflow.org/docs/pipelines/)。

## 什么是 Kubeflow Pipelines 组件？
<a name="kubeflow-pipeline-components"></a>

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

你可以在 Kubeflow 管道中使用 SageMaker 人工智能组件。您只需使用 Kubeflow Pipelines SDK 加载组件并描述管道，而无需在自定义容器中封装逻辑。管道运行时，您的指令将转换为 A SageMaker I 任务或部署。然后，工作负载在完全托管的 SageMaker AI 基础架构上运行。

## 为什么要在 Kubeflow 管道中使用 SageMaker 人工智能组件？
<a name="why-use-sagemaker-components"></a>

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

从准备数据到构建、训练和部署机器学习模型， SageMaker A SageMaker I 组件将关键 AI 功能集成到您的机器学习工作流程中。您可以创建完全使用这些组件构建的 Kubeflow Pipelines，也可以根据需要将单个组件集成到工作流中。这些组件有一种或两个版本。组件的每个版本都利用不同的后端。有关这些版本的更多信息，请参阅 [SageMaker 适用于 Kubeflow 管道版本的 AI 组件](#sagemaker-components-versions)。

在 Kubeflow 流水线上使用 SageMaker 人工智能组件无需支付额外费用。通过这些组件使用的任何 SageMaker AI 资源都将产生费用。

## SageMaker 适用于 Kubeflow 管道版本的 AI 组件
<a name="sagemaker-components-versions"></a>

SageMaker Kubeflow 流水线的 AI 组件有两个版本。每个版本都利用不同的后端在 SageMaker AI 上创建和管理资源。
+ Kubeflow Pipelines 版本 1（v1.x 或更低版本）的 SageMaker AI 组件使用 **[Boto](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html)** 3 () 作为后端。适用于 Python (Boto3) 的 Amazon SDK
+ [适用于 Kubeflow Pipelines SageMaker 的人工智能组件版本 2（v2.0.0-alpha2 及更高版本）使用 SageMaker 适用于 Kubernetes 的人工智能运算符 (ACK)。](https://github.com/aws-controllers-k8s/sagemaker-controller)

  Amazon 引入 [ACK](https://aws-controllers-k8s.github.io/community/) 是为了简化 Kubernetes 原生的云资源管理方式。 Amazon ACK 包括一组 Amazon 特定于服务的控制器，其中一个是 SageMaker AI 控制器。 SageMaker 人工智能控制器使使用 Kubernetes 作为控制平面的机器学习开发人员和数据科学家可以更轻松地在 AI 中训练、调整和部署机器学习 (ML) 模型。 SageMaker 如需了解更多信息，请参阅适用于 [Kubernet SageMaker es 的人工智能运算符](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/) 

Kubeflow 流水线的 SageMaker AI 组件的两个版本都受支持。但是，版本 2 还提供了一些额外的优势。具体而言，它提供：

1. 无论您使用的是 Kubeflow 管道、Kubernetes CLI `kubectl` () 还是其他 Kubeflow 应用程序（例如笔记本），都可以通过任何应用程序管理 SageMaker 人工智能资源的一致体验。

1. 可以灵活地在 Kubeflow 管道工作流程之外管理和监控 SageMaker AI 资源。

1. 如果您在 Amazon发布时部署了完整的 [Kubeflow](https://awslabs.github.io/kubeflow-manifests/docs/about/)，则使用 SageMaker AI 组件的设置时间为零，因为 SageMaker AI 操作员是其部署的一部分。

## Kubeflow 管道 SageMaker 的人工智能组件清单
<a name="sagemaker-components-list"></a>

以下是 Kubeflow Pipelines 的所有 SageMaker AI 组件及其可用版本的列表。或者，你可以在中找到 [Kubeflow 管道的所有 SageMaker AI 组件](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker#versioning)。 GitHub

**注意**  
我们鼓励用户在任何可用的 A SageMaker I 组件版本2中使用该组件。

### Ground Truth 组件
<a name="ground-truth-components"></a>
+ **Ground Truth**

  Ground Truth 组件允许你直接从 Kubeflow Pipelines 工作流程中提交 SageMaker AI Ground Truth 标签作业。    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **工作团队**

  Workteam 组件允许你直接从 Kubeflow Pipelines 工作流程创建 SageMaker AI 私有工作团队作业。    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### 数据处理组件
<a name="data-processing-components"></a>
+ **Processing**

  处理组件使您可以直接从 Kubeflow Pipelines 工作流程向 SageMaker AI 提交处理任务。    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### 训练组件
<a name="training-components"></a>
+ **训练**

  训练组件允许您直接从 Kubeflow Pipelines 工作流程提交 SageMaker 训练作业。    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **超参数优化**

  超参数优化组件使您可以直接从 Kubeflow Pipelines 工作流程向 SageMaker AI 提交超参数调整任务。    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### 推理组件
<a name="inference-components-kfp"></a>
+ **托管部署**

  托管组件允许您使用 Kubeflow Pipelines 工作流程中的 SageMaker AI 托管服务部署模型。    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **批量转换**

  Batch Transform 组件允许你通过 Kubeflow Pipelines 工作流程在 SageMaker AI 中为整个数据集运行推理作业。    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Model Monitor**

  模型监视器组件允许您通过 Kubeflow Pipelines 工作流程监控生产中的 SageMaker AI 机器学习模型的质量。    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

## IAM 权限
<a name="iam-permissions"></a>

使用 SageMaker AI 组件部署 Kubeflow Pipelines 需要以下三层身份验证：
+ 一个 IAM 角色，授予您的网关节点（可以是本地计算机，也可以是远程实例）访问 Amazon Elastic Kubernetes Service (Amazon EKS) 集群的权限。

  访问网关节点的用户代入此角色，以便：
  + 创建 Amazon EKS 集群并安装 KFP
  + 创建 IAM 角色
  + 为您的示例输入数据创建 Amazon S3 存储桶

  该角色需要以下权限：
  + CloudWatchLogsFullAccess 
  + [https://console.amazonaws.cn/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.amazonaws.cn/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess) 
  + IAMFull访问权限
  + 亚马逊 3 FullAccess
  + Amazon EC2 FullAccess
  + 亚马逊EKSAdmin政策（使用 A [mazon EKS 基于身份的策略示例中的架构创建此策略](https://docs.amazonaws.cn/eks/latest/userguide/security_iam_id-based-policy-examples.html)） 
+ Kubernetes IAM 执行角色由 Kubernetes 管道容器 (**kfp-example-pod-role**) 或 Kubernetes 控制器容器的 SageMaker AI 操作员担任，用于访问 AI。 SageMaker 此角色用于创建和监控来自 Kubernet SageMaker es 的人工智能作业。

  该角色需要以下权限：
  + AmazonSageMakerFullAccess 

  您可以通过创建和附加自己的自定义策略来限制 KFP 和控制器 Pod 的权限。
+  SageMaker 人工智能任务承担的 AI IAM 执行角色， Amazon 用于访问诸如 Amazon S3 或 Amazon ECR（**kfp-example-sagemaker-execution-** role）之类的资源。 SageMaker 

  SageMaker AI 工作使用此角色来：
  + 访问 SageMaker AI 资源
  + 从 Amazon S3 输入数据
  + 将输出模型存储到 Amazon S3

  该角色需要以下权限：
  + AmazonSageMakerFullAccess 
  + 亚马逊 3 FullAccess 

## 将管道转换为使用 SageMaker AI
<a name="converting-pipelines-to-use-amazon-sagemaker"></a>

您可以通过移植通用 Python [处理容器和[训练容](https://docs.amazonaws.cn/sagemaker/latest/dg/your-algorithms-training-algo.html)器](https://docs.amazonaws.cn/sagemaker/latest/dg/amazon-sagemaker-containers.html)，将现有管道转换为使用 SageMaker AI。如果您使用 SageMaker AI 进行推理，则还需要将 IAM 权限附加到集群并将构件转换为模型。