

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

# SageMaker AI Operators for Kubernetes
<a name="kubernetes-sagemaker-operators"></a>

SageMaker AI Operators for Kubernetes を使用すると、Kubernetes を使用するデベロッパーやデータサイエンティストは、SageMaker AI で機械学習 (ML) モデルをより簡単にトレーニング、チューニング、デプロイできるようになります。これらの SageMaker AI Operators を Amazon Elastic Kubernetes Service (Amazon EKS) の Kubernetes クラスターにインストールして、Kubernetes API や `kubectl` などのコマンドライン Kubernetes ツールを使用して SageMaker AI ジョブをネイティブに作成できます。このガイドでは、Kubernetes クラスターから SageMaker AI でモデルトレーニング、ハイパーパラメータチューニング、または推論 (リアルタイムおよびバッチ) を実行するために演算子を設定して使用する方法を説明します。この章で取り上げる手順とガイドラインは、ユーザーが Kubernetes とその基本的なコマンドに精通していることを前提としています。

**重要**  
[SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) のオリジナルバージョンの開発とテクニカルサポートを中止します。  
現在 [SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) のバージョン `v1.2.2` 以下を使用している場合は、リソースを [Amazon SageMaker 用 ACK サービスコントローラー](https://github.com/aws-controllers-k8s/sagemaker-controller)に移行することをお勧めします。ACK サービスコントローラーは、[AWS Controllers for Kubernetes (ACK)](https://aws-controllers-k8s.github.io/community/) をベースにした新世代の SageMaker Operators for Kubernetes です。  
移行ステップについては、「[リソースを最新のオペレータに移行する](kubernetes-sagemaker-operators-migrate.md)」を参照してください。  
元のバージョンの SageMaker Operators for Kubernetes のサポート終了に関するよくある質問への回答については、「[SageMaker AI Operators for Kubernetes のオリジナル バージョンのサポート終了についてのお知らせ](kubernetes-sagemaker-operators-eos-announcement.md)」を参照してください。

**注記**  
これらのオペレーターの使用に Amazon SageMaker Studio を使用してモデルバージョンを比較します。追加料金はかかりません。これらの演算子を介して SageMaker AI リソースを使用する場合は、料金が発生します。

## オペレーターとは
<a name="kubernetes-sagemaker-operators-overview"></a>

Kubernetes オペレータは、Kubernetes ユーザに代わってアプリケーションを管理するアプリケーションコントローラーです。コントロールプレーンのコントローラーには、中央ステートマネージャー (ETCD) をリッスンして、制御するアプリケーションの状態を管理するさまざまな制御ループが含まれます。このようなアプリケーションの例には、[Cloud-controller-manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/) や `[kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)` があります。オペレーターは通常、未加工の Kubernetes API よりも上位レベルの抽象化を提供するため、ユーザーはアプリケーションをデプロイして管理しやすくなります。Kubernetes に新しい機能を追加するには、デベロッパーがアプリケーション固有またはドメイン固有のロジックとコンポーネントを含む**カスタムリソース**を作成して Kubernetes API を拡張します。Kubernetes のオペレーターを使用すると、ユーザーはこれらのカスタムリソースをネイティブに呼び出して、関連するワークフローを自動化できます。

### AWS Controllers for Kubernetes (ACK) の仕組み
<a name="kubernetes-sagemaker-operators-explained"></a>

SageMaker AI Operators for Kubernetes を使用すると、Kubernetes クラスターから SageMaker AI のジョブを管理できます。SageMaker AI Operators for Kubernetes の最新バージョンは AWS Controllers for Kubernetes (ACK) に基づいています。ACK には、一般的なコントローラーランタイム、コードジェネレーター、および一連の AWS サービス固有のコントローラーが含まれており、そのうちの 1 つは SageMaker AI コントローラーです。

次の図は、ACK の仕組みを示しています。

![\[ACK ベースの SageMaker AI Operator for Kubernetes について説明しています。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-ack-controller.png)


この図では、Kubernetes ユーザーは、Kubernetes API を使用して Kubernetes クラスター内から SageMaker AI でモデルトレーニングを実行したい。ユーザーは `kubectl apply` への呼び出しを発行し、SageMaker トレーニングジョブを説明する Kubernetes カスタムリソースを記述するファイルを渡します。`kubectl apply` は、マニフェストと呼ばれるこのファイルを、Kubernetes コントローラーノードで実行されている Kubernetes API サーバーに渡します (ワークフロー図のステップ 1)。**Kubernetes API サーバーは、SageMaker トレーニングジョブの仕様が記載されたマニフェストを受け取り、ユーザーが `sageMaker.services.k8s.aws/TrainingJob` の種類のカスタムリソースを作成するアクセス許可を持っているかどうか、またカスタムリソースが適切にフォーマットされているかどうかを判断します (ステップ 2)。**ユーザーが承認され、カスタムリソースが有効な場合、Kubernetes API サーバーはカスタムリソースを etcd データストアに書き込み (ステップ 3)、カスタムリソースが作成されたことをユーザーに応答します (ステップ 4)。****通常の Kubernetes ポッドのコンテキスト内の Kubernetes ワーカーノード上で実行されている SageMaker AI コントローラーに、`sageMaker.services.k8s.aws/TrainingJob` の種類の新しいカスタムリソースが作成されたことが通知されます (ステップ *5*)。次に、SageMaker AI コントローラーは SageMaker API と通信し (ステップ *6*)、SageMaker AI `CreateTrainingJob` API を呼び出して AWSでトレーニングジョブを作成します。SageMaker API と通信した後、SageMaker AI コントローラーは Kubernetes API サーバーを呼び出し、SageMaker AI から受け取った情報でカスタムリソースのステータスを更新します (ステップ *7*)。したがって、SageMaker AI コントローラーは、 AWS SDK を使用して受け取ったのと同じ情報を開発者に提供します。

### アクセス許可の概要
<a name="kubernetes-sagemaker-operators-authentication"></a>

演算子は、ユーザーに代わって SageMaker AI リソースにアクセスします。オペレーターが AWS リソースを操作するために引き受ける IAM ロールは、Kubernetes クラスターへのアクセスに使用する認証情報とは異なります。このロールは、機械学習ジョブの実行時に が AWS 引き受けるロールとも異なります。

以下の画像は、さまざまな認証レイヤーについて説明しています。

![\[SageMaker AI Operator for Kubernetes のさまざまな認証レイヤー\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-authentication.png)
