SageMaker HyperPod EKS クラスターで Amazon EBS CSI ドライバーを使用する - Amazon SageMaker AI

SageMaker HyperPod EKS クラスターで Amazon EBS CSI ドライバーを使用する

SageMaker HyperPod は、Amazon Elastic Block Store (Amazon EBS) Container Storage Interface (CSI) ドライバーをサポートしています。このドライバーは、作成した Kubernetes ボリュームのストレージとして Amazon EBS ボリュームのライフサイクルを管理します。Amazon EBS CSI ドライバーを使用すると、Amazon EKS オーケストレーションを使用して SageMaker HyperPod クラスターで実行される機械学習ワークロード用の Amazon EBS ボリュームを作成、アタッチ、管理できます。

キーストレージ機能

SageMaker HyperPod の Amazon EBS CSI ドライバーは、次のストレージ機能をサポートしています。

  • 静的プロビジョニング: ポッドで使用できるように、事前に作成された Amazon EBS ボリュームを Kubernetes の永続ボリュームに関連付けます。

  • 動的プロビジョニング: PersistentVolumeClaims から Amazon EBS ボリュームと関連する永続ボリュームを自動的に作成します。パラメータは、ボリューム作成をきめ細かく制御するために StorageClass を介して渡すことができます。

  • ボリュームのサイズ変更: 実行中のワークロードを中断することなく PersistentVolumeClaims のサイズ仕様を更新することで、既存のボリュームを拡張します。これは、増大するモデルリポジトリを処理したり、サービスを中断することなくより大規模なノードに適応したりするために不可欠です。

  • ボリュームスナップショット: バックアップ、リカバリ、データバージョニング用のボリュームのポイントインタイムスナップショットを作成します。

  • ブロックボリューム: ストレージへの直接アクセスを必要とする高パフォーマンスアプリケーションに、raw ブロックデバイスアクセスを提供します。

  • ボリュームの変更: ボリューム属性クラスを使用して、タイプ、1 秒あたりの入出力操作数 (IOPS)、スループットなどのボリュームプロパティを変更します。

Amazon EBS CSI ドライバーの詳細については、「Amazon EKS ユーザーガイド」の「Amazon EBS で Kubernetes ボリュームストレージを使用する」を参照してください。

クラスター内のポッドへのストレージの詳細については、「Kubernetes ドキュメント」の「ストレージ」を参照してください。

ユースケース

Amazon EBS CSI ドライバー統合により、SageMaker HyperPod EKS クラスターでのトレーニングワークロードと推論ワークロードの両方で、いくつかの主要なユースケースが可能になります。

トレーニングワークロード

  • データセットストレージ: ポッドの再起動後も保持されるトレーニングデータセットのボリュームをプロビジョンする。

  • チェックポイントストレージ: モデルのチェックポイントと中間トレーニング結果を保存する。

  • 共有アーティファクト: 複数のトレーニングジョブで共通のデータセットとモデルアーティファクトにアクセスする。

推論ワークロード

  • モデルストレージ: モデルの要件に基づいて適切なサイズのボリュームを動的にプロビジョンする。

  • コンテナキャッシュ: 推論パフォーマンスを向上させるエフェメラルストレージを作成する。

  • イベントログ: 推論結果とログを永続的ストレージに保存する。

SageMaker HyperPod EKS クラスターで Amazon EBS CSI ドライバーを設定する

Amazon Elastic Block Store (Amazon EBS) Container Storage Interface (CSI) ドライバーを使用すると、EKS オーケストレーションを備えた SageMaker HyperPod クラスターで実行されているコンテナ化されたワークロードの Amazon EBS ボリュームを動的にプロビジョンして管理できます。このセクションでは、Amazon EBS CSI ドライバーをインストールして設定し、機械学習ワークロードの永続的ストレージを有効にする方法について説明します。

前提条件

開始する前に、以下を実行します。

追加のアクセス許可

Amazon EBS CSI ドライバーアドオンを設定するには、「Amazon EKS ユーザーガイド」の「Amazon EBS で Kubernetes ボリュームストレージを使用する」の手順に従ってください。ドライバーアドオンの実行に使用される IAM ロールに次のアクセス許可を追加する必要もあります。これは、HyperPod クラスター実行ロールではなく、ドライバーアドオンのサービスアカウント設定で指定された IAM ロールであることに注意が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:AttachClusterNodeVolume", "sagemaker:DetachClusterNodeVolume" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*" }, { "Effect": "Allow", "Action": [ "eks:DescribeCluster" ], "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster-name" } ] }

API の使用

別の方法として、AttachClusterNodeVolume API オペレーションと DetachClusterNodeVolume API オペレーションを使用して、Amazon EBS ボリュームを SageMaker HyperPod EKS クラスターインスタンスにアタッチしてデタッチできます。

これらの API を使用するための主な要件は、次のとおりです。

  • Amazon EBS ボリュームと SageMaker HyperPod EKS クラスターの両方が同じ AWS アカウントによって所有されている必要があります。

  • 呼び出し元プリンシパルには、アタッチまたはデタッチのオペレーションを正常に実行するための特定の最小アクセス許可が必要です。最小権限のアクセス許可の詳細については、以降のトピックを参照してください。

  • HyperPod ノードにボリュームをアタッチしたら、「SageMaker HyperPod クラスターノードへのアクセス」の手順に従ってクラスターノードにアクセスし、アタッチされたボリュームをマウントするためにボリュームを使用できるようにします

sagemaker:AttachClusterNodeVolumeに必要なアクセス許可

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:AttachClusterNodeVolume" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*" }, { "Effect": "Allow", "Action": [ "eks:DescribeCluster" ], "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster-name" }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DescribeVolume" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:volume/*" } ] }

sagemaker:DetachClusterNodeVolumeに必要なアクセス許可

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DetachClusterNodeVolume" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*" }, { "Effect": "Allow", "Action": [ "eks:DescribeCluster" ], "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster-name" }, { "Effect": "Allow", "Action": [ "ec2:DetachVolume", "ec2:DescribeVolume" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:volume/*" } ] }

AWS KMS キーに必要なアクセス許可

カスタマーマネージド KMS キーを使用して HyperPod クラスターノードにアタッチされた Amazon EBS ボリュームを暗号化している場合にのみ、次の AWS KMS アクセス許可を追加します。AWS マネージド KMS キー (デフォルトの暗号化オプション) を使用している場合、これらのアクセス許可は必要ありません。

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/caller-role" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/caller-role" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.region.amazonaws.com" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:ebs:id" }, "Bool": { "kms:GrantIsForAWSResource": true }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt" ] } } } ] }
注記

これらの AWS KMS アクセス許可は、カスタマーマネージド KMS キーで暗号化された Cluster Auto Volume Attachment (CAVA) ボリュームをデタッチ sagemaker:DetachClusterNodeVolume する場合には必要ありません。