カスタム トレーニング ジョブを作成する

カスタム トレーニング ジョブ(Vertex AI API の CustomJob リソース)は、Vertex AI でカスタム機械学習(ML)トレーニング コードを実行するための基本的な方法です。

ジョブを送信する前に

Vertex AI で CustomJob を作成する前に、Python トレーニング アプリケーションまたはカスタム コンテナ イメージを作成して、Vertex AI で実行するトレーニング コードと依存関係を定義する必要があります。

このガイドの後半で説明する Google Cloud CLI の自動パッケージ化機能を使用することをおすすめします。この機能を使用すると、1 つのコマンドでローカルマシン上のコードから Docker コンテナ イメージを作成して Container Registry に push し、CustomJob を作成できます。

この機能を使用しない場合は、Python トレーニング アプリケーションまたはカスタム コンテナ イメージを手動で作成する必要があります。

どちらを選択すべきか判断に迷う場合は、トレーニング コードの要件をご覧ください。

カスタムジョブの内容

カスタムジョブを作成する場合、Vertex AI がトレーニング コードを実行するために必要な設定を指定します。次のような設定になります。

ワーカープールでは次の設定を指定できます。

分散トレーニングを構成する

分散トレーニングに CustomJob を構成するには、複数のワーカープールを指定します。

このページのほとんどの例では、1 つのワーカープールを持つ単一レプリカ トレーニング ジョブを示しています。分散トレーニング用に変更するには:

  • 最初のワーカープールを使用してプライマリ レプリカを構成し、レプリカ数を 1 に設定します。
  • 機械学習フレームワークが分散トレーニング用のこれらの追加クラスタタスクをサポートしている場合は、ワーカープールを追加して、ワーカー レプリカ、パラメータ サーバー レプリカ、またはエバリュエータ レプリカを構成します。

分散トレーニングの使用方法の詳細をご覧ください。

CustomJob を作成する

CustomJob を作成するには、使用するツールのタブを選択して、手順を確認してください。gcloud CLI を使用する場合は、1 つのコマンドでローカルマシン上のトレーニング コードを Docker コンテナ イメージに自動的にパッケージ化し、そのコンテナ イメージを Container Registry に push して CustomJob を作成できます。他のオプションの場合は、Python トレーニング アプリケーションまたはカスタム コンテナ イメージをすでに作成していることが前提となります。

gcloud

次の例では、gcloud ai custom-jobs create コマンドを使用しています。

トレーニング コードがローカル コンピュータ上にある場合は、自動パッケージ化ありの手順を行うことをおすすめします。また、Python トレーニング アプリケーションまたはカスタム コンテナ イメージをすでに作成している場合は、自動パッケージ化なしに進んでください。

自動パッケージ化あり

ローカル コンピュータにトレーニング コードがある場合、単一のコマンドで次のことを行うことができます。

  • コードに基づいてカスタム Docker イメージをビルドします。
  • イメージを Container Registry に push します。
  • 画像に応じて CustomJob を開始します。

結果は、他のカスタム コンテナを使用した CustomJob を作成する場合と似ています。ワークフローに役立つ場合は、このバージョンのコマンドを使用できます。

始める前に

このバージョンのコマンドでは、Docker イメージをビルドして push するため、ローカル コンピュータで次の構成を行う必要があります。

  1. Docker Engine をインストールします。

  2. Linux を使用している場合は、sudo なしで実行できるように Docker を構成します。

  3. Container Registry API を有効にします。

    API を有効にする

  4. Docker イメージを Container Registry に push できるように Docker の認証を構成します

    gcloud auth configure-docker
    

Docker イメージをビルドして push し、CustomJob を作成する

次のコマンドは、ビルド済みのトレーニング コンテナ イメージとローカルの Python コードに基づいて Docker イメージをビルドし、Container Registry に push して CustomJob を作成します。

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,executor-image-uri=EXECUTOR_IMAGE_URI,local-package-path=WORKING_DIRECTORY,script=SCRIPT_PATH

次のように置き換えます。

  • LOCATION: コンテナまたは Python パッケージを実行するリージョン。

  • JOB_NAME: 必須。CustomJob の表示名。

  • MACHINE_TYPE: マシンのタイプ。トレーニングで使用可能なマシンタイプをご覧ください。

  • REPLICA_COUNT: 使用するワーカー レプリカの数。最初のワーカープールは、ほとんどの場合、1 に設定します。

  • EXECUTOR_IMAGE_URI: 指定されたコードを実行するコンテナ イメージの URI。トレーニングに使用可能なビルド済みのコンテナをご覧ください。

    このイメージは、このコマンドでビルドする新しい Docker イメージのベースイメージとして機能します。

  • WORKING_DIRECTORY: トレーニング コードを実行するエントリ ポイント スクリプトを含む、ローカル ファイル システム内のディレクトリ(次のリストを参照)。

    スクリプトの親ディレクトリを使用することも、上位レベルのディレクトリを使用することもできます。完全修飾された Python モジュール名を指定するには、上位のディレクトリを使用することをおすすめします(次のリストを参照)。requirements.txt または setup.py ファイルが含まれている場合は、上位のディレクトリを使用することもできます。詳細については、依存関係をインストールするをご覧ください。

    ただし、上位のディレクトリを指定した場合でも、このコマンドはエントリ ポイント スクリプトの親ディレクトリを Docker イメージにコピーします。

  • SCRIPT_PATH: ローカル ファイル システム上の WORKING_DIRECTORY の相対パス。トレーニング コードのエントリ ポイントとなるスクリプトへの相対パスになります。これは、Python スクリプト(.py で終わるもの)または Bash スクリプトです。

    たとえば、/hello-world/trainer/task.py を実行し、WORKING_DIRECTORY