カスタム トレーニングにプライベート IP を使用する

プライベート IP を使用してトレーニング ジョブに接続すると、パブリック IP を使用する場合よりも、ネットワーク セキュリティが強化され、ネットワーク レイテンシが短縮されます。プライベート IP を使用するには、Virtual Private Cloud(VPC)を使用して Vertex AI カスタム トレーニング ジョブとネットワークをピアリングします。これにより、トレーニング コードから Google Cloud またはオンプレミス ネットワーク内のプライベート IP アドレスにアクセスできるようになります。

このガイドでは、ネットワークと Vertex AI CustomJobHyperparameterTuningJob、またはカスタム TrainingPipeline リソースをピアリングするように VPC ネットワーク ピアリングを設定した後に、ネットワークでカスタム トレーニングを実行する方法について説明します。

TPU VM も使用している場合は、カスタム トレーニングにプライベート IP アドレスを使用できません。

概要

プライベート IP を使用してカスタム トレーニング ジョブを送信する前に、プライベート サービス アクセスを構成し、ネットワークと Vertex AI の間のピアリング接続を確立する必要があります。すでに設定している場合は、既存のピアリング接続を使用できます。

このガイドでは、次のタスクについて説明します。

  • カスタム トレーニングに予約する IP 範囲を理解する。
  • ピアリング接続のステータスを確認する。
  • ネットワーク上で Vertex AI カスタム トレーニングを実行する。
  • 別のネットワークでトレーニングを行う前に、ネットワーク上でアクティブなトレーニングが行われているかどうか確認する。
  • トレーニング コードがネットワーク内のプライベート IP にアクセスできるかテストする。

カスタム トレーニング用の IP 範囲を予約する

サービス プロデューサーの IP 範囲を予約すると、その範囲は Vertex AI やその他のサービスで使用されます。次の表では、Vertex AI が範囲をほぼ独占的に使用していると仮定し、/16~19 の範囲で実行可能な並列トレーニング ジョブの最大数を示しています。同じ範囲を使用して他のサービス プロデューサーと接続する場合は、IP が不足しないように、より大きな範囲を割り当てます。

トレーニング ジョブのマシン構成 予約済み範囲 並列ジョブの最大数
最大 8 ノード。
例: 最初のワーカープールに 1 つのプライマリ レプリカ、2 番目のワーカープールに 6 つのレプリカ、3 番目のワーカープールに 1 つのワーカー(パラメータ サーバーとして機能)
/16 63
/17 31
/18 15
/19 7
最大 16 ノード。
例: 最初のワーカープールに 1 つのプライマリ レプリカ、2 番目のワーカープールに 14 つのレプリカ、3 番目のワーカープールに 1 つのワーカー(パラメータ サーバーとして機能)
/16 31
/17 15
/18 7
/19 3
最大 32 ノード。
例: 最初のワーカープールに 1 つのプライマリ レプリカ、2 番目のワーカープールに 30 つのレプリカ、3 番目のワーカープールに 1 つのワーカー(パラメータ サーバーとして機能)
/16 15
/17 7
/18 3
/19 1

詳しくは、分散トレーニング用のワーカープールの構成をご覧ください。

既存のピアリング接続のステータスを確認する

Vertex AI で使用しているピアリング接続がすでに存在する場合は、それらを一覧表示してステータスを確認できます。

gcloud compute networks peerings list --network NETWORK_NAME

ピアリング接続の状態が ACTIVE になっているはずです。詳しくは、アクティブなピアリング接続をご覧ください。

カスタム トレーニングを行う

カスタム トレーニングを行う場合は、Vertex AI でアクセスするネットワークの名前を指定する必要があります。

