SageMaker Kubeflow 管道的元件 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SageMaker Kubeflow 管道的元件

使用 Kubeflow 管道的 SageMaker 元件,您可以從 Kubeflow 管道建立和監控原生 SageMaker訓練、調校、端點部署和批次轉換任務。透過在 上執行 Kubeflow 管道任務 SageMaker,您可以將資料處理和訓練任務從 Kubernetes 叢集移至 SageMaker的機器學習最佳化受管服務。本文件假設您事先了解 Kubernetes 和 Kubeflow。

什麼是 Kubeflow 管道?

Kubeflow Pipelines (KFP) 是建置和部署以 Docker 容器為基礎的可攜式、可擴展機器學習 (ML) 工作流程的平台。Kubeflow 管道平台由下列各項組成:

  • 用於管理和追蹤實驗、工作和執行的使用者介面 (UI)。

  • 用於排程多步驟機器學習 (ML) 工作流程的引擎 (Argo)。

  • SDK 用於定義和操作管道和元件的 。

  • 使用 與系統互動的筆記本SDK。

管道是對機器學習 (ML) 工作流程的一項描述,以有向無環圖來表示。工作流程中的每個步驟都表示為 Kubeflow 管道元件 ,這是一個 AWS SDK for Python (Boto3) 模組。

如需與 Kubeflow 管道相關的詳細資訊,請參閱 Kubeflow 管道文件

什麼是 Kubeflow 管道元件?

Kubeflow 管道元件是用來執行 Kubeflow 管道中某個步驟的一組程式碼。元件由 Docker 映像中內建的 Python 模組表示。管道執行時,元件的容器會在執行 Kubeflow 之 Kubernetes 叢集的其中一個工作者節點上具現化,並執行您的邏輯。管道元件可以讀取先前元件的輸出,並建立管道中的下一個元件可以消耗的輸出。透過這些元件可以快速、輕鬆地為實驗和生產環境撰寫管道,而不必與基礎 Kubernetes 基礎設施互動。

您可以在 Kubeflow 管道中使用 SageMaker 元件。與其將邏輯封裝在自訂容器中,您只需載入元件並使用 Kubeflow 管道 描述管道即可SDK。當管道執行時,您的指示會轉譯為 SageMaker 任務或部署。工作負載接著會在 的完全受管基礎設施上執行 SageMaker。

為什麼使用適用於 Kubeflow 管道的 SageMaker 元件?

SageMaker Kubeflow 管道的元件提供從 啟動運算密集型任務的替代方案 SageMaker。這些元件 SageMaker 與 Kubeflow 管道的可攜性和協調整合。使用適用於 Kubeflow 管道的 SageMaker 元件,您可以建立和監控 SageMaker 資源,作為 Kubeflow 管道工作流程的一部分。管道中的每個任務都會在 上執行, SageMaker 而不是本機 Kubernetes 叢集,可讓您利用關鍵 SageMaker 功能,例如資料標籤、大規模超參數調校和分散式訓練任務,或一鍵式安全且可擴展的模型部署。來自 的任務參數、狀態、日誌和輸出 SageMaker 仍可從 Kubeflow 管道 UI 存取。

這些 SageMaker 元件將主要 SageMaker 功能整合到您的 ML 工作流程中,從準備資料到建置、訓練和部署 ML 模型。您可以建立完全使用這些元件建立的 Kubeflow 管道,或視需要將個別元件整合到您的工作流程中。元件可以有一個或兩個版本。元件的每個版本使用不同的後端。如需與這些版本相關的詳細資訊,請參閱SageMaker Kubeflow 管道版本的元件

使用 SageMaker Components for Kubeflow Pipelines 無需額外費用。您透過這些元件使用的任何 SageMaker 資源都會產生費用。

SageMaker Kubeflow 管道版本的元件

SageMaker Kubeflow 管道的元件有兩種版本。每個版本都會利用不同的後端,在 上建立和管理資源 SageMaker。

  • Kubeflow 管道的 SageMaker 元件第 1 版 (1.x 版或以下版本) 使用 Boto3 (AWS SDK for Python (Boto3)) 作為後端。

  • 適用於 Kubeflow 管道的 SageMaker 元件第 2 版 (v2.0.0-alpha2 及更高版本) 使用適用於 SageMaker Kubernetes 的 Operator (ACK)

    AWS 引入ACK以促進以 Kubernetes 原生方式管理 AWS 雲端資源。ACK 包含一組 AWS 服務特定的控制器,其中一個是 SageMaker控制器。 SageMaker 控制器可讓機器學習開發人員和資料科學家更輕鬆地使用 Kubernetes 作為其控制平面,在 中訓練、調整和部署機器學習 (ML) 模型 SageMaker。如需詳細資訊,請參閱適用於 SageMaker Kubernetes 的運算子

支援兩種版本的 Kubeflow 管道 SageMaker 元件。但是,版本 2 提供了一些額外優點。尤其是:

  1. 無論您使用的是 Kubeflow 管道,還是 Kubernetes CLI(kubectl) 或其他 Kubeflow 應用程式,例如筆記本,從任何應用程式管理 SageMaker 資源的一致體驗。

  2. 在 Kubeflow 管道工作流程之外管理和監控 SageMaker 資源的彈性。

  3. 由於 SageMaker 運算子是其部署的一部分,因此如果您在 版本上部署了完整的 Kubeflow AWS,請使用 SageMaker 元件的零設定時間。

Kubeflow 管道的 SageMaker 元件清單

以下是 Kubeflow 管道的所有 SageMaker 元件及其可用版本的清單。或者,您可以在 SageMaker 中找到 Kubeflow 管道的所有元件 GitHub

注意

我們鼓勵使用者在可用的位置使用 SageMaker 元件第 2 版。

IAM 許可

使用 SageMaker 元件部署 Kubeflow 管道需要下列三層身分驗證:

  • 授予閘道節點 (可以是本機機器或遠端執行個體) 存取 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集IAM的角色。

    存取閘道節點的使用者會擔任此角色來執行以下操作:

    • 建立 Amazon EKS叢集並安裝 KFP

    • 建立IAM角色

    • 為您的範例輸入資料建立 Amazon S3 儲存貯體

    角色需要以下許可:

  • Kubernetes 管道 Pod (kfp-example-pod-role) 或 SageMaker Operator for Kubernetes 控制器 Pod 擔任以存取 的 Kubernetes IAM執行角色 SageMaker。此角色用於從 Kubernetes 建立和監控 SageMaker 任務。

    角色需要以下許可:

    • AmazonSageMakerFullAccess

    您可以透過建立KFP和連接自己的自訂政策,將許可限制為 和 控制器 Pod。

  • SageMaker 任務擔任的 SageMaker IAM執行角色,以存取 Amazon S3 或 Amazon ECR(kfp-example-sagemaker-execution角色 ) 等 AWS 資源。

    SageMaker 任務使用此角色來:

    • 存取 SageMaker 資源

    • 從 Amazon S3 輸入資料

    • 將您的輸出模型儲存到 Amazon S3

    角色需要以下許可:

    • AmazonSageMakerFullAccess

    • AmazonS3FullAccess

將管道轉換為使用 SageMaker

您可以透過移植一般 Python 處理容器訓練容器 SageMaker 來轉換現有的管道。如果您使用 SageMaker 進行推論,您也需要將IAM許可連接至叢集,並將成品轉換為模型。