Skip to main content
W&B Launch を使用して、提供されたアルゴリズムやカスタムアルゴリズムを使用して SageMaker プラットフォーム上で機械学習モデルをトレーニングするための ラーンンチ ジョブを Amazon SageMaker に送信できます。SageMaker はコンピュート リソースの立ち上げとリリースを担当するため、EKS クラスターを持たないチームには良い選択肢となります。 Amazon SageMaker に接続された W&B Launch キューに送信された ラーンンチ ジョブは、CreateTrainingJob API を使用して SageMaker トレーニング ジョブとして実行されます。 CreateTrainingJob API に送信される引数を制御するには、 ラーンンチ キュー設定 を使用します。 Amazon SageMaker は トレーニング ジョブを実行するために Docker イメージを使用しています。SageMaker によってプルされるイメージは、Amazon Elastic Container Registry (ECR) に保存する必要があります。 つまり、トレーニングに使用するイメージは ECR に保存する必要があります。
このガイドでは、SageMaker トレーニング ジョブを実行する方法を示しています。Amazon SageMaker での推論用にモデルを展開する方法については、この例の Launch ジョブ を参照してください。

前提条件

始める前に、以下の前提条件を確認してください:

Docker イメージを作成するかどうかを決定する

W&B Launch エージェントに Docker イメージを作成させるかどうかを決定します。選択肢は 2 つあります。
  • ローンンチ エージェントに Docker イメージの構築を許可し、Amazon ECR にイメージをプッシュし、SageMaker Training ジョブの送信を許可します。このオプションは、トレーニング コードを迅速に反復する ML エンジニアにいくらかの簡素化を提供できます。
  • ローンンチ エージェントが、トレーニングまたは推論スクリプトを含む既存の Docker イメージを使用します。このオプションは既存の CI システムに適しています。このオプションを選択する場合は、Amazon ECR のコンテナ レジストリに Docker イメージを手動でアップロードする必要があります。

AWS リソースを設定する

お好みの AWS リージョンで次の AWS リソースが設定されていることを確認してください :
  1. コンテナ イメージを保存するための ECR リポジトリ
  2. SageMaker トレーニング ジョブの入力と出力を保存するための 1 つまたは複数の S3 バケット
  3. Amazon SageMaker がトレーニング ジョブを実行し、Amazon ECR と Amazon S3 と対話することを許可する IAM ロール。
これらのリソースの ARN をメモしておいてください。SageMaker 用に Launch キュー設定 を定義するときに ARN が必要になります。

Launch エージェント用の IAM ポリシーを作成する

  1. AWS の IAM 画面から、新しいポリシーを作成します。
  2. JSON ポリシーエディターに切り替え、以下のポリシーをケースに基づいて貼り付けます。<> で囲まれた値を実際の値に置き換えてください:
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "logs:DescribeLogStreams",
          "SageMaker:AddTags",
          "SageMaker:CreateTrainingJob",
          "SageMaker:DescribeTrainingJob"
        ],
        "Resource": "arn:aws:sagemaker:<region>:<account-id>:*"
      },
      {
        "Effect": "Allow",
        "Action": "iam:PassRole",
        "Resource": "arn:aws:iam::<account-id>:role/<RoleArn-from-queue-config>"
      },
    {
        "Effect": "Allow",
        "Action": "kms:CreateGrant",
        "Resource": "<ARN-OF-KMS-KEY>",
        "Condition": {
          "StringEquals": {
            "kms:ViaService": "SageMaker.<region>.amazonaws.com",
            "kms:GrantIsForAWSResource": "true"
          }
        }
      }
    ]
  }
  1. 次へ をクリックします。
  2. ポリシーに名前と説明を付けます。
  3. ポリシー作成 をクリックします。

Launch エージェント用の IAM ロールを作成する

Launch エージェントには、Amazon SageMaker トレーニング ジョブを作成する権限が必要です。以下の手順に従って IAM ロールを作成します:
  1. AWS の IAM 画面から、新しいロールを作成します。
  2. 信頼されたエンティティ として AWS アカウント (または組織のポリシーに適したオプション) を選択します。
  3. 権限画面をスクロールし、上で作成したポリシー名を選択します。
  4. ロールに名前と説明を付けます。
  5. ロールの作成 を選択します。
  6. ロールの ARN を記録します。これを設定するときに Launch エージェント用に ARN を指定します。
