CreateTrainingJob API に送信する引数は、Launch キュー設定で制御します。
Amazon SageMaker は Docker イメージを使用してトレーニング ジョブを実行します。SageMaker がプルするイメージは Amazon Elastic Container Registry (ECR) に保存する必要があるため、トレーニングに使用するイメージも ECR に保存してください。
このガイドでは、SageMaker Training ジョブの実行方法を説明します。Amazon SageMaker で推論用にモデルをデプロイする方法については、こちらの Launch job の例を参照してください。
前提条件
作業を始める前に、以下の前提条件を満たしておく必要があります。- Launch エージェントに Docker イメージをビルドさせるかどうかを決めます。
- AWS リソースをセットアップし、S3、ECR、SageMaker の IAM ロールに関する情報を収集します。
- Launch エージェント用の IAM ロールを作成します。
Launch エージェントに Docker イメージをビルドさせるかどうかを決める
W&B Launch エージェントに Docker イメージをビルドさせるかどうかを決めます。次の 2 つのオプションから選択できます。- Launch エージェントに、Docker イメージのビルド、Amazon ECR へのイメージのプッシュ、SageMaker Training ジョブの送信を任せます。トレーニングコードを短いサイクルで反復改善する ML エンジニアにとっては、このオプションで作業を簡素化できます。
- トレーニングスクリプトまたは推論スクリプトを含む既存の Docker イメージを使用します。このオプションは既存の CI システムと組み合わせやすい方法です。このオプションを選択する場合は、Amazon ECR 上のコンテナーレジストリに Docker イメージを手動でアップロードする必要があります。
AWS リソースをセットアップする
使用する AWS リージョンで、次の AWS リソースを設定しておく必要があります。- コンテナーイメージを保存するための ECR リポジトリ
- SageMaker Training ジョブの入力と出力を保存するための S3 バケット (1 つ以上)
- SageMaker によるトレーニング ジョブの実行と、Amazon ECR および Amazon S3 へのアクセスを許可する Amazon SageMaker 用の IAM ロール
Launch エージェント用の IAM ポリシーを作成する
Launch エージェントには、SageMaker のトレーニング ジョブを送信するための権限と、必要に応じて ECR にイメージをプッシュするための権限を付与する IAM ポリシーが必要です。次の手順に従ってポリシーを作成します。- AWS の IAM 画面で、新しいポリシーを作成します。
- JSON ポリシーエディターに切り替え、ユースケースに応じて次のいずれかのポリシーを貼り付けます。
[BRACKETS]内のプレースホルダーは、実際の値に置き換えてください。
- エージェントがビルド済みの Docker イメージを送信する場合
- エージェントが Docker イメージをビルドして送信する場合
- Next をクリックします。
- ポリシーの名前と説明を入力します。
- Create policy をクリックします。
Launch エージェント用の IAM ロールを作成する
Launch エージェントには、Amazon SageMaker のトレーニング ジョブを作成する権限が必要です。前のセクションで作成したポリシーを専用のロールにアタッチしておくと、エージェントは実行時にそのロールを引き受けて、これらの権限を利用できます。次の手順に従って IAM ロールを作成します。- AWS の IAM 画面で、新しいロールを作成します。
- Trusted Entity で AWS Account (または組織のポリシーに合った別のオプション) を選択します。
- 権限の画面をスクロールし、前のセクションで作成したポリシー名を選択します。
- ロールの名前と説明を入力します。
- Create role を選択します。
- ロールの ARN を控えておきます。この ARN は Launch エージェントを設定する際に指定します。
- Launch エージェントでイメージをビルドする場合に必要な追加の権限については、エージェントの高度な設定を参照してください。
- SageMaker キューに対する
kms:CreateGrant権限が必要になるのは、関連付けられたResourceConfigでVolumeKmsKeyIdが指定されており、かつ関連付けられたロールにこのアクションを許可するポリシーがない場合のみです。
SageMaker 用の Launch キューを設定する
AWS の前提条件が整ったら、ジョブを SageMaker にルーティングする W&B Launch キューを作成できます。W&B アプリで、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: リソース設定 (必須) 。リソース設定のオプションについては、AWSResourceConfigドキュメントを参照してください。StoppingCondition: トレーニング ジョブの停止条件 (必須) 。オプションについては、AWSStoppingConditionドキュメントを参照してください。
- Create Queue をクリックします。
Launch エージェントを設定する
以下のセクションでは、エージェントのデプロイ先と、デプロイ先に応じたエージェントの設定方法について説明します。 Amazon SageMaker キュー用の Launch エージェントは、ローカルマシン、EC2 インスタンス、EKS クラスターなど、複数の場所にデプロイできます。エージェントのデプロイ先に応じて、Launch エージェントを設定してください。Launch エージェントの実行場所を決める
本番ワークロードの場合や、すでに EKS クラスターをお持ちのお客様の場合、W&B では、この Helm チャートを使用して Launch エージェントを EKS クラスターにデプロイすることをお勧めします。 本番ワークロードで EKS クラスターをお持ちでない場合は、EC2 インスタンスが適しています。Launch エージェントのインスタンスは常時稼働しますが、エージェントにはt2.micro サイズ程度の EC2 インスタンスがあれば十分なため、低コストで運用できます。
実験的な用途や個人での利用の場合は、ローカルマシンで Launch エージェントを実行すると手早く始められます。
ユースケースに応じて、以下のタブの手順に従って Launch エージェントを設定してください。
- EKS
- EC2
- ローカルマシン
W&B では、W&B が管理する Helm チャートを使用して EKS クラスターにエージェントをインストールすることをお勧めします。
Launch エージェントを設定する
エージェントを実行する場所を決めたら、SageMaker キューをポーリングし、AWS で認証できるようにエージェントを設定します。Launch エージェントの設定には、launch-config.yaml という名前の YAML 設定ファイルを使用します。
デフォルトでは、W&B は ~/.config/wandb/launch-config.yaml にある設定ファイルを参照します。Launch エージェントを有効化する際に -c フラグを使用すると、別のディレクトリを指定することもできます。
次の YAML スニペットは、エージェントの主要な設定オプションを指定する方法を示しています。
launch-config.yaml
wandb launch-agent でエージェントを起動します。
これで Launch エージェントが実行され、SageMaker キューにジョブがないかポーリングするようになります。
オプション: Launch job の Docker イメージを Amazon ECR にプッシュする
このセクションは、トレーニングまたは推論のロジックを含む既存の Docker イメージを Launch エージェントが使用する場合にのみ該当します。Launch エージェントでは、2 つの動作オプションがサポートされています。