SageMaker Operators for Kubernetes - Amazon SageMaker

SageMaker Operators for Kubernetes

借助 SageMaker Operators for Kubernetes,使用 Kubernetes 的开发人员和数据科学家可以更轻松地在 SageMaker 中训练、优化和部署机器学习 (ML) 模型。您可以在 Amazon Elastic Kubernetes Service (Amazon EKS) 的 Kubernetes 集群上安装这些 SageMaker Operator,使用 Kubernetes API 和命令行 Kubernetes 工具(如 kubectl)原生创建 SageMaker 作业。本指南介绍如何设置和使用 Operator,从 Kubernetes 集群实时和批量运行 SageMaker 上的模型训练、超参数优化或推理。本章中的过程和指南假设您熟悉 Kubernetes 及其基本命令。

重要

我们将停止对 SageMaker Operators for Kubernetes 的原始版本的开发和技术支持。

如果您当前正在使用 SageMaker Operators for Kubernetes 版本 v1.2.2 或更低版本,我们建议您将资源迁移到适用于 Amazon SageMaker 的 ACK 服务控制器。ACK 服务控制器是基于 AWS Controllers for Kubernetes (ACK) 的新一代 SageMaker Operators for Kubernetes。

有关迁移步骤的信息,请参阅将资源迁移到最新 Operator

有关终止对 SageMaker Operators for Kubernetes 原始版本支持的常见问题解答,请参阅宣布终止对 SageMaker Operators for Kubernetes 原始版本的支持

注意

使用这些 Operator 无需额外付费。您通过这些 Operator 使用的任何 SageMaker 资源都会产生费用。

什么是 Operator?

Kubernetes Operator 是代表 Kubernetes 用户管理应用程序的应用程序控制器。控制平面的控制器包括各种控制回路,它们侦听中央状态管理器 (ETCD),以调节其所控制的应用程序的状态。此类应用程序的示例包括 Cloud-controller-managerkube-controller-manager。Operator 通常提供比原始 Kubernetes API 更高级别的抽象,使用户能够更轻松地部署和管理应用程序。要向 Kubernetes 添加新功能,开发人员可以通过创建自定义资源(包含其特定于应用程序或特定于域的逻辑和组件)来扩展 Kubernetes API。Kubernetes 中的 Operator 允许用户以原生方式调用这些自定义资源并自动执行关联的工作流。

AWS Controllers for Kubernetes (ACK) 如何工作?

借助 SageMaker Operators for Kubernetes,您可以从 Kubernetes 集群管理 SageMaker 中的作业。最新版本 SageMaker Operators for Kubernetes 基于 AWS Controllers for Kubernetes (ACK)。ACK 包括一个通用控制器运行时、一个代码生成器和一组特定于 AWS 服务的控制器(其中一个是 SageMaker 控制器)。

下图说明了 ACK 的工作原理。


          解释了基于 ACK 的 SageMaker Operators for Kubernetes。

在这张图中,一位 Kubernetes 用户想要使用 Kubernetes API 从 Kubernetes 集群运行 SageMaker 上的模型训练。该用户向 kubectl apply 发出调用,传入一个描述 Kubernetes 自定义资源(该资源描述 SageMaker 训练作业)的文件。kubectl apply 将这个名为清单的文件传递给在 Kubernetes 控制器节点中运行的 Kubernetes API 服务器(工作流图中的步骤 1)。Kubernetes API 服务器接收包含 SageMaker 训练作业规范的清单,并确定该用户是否有权创建 sageMaker.services.k8s.aws/TrainingJob 类自定义资源,以及自定义资源的格式是否正确(步骤 2)。如果该用户已获授权且自定义资源有效,则 Kubernetes API 服务器会将自定义资源写入(步骤 3)其 etcd 数据存储,然后回复该用户(步骤 4),告知已创建自定义资源。在普通 Kubernetes Pod 上下文中的 Kubernetes 工作线程节点上运行的 SageMaker 控制器会收到通知(步骤 5),告知已创建新的 sageMaker.services.k8s.aws/TrainingJob 类自定义资源。然后,SageMaker 控制器与 SageMaker API 通信(步骤 6),调用 SageMaker CreateTrainingJob API 以在 AWS 中创建训练作业。与 SageMaker API 通信后,SageMaker 控制器调用 Kubernetes API 服务器,使用从 SageMaker 收到的信息更新(步骤 7)自定义资源的状态。因此,SageMaker 控制器向开发人员提供的信息与他们使用 AWS SDK 时获得的信息相同。

权限概述

Operator 代表您访问 SageMaker 资源。Operator 为与 AWS 资源交互而代入的 IAM 角色与您用于访问 Kubernetes 集群的凭证不同。该角色也不同于运行机器学习作业时 AWS 所代入的角色。

下图说明了各种身份验证层。


          SageMaker Operators for Kubernetes 的各种身份验证层。