カスタム トレーニングを使用してモデルをトレーニングする場合は、Vertex AI TensorBoard のログを Vertex AI TensorBoard に自動的にアップロードするようにトレーニング ジョブを設定できます。
Vertex AI TensorBoard では、Cloud Storage に Vertex AI TensorBoard ログが書き込まれる際にそれをストリーミングするため、この統合を使用することで、ほぼリアルタイムにトレーニングをモニタリングできます。
初期設定については、Vertex AI TensorBoard を設定するをご覧ください。
トレーニング スクリプトの変更点
トレーニング スクリプトは、TensorBoard ログを Cloud Storage バケットに書き込むように構成する必要があります。Cloud Strage バケットの場所は、Vertex AI Training サービスにより事前定義の環境変数 AIP_TENSORBOARD_LOG_DIR
で自動的に利用可能にされます。
通常これは、オープンソースの TensorBoard ログ書き込み API に、ログ ディレクトリとして os.environ['AIP_TENSORBOARD_LOG_DIR']
を指定することで実現できます。AIP_TENSORBOARD_LOG_DIR
の場所は、staging_bucket
変数で設定します。
TensorFlow 2.x でトレーニング スクリプトを構成するには、TensorBoard コールバックを作成して、log_dir
変数を os.environ['AIP_TENSORBOARD_LOG_DIR']
に設定します。これにより、TensorBoard コールバックが、TensorFlow model.fit
コールバックのリストに含まれます。
tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir=os.environ['AIP_TENSORBOARD_LOG_DIR'], histogram_freq=1 ) model.fit( x=x_train, y=y_train, epochs=epochs, validation_data=(x_test, y_test), callbacks=[tensorboard_callback], )
詳しくは、Vertex AI がカスタム トレーニング環境で環境変数を設定する方法をご覧ください。
カスタム トレーニング ジョブを作成する
次の例は、独自のカスタム トレーニング ジョブを作成する方法を示しています。
カスタム トレーニング ジョブを作成する方法のサンプルについては、Hello カスタム トレーニングをご覧ください。カスタム トレーニング コンテナを構築する手順については、トレーニング用のカスタム コンテナ イメージの作成をご覧ください。
カスタム トレーニング ジョブを作成するには、Vertex AI SDK for Python または REST を使用します。
Python
Python
project
: 実際のプロジェクト ID。これらの ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
location
: CustomJob を実行するロケーション。指定した TensorBoard インスタンスと同じロケーションにする必要があります。staging_bucket
: API 呼び出し中にアーティファクトをステージングするための Cloud Storage バケット(TensorBoard ログなど)。display_name
: カスタム トレーニング ジョブの表示名。script_path
: ローカル ファイル システム上のワーキング ディレクトリから、トレーニング コードのエントリ ポイントとなるスクリプトへの相対パス。container_uri
: トレーニング コンテナ イメージの URI は、Vertex AI のビルド済みトレーニング コンテナ、またはカスタム コンテナです。model_serving_container_image_uri
: トレーニング スクリプトによって生成されたモデルを提供するのに適したモデル サービング コンテナの URI。dataset_id
: トレーニングに使用するデータセットの ID 番号。model_display_name
: トレーニング済みモデルの表示名。args
: Python スクリプトに渡すコマンドライン引数。replica_count
: 使用するワーカー レプリカの数。ほとんどの場合、最初のワーカープールでは 1 に設定します。machine_type
: 使用する VM のタイプ。サポートされている VM の一覧については、マシンタイプをご覧ください。accelerator_type
:(省略可)リソースプール内の各 VM にアタッチする GPU のタイプ。サポートされている GPU の一覧については、GPU をご覧ください。accelerator_count
:(省略可)リソースプール内の各 VM にアタッチする GPU の数。デフォルト値は1
です。training_fraction_split
: モデルのトレーニングに使用するデータセットの割合。validation_fraction_split
: モデルの検証に使用するデータセットの割合。test_fraction_split
: モデルの評価に使用するデータセットの割合。sync
: このメソッドを同期的に実行するかどうか。tensorboard_resource_name
: CustomJob が TensorBoard ログをアップロードする先の Vertex TensorBoard インスタンスのリソース名。service_account
: TensorBoard で実行する場合は必須です。必要な権限を持つサービス アカウントを作成するをご覧ください。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID:
CustomJob
を実行するロケーション(us-central1 など)。指定した TensorBoard インスタンスと同じロケーションにする必要があります。 - PROJECT_ID: 実際のプロジェクト ID。
- TENSORBOARD_INSTANCE_NAME:(必須)Vertex AI TensorBoard のログを保存する既存の Vertex AI TensorBoard インスタンスのフルネーム。
projects/
PROJECT_ID
/locations/LOCATION_ID
/tensorboards/TENSORBOARD_INSTANCE_ID
注: これが既存の TensorBoard インスタンスでない場合、customJobs を作成すると 404 がスローされます。 - GCS_BUCKET_NAME:「${PROJECT_ID}-tensorboard-logs-${LOCATION}」
- USER_SA_EMAIL:(必須)前の手順で作成したサービス アカウント、または独自のサービス アカウント。「USER_SA_NAME@${PROJECT_ID}.iam.gserviceaccount.com」
- TRAINING_CONTAINER: TRAINING_CONTAINER。
- INVOCATION_TIMESTAMP:「$(date +'%Y%m%d-%H%M%S')」
- JOB_NAME:「tensorboard-example-job-${INVOCATION_TIMESTAMP}」
- BASE_OUTPUT_DIR:(必須)トレーニングのすべての出力が書き込まれる Google Cloud パス。「gs://$GCS_BUCKET_NAME/$JOB_NAME」
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/customJobs
リクエストの本文(JSON):
{ "displayName": JOB_NAME, "jobSpec":{ "workerPoolSpecs":[ { "replicaCount": "1", "machineSpec": { "machineType": "n1-standard-8", }, "containerSpec": { "imageUri": TRAINING_CONTAINER, } } ], "base_output_directory": { "output_uri_prefix": BASE_OUTPUT_DIR, }, "serviceAccount": USER_SA_EMAIL, "tensorboard": TENSORBOARD_INSTANCE_NAME, } }
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/customJobs/CUSTOM_JOB_ID", "displayName": "DISPLAY_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-8" }, "replicaCount": "1", "diskSpec": { "bootDiskType": "pd-ssd", "bootDiskSizeGb": 100 }, "containerSpec": { "imageUri": "IMAGE_URI" } } ], "serviceAccount": "SERVICE_ACCOUNT", "baseOutputDirectory": { "outputUriPrefix": "OUTPUT_URI_PREFIX" }, "tensorboard": "projects//locations/LOCATION_ID/tensorboards/tensorboard-id" }, "state": "JOB_STATE_PENDING", "createTime": "CREATE-TIME", "updateTime": "UPDATE-TIME" }
次のステップ
- Vertex AI TensorBoard を表示するを確認する。
- Cloud Profiler を使用して、カスタム トレーニング ジョブのパフォーマンスを最適化する方法を確認する。