IAM ロールの作成方法について詳しくは、AWS Identity and Access Management ドキュメント を参照してください。
  • エージェントがイメージを構築できるようにするには、高度なエージェントの設定で追加の権限が必要です。
  • SageMaker キューの kms:CreateGrant 権限は、関連する ResourceConfig に指定された VolumeKmsKeyId がある場合にのみ必要であり、関連するロールにこの操作を許可するポリシーがない場合に限ります。

SageMaker 用に Launch キューを設定する

次に、W&B アプリで SageMaker をコンピュート リソースとして使用するキューを作成します:
  1. Launch アプリ に移動します。
  2. キューを作成 ボタンをクリックします。
  3. キューを作成する エンティティ を選択します。
  4. 名前 フィールドにキューの名前を入力します。
  5. リソース として SageMaker を選択します。
  6. 設定 フィールド内で、SageMaker ジョブに関する情報を提供します。デフォルトでは、W&B は YAML および JSON の CreateTrainingJob リクエストボディを自動生成します:
    {
      "RoleArn": "<REQUIRED>",
      "ResourceConfig": {
          "InstanceType": "ml.m4.xlarge",
          "InstanceCount": 1,
          "VolumeSizeInGB": 2
      },
      "OutputDataConfig": {
          "S3OutputPath": "<REQUIRED>"
      },
      "StoppingCondition": {
          "MaxRuntimeInSeconds": 3600
      }
    }
    
少なくとも以下を指定する必要があります :
  • RoleArn : SageMaker 実行 IAM ロールの ARN (前提条件 を参照してください)。Launch agent IAM ロールとは混同しないでください。
  • OutputDataConfig.S3OutputPath : SageMaker の出力が保存される Amazon S3 URI を指定します。
  • ResourceConfig: リソース設定の必須仕様です。リソース設定のオプションはこちらに記載されています。
  • StoppingCondition: トレーニング ジョブの停止条件の必須仕様です。オプションはこちらに記載されています。
  1. キューを作成 ボタンをクリックします。

Launch エージェントをセットアップする

次のセクションでは、エージェントをデプロイする場所と、デプロイ場所に基づいてエージェントをどのように設定するかを説明します。 Amazon SageMaker キューに Launch エージェントをデプロイする方法にはいくつかのオプションがあります: ローカルマシン、EC2 インスタンス、または EKSクラスターで。エージェントをデプロイする場所に基づいてアプリケーション エージェントを適切に構成します

ローンンチ エージェントを実行する場所を決定する

プロダクション ワークロードおよび既に EKS クラスターを持つ顧客には、この Helm チャートを使用して EKS クラスターに ラーンンチ エージェント をデプロイすることをお勧めします。 現在の EKS クラスターがないプロダクション ワークロードには、EC2 インスタンスが適したオプションです。Launch エージェント インスタンスは常に稼働していますが、t2.micro サイズの EC2 インスタンスという比較的手頃なインスタンスで十分です。 実験的または個人のユースケースには、ローカルマシンに Launch エージェントを実行するのがすばやく始める方法です。 選択したユースケースに基づいて、以下のタブに記載されている指示に従って Launch エージェントを適切に設定してください:
W&B は、エージェントを EKS クラスターでインストールするために、W&B 管理 helm チャート の使用を強く推奨しています。

Launch エージェントを設定する

launch-config.yaml という名前の YAML 設定ファイルで Launch エージェントを設定します。 デフォルトでは、W&B は ~/.config/wandb/launch-config.yaml にある設定ファイルを確認します。エージェントをアクティブにする際に -c フラグで別のディレクトリを指定することも可能です。 以下の YAML スニペットは、コア設定エージェントオプションを指定する方法を示しています:
launch-config.yaml
max_jobs: -1
queues:
  - <queue-name>
environment:
  type: aws
  region: <your-region>
registry:
  type: ecr
  uri: <ecr-repo-arn>
builder: 
  type: docker
エージェントは wandb launch-agent で開始します。

(オプション) Docker イメージを Amazon ECR にプッシュする

このセクションは、トレーニングまたは推論ロジックを含む既存の Docker イメージをエージェントが使用する場合にのみ適用されます。Launch エージェントの動作には 2 つのオプションがあります。
Launch ジョブを含む Docker イメージを Amazon ECR レポジトリにアップロードします。画像ベースのジョブを使用している場合、Docker イメージは新しい Launch ジョブを送信する前に ECR レジストリに存在している必要があります。