

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SageMaker AI Components for Kubeflow Pipelines
<a name="kubernetes-sagemaker-components-for-kubeflow-pipelines"></a>

Kubeflow パイプライン用の SageMaker AI コンポーネントを使用すると、Kubeflow Pipelines から SageMaker AI トレーニング、チューニング、エンドポイントのデプロイ、バッチ変換などのネイティブのジョブを作成およびモニタリングできます。SageMaker AI で Kubeflow Pipeline ジョブを実行することで、データ処理ジョブとトレーニングジョブを Kubernetes クラスターから SageMaker AI の機械学習に最適化されたマネージドサービスに移動できます。このドキュメントは、Kubernetes および Kubeflow に関する事前知識を前提としています。

**Topics**
+ [Kubeflow Pipelines とは](#what-is-kubeflow-pipelines)
+ [Kubeflow Pipeline コンポーネントとはどういうものですか?](#kubeflow-pipeline-components)
+ [SageMaker AI Components for Kubeflow Pipelines を使用する理由](#why-use-sagemaker-components)
+ [SageMaker AI Components for Kubeflow Pipelines のバージョン](#sagemaker-components-versions)
+ [SageMaker AI Components for Kubeflow Pipelines 一覧](#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)。
+ 複数ステップの ML ワークフローをスケジューリングするためのエンジン (Argo)。
+ パイプラインとコンポーネントを定義して操作するための SDK。
+ SDK を使用してシステムとやり取りするためのノートブック。

パイプラインは ML ワークフローを説明したもので、[有向非巡回グラフグラフ](https://www.kubeflow.org/docs/pipelines/concepts/graph/)として表現されます。ワークフローの各ステップは、 AWS SDK for Python (Boto3) モジュールである Kubeflow Pipeline [コンポーネント](https://www.kubeflow.org/docs/pipelines/overview/concepts/component/)として表されます。

Kubeflow Pipelines の詳細については、「[Kubeflow Pipelines のドキュメント](https://www.kubeflow.org/docs/pipelines/)」を参照してください。

## Kubeflow Pipeline コンポーネントとはどういうものですか?
<a name="kubeflow-pipeline-components"></a>

Kubeflow Pipeline コンポーネントは、Kubeflow パイプラインの 1 つのステップを実行するために使用される一連のコードです。コンポーネントは、Docker イメージに組み込まれた Python モジュールに代表されます。パイプラインが実行されると、Kubeflow を実行している Kubernetes クラスタ-のワーカーノードのいずれかでコンポーネントのコンテナがインスタンス化され、ロジックが実行されます。パイプラインコンポーネントは、前のコンポーネントから出力を読み取り、パイプラインの次のコンポーネントが使用できる出力を作成できます。これらのコンポーネントを使用すると、基礎となる Kubernetes インフラストラクチャを操作することなく、実験環境や本番環境のパイプラインを迅速かつ簡単に作成できます。

SageMaker AI コンポーネントは Kubeflow パイプラインで使用できます。ロジックをカスタムコンテナにカプセル化するのではなく、Kubeflow Pipelines SDK を使用してコンポーネントを読み込み、パイプラインを記述するだけで済みます。パイプラインが実行されると、指示が SageMaker AI ジョブまたはデプロイに変換されます。その後、ワークロードは SageMaker AI のフルマネージドインフラストラクチャー上で実行されます。

## SageMaker AI Components for Kubeflow Pipelines を使用する理由
<a name="why-use-sagemaker-components"></a>

SageMaker AI Components for Kubeflow Pipelines は、SageMaker AI からコンピューティング集約型のジョブを起動する代替手段を提供します。コンポーネントは、SageMaker AI と Kubeflow Pipelines の移植性とオーケストレーションを統合しています。SageMaker AI Components for Kubeflow Pipelines を使用すると、Kubeflow Pipelines ワークフローの一部として SageMaker AI リソースを作成してモニタリングできます。パイプライン内の各ジョブは、ローカル Kubernetes クラスターではなく SageMaker AI 上で実行されるため、データラベリング、大規模なハイパーパラメータのチューニング、分散トレーニングジョブ、ワンクリックで実行できる安全かつスケーラブルなモデルのデプロイなど、主要な SageMaker AI 機能を活用できます。SageMaker AI のジョブパラメータ、ステータスログ、出力には、Kubeflow パイプライン UI から引き続きアクセスできます。

SageMaker AI コンポーネントは、データの準備から ML モデルの構築、トレーニング、デプロイに至るまでの SageMaker AI の主要な機能を ML ワークフローに統合します。これらのコンポーネントを使用して完全に構築された Kubeflow Pipeline を作成できるほか、必要に応じて個々のコンポーネントをワークフローに統合することもできます。コンポーネントは 1 つまたは 2 つのバージョンで利用できます。コンポーネントのバージョンごとに異なるバックエンドが使用されます。 バージョンの詳細については、「[SageMaker AI Components for Kubeflow Pipelines のバージョン](#sagemaker-components-versions)」を参照してください。

SageMaker AI Components for Kubeflow Pipelines は追加料金なしで使用できます。これらのコンポーネントを介して使用する SageMaker AI リソースに対しては、料金が発生します。

## SageMaker AI Components for Kubeflow Pipelines のバージョン
<a name="sagemaker-components-versions"></a>

SageMaker AI Components for Kubeflow Pipelines には、2 つのバージョンがあります。各バージョンは、異なるバックエンドを利用して SageMaker AI 上でリソースを作成して管理します。
+ SageMaker AI Components for Kubeflow Pipelines バージョン 1 (v1.x 以前) は、バックエンドとして **[Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html)** (AWS SDK for Python (Boto3)) を使用します。
+ SageMaker AI Components for Kubeflow Pipelines バージョン 2 (v2.0.0-alpha2 以降) は [SageMaker AI Operator for Kubernetes (ACK)](https://github.com/aws-controllers-k8s/sagemaker-controller) を使用しています。

  AWS は、 AWS クラウドリソースを管理する Kubernetes ネイティブな方法を容易にするために [ACK](https://aws-controllers-k8s.github.io/community/) を導入しました。ACK にはサービス AWS 固有のコントローラーのセットが含まれており、そのうちの 1 つは SageMaker AI コントローラーです。SageMaker AI コントローラーを使用すると、機械学習デベロッパーやデータサイエンティストは、Kubernetes をコントロールプレーンとして使用して、SageMaker AI で機械学習 (ML) モデルをより簡単にトレーニング、調整、デプロイできるようになります。詳細については「[ Kubernetes 向け SageMaker AI の 演算子](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/)」を参照してください。

SageMaker AI Components for Kubeflow Pipelines のバージョンは両方ともサポートされています。ただし、バージョン 2 には他にも利点がいくつかあります。特に、以下の利点を得られます。

1. Kubeflow パイプライン、Kubernetes CLI (`kubectl`)、ノートブックなどの他の Kubeflow アプリケーションなど、任意のアプリケーションから SageMaker AI リソースを管理できる一貫したエクスペリエンス 

1. Kubeflow パイプラインワークフローの外部で SageMaker AI リソースを管理してモニタリングする柔軟性 

1. SageMaker AI Operator がデプロイに含まれているため、[Kubeflow on AWS](https://awslabs.github.io/kubeflow-manifests/docs/about/) をフルデプロイした場合、SageMaker AI コンポーネントを使用するための設定時間が不要になります。

## SageMaker AI Components for Kubeflow Pipelines 一覧
<a name="sagemaker-components-list"></a>

以下は、SageMaker AI Components for Kubeflow Pipelines のすべてと使用可能なバージョンのリストです。または、[GitHub で SageMaker AI Components for Kubeflow Pipelines](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker#versioning) を検索することもできます。

**注記**  
SageMaker AI コンポーネントのバージョン 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.aws.amazon.com/ja_jp/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.aws.amazon.com/ja_jp/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### データ処理コンポーネント
<a name="data-processing-components"></a>
+ **Processing**

  Processing コンポーネントを使用すると、Kubeflow Pipelines ワークフローから直接 SageMaker AI に処理ジョブを送信できます。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/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.aws.amazon.com/ja_jp/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **ハイパーパラメータの最適化**

  ハイパーパラメータ最適化コンポーネントを使用すると、Kubeflow Pipelines ワークフローから SageMaker AI にハイパーパラメータ調整ジョブを直接送信できます。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### 推論コンポーネント
<a name="inference-components-kfp"></a>
+ **ホスティングデプロイ**

  Hosting コンポーネントを使用すると、Kubeflow Pipelines ワークフローから SageMaker AI ホスティングサービスを使用してモデルをデプロイできます。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **バッチ変換**

  バッチ変換コンポーネントを使用すると、Kubeflow Pipelines ワークフローから SageMaker AI のデータセット全体に対して推論ジョブを実行できます。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/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.aws.amazon.com/ja_jp/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

## IAM アクセス許可
<a name="iam-permissions"></a>

SageMaker AI コンポーネントで Kubeflow Pipelines をデプロイするには、次の 3 つのレイヤーの認証が必要です。
+ ゲートウェイノード (ローカルマシンまたはリモートインスタンス) に Amazon Elastic Kubernetes Service (Amazon EKS) クラスターへのアクセスを許可する IAM ロール。

  ゲートウェイノードにアクセスするユーザーは、このロールを引き受けて次のことを行います。
  + Amazon EKS クラスターを作成し、KFP をインストールする
  + IAM ロールを作成する
  + サンプル入力データ用の Amazon S3 バケットを作成する

  このロールには以下のアクセス許可が必要です。
  + CloudWatchLogsFullAccess 
  + [https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess) 
  + IAMFullAccess
  + AmazonS3FullAccess
  + AmazonEC2FullAccess
  + AmazonEKSAdminPolicy (「[Amazon EKS アイデンティティベースのポリシーの例](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html)」のスキーマを使用してこのポリシーを作成) 
+ Kubernetes パイプラインポッド (**kfp-example-pod-role**) または SageMaker AI Operator for Kubernetes コントローラーポッドが SageMaker AI にアクセスするために引き受ける Kubernetes IAM 実行ロール。このロールは、Kubernetes から SageMaker AI ジョブを作成してモニタリングするために使用されます。

  このロールには以下のアクセス許可が必要です。
  + AmazonSageMakerFullAccess 

  独自のカスタムポリシーを作成してアタッチすることで、KFP ポッドとコントローラーポッドのアクセス許可を制限できます。
+ Amazon SageMaker3 や Amazon ECR (**kfp-example-sagemaker-execution-role**) などの AWS リソースにアクセスするために SageMaker AI ジョブが引き受ける SageMaker AI IAM 実行ロール。 Amazon S3 

  SageMaker ジョブは、以下の目的でこのロールを使用します。
  + SageMaker AI のリソースにアクセスする
  + Amazon S3 からデータを入力する
  + 出力モデルを Amazon S3 に保存する

  このロールには以下のアクセス許可が必要です。
  + AmazonSageMakerFullAccess 
  + AmazonS3FullAccess 

## SageMaker AI を使用するためのパイプライン変換
<a name="converting-pipelines-to-use-amazon-sagemaker"></a>

汎用的な Python [処理コンテナ](https://docs.aws.amazon.com/sagemaker/latest/dg/amazon-sagemaker-containers.html)と[トレーニングコンテナ](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html)を移植することで、既存のパイプラインを SageMaker AI を使用するように変換できます。推論に SageMaker AI を使用している場合は、クラスターに IAM アクセス許可をアタッチして、アーティファクトをモデルに変換する必要もあります。