カスタム トレーニングの実行方法に応じて、次のいずれかの API フィールドでネットワークを指定します。

  • CustomJob を作成する場合は、CustomJob.jobSpec.network フィールドを指定します。

    Google Cloud CLI を使用している場合は、gcloud ai custom-jobs create コマンド--config フラグを使用して network フィールドを指定できます。

    詳細については、CustomJob の作成をご覧ください。

  • HyperparameterTuningJob を作成する場合は、HyperparameterTuningJob.trialJobSpec.network フィールドを指定します。

    gcloud CLI を使用している場合は、gcloud ai hpt-tuning-jobs create コマンド--config フラグを使用して、network フィールドを指定できます。

    詳細については、HyperparameterTuningJob の作成をご覧ください。

  • ハイパーパラメータ調整なしの TrainingPipeline を作成する場合は、TrainingPipeline.trainingTaskInputs.network フィールドを指定します。

    詳細については、カスタムの TrainingPipeline の作成をご覧ください。

  • ハイパーパラメータ調整を行う TrainingPipeline を作成する場合は、TrainingPipeline.trainingTaskInputs.trialJobSpec.network フィールドを指定します。

ネットワーク名を指定しない場合、Vertex AI は、プロジェクトのプライベート IP にアクセスせず、ピアリング接続なしでカスタム トレーニングを実行します。

例: gcloud CLI で CustomJob を作成する

次の例は、gcloud CLI を使用して、ビルド済みコンテナを使用する CustomJob を実行するときに、ネットワークを指定する方法を示しています。別の方法でカスタム トレーニングを実行する場合は、使用しているカスタム トレーニング ジョブのタイプの説明に従って network フィールドを追加します。

  1. config.yaml ファイルを作成してネットワークを指定します。共有 VPC を使用している場合は、VPC ホスト プロジェクト番号を使用します。

    ネットワーク名が正しくフォーマットされていることを確認します。

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    
    cat <<EOF > config.yaml
    network: projects/PROJECT_NUMBER/global/networks/NETWORK_NAME
    EOF
    
  2. Vertex AI で実行するトレーニング アプリケーションを作成します。

  3. CustomJob を作成し、config.yaml ファイルを渡します。

    gcloud ai custom-jobs create \
      --region=LOCATION \
      --display-name=JOB_NAME \
      --python-package-uris=PYTHON_PACKAGE_URIS \
      --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,executor-image-uri=PYTHON_PACKAGE_EXECUTOR_IMAGE_URI,python-module=PYTHON_MODULE \
      --config=config.yaml
    

このコマンドのプレースホルダを置き換える方法については、カスタム トレーニング ジョブの作成をご覧ください。

異なるネットワークでジョブを実行する

別のネットワークでカスタム トレーニングを実行している間、新しいネットワークでカスタム トレーニングを実行することはできません。別のネットワークに切り替える前に、送信された CustomJobHyperparameterTuningJob、カスタムの TrainingPipeline リソースが完了するのを待つか、リソースをキャンセルする必要があります。

トレーニング ジョブへのアクセスをテストする

このセクションでは、カスタム トレーニング リソースがネットワーク内のプライベート IP にアクセスできるかどうかテストする方法について説明します。

  1. VPC ネットワーク内に Compute Engine インスタンスを作成します。
  2. ファイアウォール ルールをチェックして、Vertex AI ネットワークからの上り(内向き)ルールが制限されていないことを確認します。制限されている場合、Vertex AI ネットワークで Vertex AI(と他のサービス プロデューサー)用に予約した IP 範囲にアクセスできるように、ルールを追加します。
  3. Vertex AI CustomJob がアクセスするエンドポイントを作成するために、VM インスタンスにローカル サーバーを設定します。
  4. Vertex AI で実行する Python トレーニング アプリケーションを作成します。モデルのトレーニング コードの代わりに、前の手順で設定したエンドポイントにアクセスするコードを作成します。
  5. 上記の例を使用して CustomJob を作成します

一般的な問題

このセクションでは、Vertex AI との VPC ネットワーク ピアリングの構成に関する一般的な問題について説明します。

  • ネットワークを使用するように Vertex AI を構成する場合は、完全なネットワーク名を指定します。

    "projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"

  • 別のネットワークでカスタム トレーニングを実行する前に、そのネットワークでカスタム トレーニングを実行していないことを確認してください。

  • ネットワークが接続するすべてのサービス プロデューサー(Vertex AI を含む)に対して十分な IP 範囲が割り当てられていることを確認します。

その他のトラブルシューティング情報については、VPC ネットワーク ピアリングのトラブルシューティング ガイドをご覧ください。

次のステップ