CreateTrainingJob API に送信される引数を制御します。
Amazon SageMaker は、トレーニングジョブの実行に Docker イメージを使用します。SageMaker によってプルされるイメージは、Amazon Elastic Container Registry (ECR) に保存されている必要があります。つまり、トレーニングに使用するイメージは ECR 上に保存されている必要があります。
このガイドでは、SageMaker Training ジョブの実行方法を説明します。Amazon SageMaker で推論用に Models をデプロイする方法については、こちらの Launch ジョブの例 を参照してください。
事前準備
開始する前に、以下の前提条件を満たしていることを確認してください。- Launch エージェントに Docker イメージをビルドさせるかどうかを決定する。
- AWS リソースをセットアップし、S3、ECR、および SageMaker IAM ロールに関する情報を収集する。
- Launch エージェント用の IAM ロールを作成する。
Launch エージェントに Docker イメージをビルドさせるかどうかを決定する
W&B Launch エージェントに Docker イメージをビルドさせるかどうかを決定します。以下の2つのオプションから選択できます。- Launch エージェントに Docker イメージのビルド、Amazon ECR へのイメージのプッシュ、および SageMaker Training ジョブの送信を許可します。このオプションは、トレーニングコードを迅速に反復する ML エンジニアにとって簡便な方法です。
- Launch エージェントは、トレーニングまたは推論スクリプトを含む既存の Docker イメージを使用します。このオプションは、既存の CI システムと連携する場合に適しています。このオプションを選択した場合は、Docker イメージを Amazon ECR のコンテナレジストリに手動でアップロードする必要があります。
AWS リソースのセットアップ
希望する AWS リージョンで、以下の AWS リソースが設定されていることを確認してください。- コンテナイメージを保存するための ECR リポジトリ。
- SageMaker Training ジョブの入力と出力を保存するための1つ以上の S3 バケット。
- SageMaker がトレーニングジョブを実行し、Amazon ECR および Amazon S3 とやり取りすることを許可する Amazon SageMaker 用の IAM ロール。
Launch エージェント用の IAM ポリシーを作成する
- AWS の IAM 画面から、新しいポリシーを作成します。
- JSON ポリシーエディターに切り替え、ユースケースに基づいて以下のポリシーを貼り付けます。
<>で囲まれた値は、自身の値に置き換えてください。
- エージェントがビルド済みの Docker イメージを送信する場合
- エージェントが Docker イメージをビルドして送信する場合
- Next をクリックします。
- ポリシーに名前と説明を付けます。
- Create policy をクリックします。
Launch エージェント用の IAM ロールを作成する
Launch エージェントには、Amazon SageMaker トレーニングジョブを作成する権限が必要です。以下の手順に従って IAM ロールを作成してください。- AWS の IAM 画面から、新しいロールを作成します。
- Trusted Entity(信頼されたエンティティ)で、AWS Account(または組織のポリシーに適した別のオプション)を選択します。
- 権限画面をスクロールし、上記で作成したポリシー名を選択します。
- ロールに名前と説明を付けます。
- Create role を選択します。
- ロールの ARN をメモします。Launch エージェントをセットアップする際に、この ARN を指定します。
- Launch エージェントにイメージをビルドさせたい場合は、必要な追加権限について 高度なエージェントセットアップ を参照してください。
- SageMaker キューの
kms:CreateGrant権限は、関連する ResourceConfig に VolumeKmsKeyId が指定されており、かつ関連するロールにこのアクションを許可するポリシーがない場合にのみ必要です。
SageMaker 用の Launch キューの設定
次に、W&B App で SageMaker をコンピューティングリソースとして使用するキューを作成します。- Launch App に移動します。
- Create Queue ボタンをクリックします。
- キューを作成する Entity を選択します。
- Name フィールドにキューの名前を入力します。
- Resource として SageMaker を選択します。
- Configuration フィールドに、SageMaker ジョブに関する情報を入力します。デフォルトでは、W&B が YAML および JSON の
CreateTrainingJobリクエストボディを生成します。
RoleArn: SageMaker 実行用 IAM ロールの ARN(事前準備 を参照)。Launch エージェント 用の IAM ロールと混同しないでください。OutputDataConfig.S3OutputPath: SageMaker の出力が保存される Amazon S3 URI。ResourceConfig: リソース設定の指定が必要です。オプションの詳細は こちら で概説されています。StoppingCondition: トレーニングジョブの停止条件の指定が必要です。オプションは こちら で概説されています。
- Create Queue ボタンをクリックします。
Launch エージェントのセットアップ
このセクションでは、エージェントをデプロイできる場所と、デプロイ先に基づいたエージェントの設定方法について説明します。 Amazon SageMaker キュー用の Launch エージェントの デプロイ方法にはいくつかのオプションがあります。ローカルマシン、EC2 インスタンス、または EKS クラスターです。デプロイ先に基づいて、Launch エージェントを適切に設定 してください。Launch エージェントの実行場所を決定する
本番環境のワークロードや、すでに EKS クラスターをお持ちのお客様には、Helm チャートを使用して Launch エージェントを EKS クラスターにデプロイすることをお勧めします。 既存の EKS クラスターがない本番環境のワークロードには、EC2 インスタンスが適したオプションです。Launch エージェントのインスタンスは常に稼働し続けますが、エージェントにはt2.micro サイズの EC2 インスタンス(比較的安価です)があれば十分です。
実験的または個人でのユースケースでは、ローカルマシンで Launch エージェントを実行するのが最も手軽な開始方法です。
ユースケースに合わせて、以下のタブに記載された手順に従い、Launch エージェントを適切に設定してください。
- EKS
- EC2
- ローカルマシン
W&B では、W&B 管理の helm チャート を使用して EKS クラスターにエージェントをインストールすることを強く推奨しています。
Launch エージェントの設定
launch-config.yaml という名前の YAML 設定ファイルを使用して Launch エージェントを設定します。
デフォルトでは、W&B は ~/.config/wandb/launch-config.yaml にある設定ファイルをチェックします。Launch エージェントを起動する際に -c フラグを使用して、別のディレクトリを任意で指定することもできます。
以下の YAML スニペットは、コアとなるエージェント設定オプションの指定方法を示しています。
launch-config.yaml
wandb launch-agent でエージェントを開始します。
(オプション) Launch ジョブの Docker イメージを Amazon ECR にプッシュする
このセクションは、Launch エージェントがトレーニングまたは推論ロジックを含む既存の Docker イメージを使用する場合にのみ適用されます。Launch エージェントの動作については 2 つのオプションがあります。