Vertex AI TensorBoard にログをアップロードする

ローカルでのトレーニング、Vertex AI の外部でのトレーニング、同僚によって作成されたサンプルログ、または別の Vertex AI TensorBoard インスタンスを使用して作成された既存のログを Vertex AI TensorBoard インスタンスにアップロードできます。ログは、複数の Vertex AI TensorBoard インスタンス間で共有できます。

Vertex AI TensorBoard には、TensorBoard ログをアップロードするための Google Cloud CLI と Vertex AI SDK for Python が用意されています。Google Cloud に接続できる任意の環境からログをアップロードできます。

Vertex AI SDK for Python

継続的なモニタリング

継続的なモニタリングの場合は、トレーニングの開始時に aiplatform.start_upload_tb_log を呼び出します。アップロード用の新しいスレッドが開きます。このスレッドは、ディレクトリ内の新しいデータをモニタリングし、Vertex AI TensorBoard テストにアップロードします。トレーニングが完了したら、end_upload_tb_log を呼び出してアップローダー スレッドを終了します。

なお、start_upload_tb_log() を呼び出した後は、例外がスローされても、スレッドは存続します。スレッドを確実にシャットダウンさせるには、try ステートメントの start_upload_tb_log() の後および end_upload_tb_log() の前にコードを置き、finallyend_upload_tb_log() を呼び出します。

Python

from typing import Optional

from google.cloud import aiplatform


def upload_tensorboard_log_continuously_sample(
    tensorboard_experiment_name: str,
    logdir: str,
    tensorboard_id: str,
    project: str,
    location: str,
    experiment_display_name: Optional[str] = None,
    run_name_prefix: Optional[str] = None,
    description: Optional[str] = None,
) -> None:

    aiplatform.init(project=project, location=location)

    # Continuous monitoring
    aiplatform.start_upload_tb_log(
        tensorboard_id=tensorboard_id,
        tensorboard_experiment_name=tensorboard_experiment_name,
        logdir=logdir,
        experiment_display_name=experiment_display_name,
        run_name_prefix=run_name_prefix,
        description=description,
    )

    try:
        print("Insert your code here")
    finally:
        aiplatform.end_upload_tb_log()

  • tensorboard_experiment_name: アップロード先の TensorBoard テストの名前。
  • logdir: TensorBoard ログを確認するディレクトリの場所。
  • tensorboard_id: TensorBoard インスタンス ID。設定しない場合、aiplatform.inittensorboard_id が使用されます。
  • project: 実際のプロジェクト ID。プロジェクト ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: TensorBoard インスタンスが配置されているロケーション。
  • experiment_display_name: テストの表示名。
  • run_name_prefix: 存在する場合、この呼び出しによって作成されたすべての実行には、この値の先頭にそれらの名前が付けられます。
  • description: テストに割り当てる文字列の説明。

1 回限りのロギング

TensorBoard ログをアップロードする

TensorBoard ログの 1 回限りのアップロードを実行するには、aiplatform.upload_tb_log を呼び出します。logdir に既存のデータがアップロードされ、直ちに結果が返されます。

Python

from typing import Optional

from google.cloud import aiplatform


def upload_tensorboard_log_one_time_sample(
    tensorboard_experiment_name: str,
    logdir: str,
    tensorboard_id: str,
    project: str,
    location: str,
    experiment_display_name: Optional[str] = None,
    run_name_prefix: Optional[str] = None,
    description: Optional[str] = None,
    verbosity: Optional[int] = 1,
) -> None:

    aiplatform.init(project=project, location=location)

    # one time upload
    aiplatform.upload_tb_log(
        tensorboard_id=tensorboard_id,
        tensorboard_experiment_name=tensorboard_experiment_name,
        logdir=logdir,
        experiment_display_name=experiment_display_name,
        run_name_prefix=run_name_prefix,
        description=description,
    )

  • tensorboard_experiment_name: TensorBoard テストの名前。
  • logdir: TensorBoard ログを確認するディレクトリの場所。
  • tensorboard_id: TensorBoard インスタンス ID。設定しない場合、aiplatform.inittensorboard_id が使用されます。
  • project: 実際のプロジェクト ID。これらのプロジェクト ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: TensorBoard インスタンスが配置されているロケーション。
  • experiment_display_name: テストの表示名。
  • run_name_prefix: 存在する場合、この呼び出しによって作成されたすべての実行には、この値の先頭にそれらの名前が付けられます。
  • description: テストに割り当てる文字列の説明。
  • verbosity: 統計情報の詳細度のレベル(整数)。サポートされる値: 0 - アップロードの統計情報は出力されません。1 - データのアップロード中にアップロードの統計情報を出力します(デフォルト)。

プロファイルのログをアップロードする

aiplatform.upload_tb_log を呼び出して、TensorBoard プロファイル ログをテストにアップロードします。

Python

from typing import FrozenSet

from google.cloud import aiplatform


def upload_tensorboard_profile_logs_to_experiment_sample(
    experiment_name: str,
    logdir: str,
    project: str,
    location: str,
    run_name_prefix: str,
    allowed_plugins: FrozenSet[str] = ["profile"],
) -> None:

    aiplatform.init(project=project, location=location, experiment=experiment_name)

    # one time upload
    aiplatform.upload_tb_log(
        tensorboard_experiment_name=experiment_name,
        logdir=logdir,
        run_name_prefix=run_name_prefix,
        allowed_plugins=allowed_plugins,
    )

  • experiment_name: TensorBoard テストの名前。
  • logdir: TensorBoard ログを確認するディレクトリの場所。
  • project: 実際のプロジェクト ID。これらのプロジェクト ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: TensorBoard インスタンスが配置されているロケーション。
  • run_name_prefix: プロファイル データの場合、これは実行接頭辞です。LOG_DIR 内のディレクトリ形式は、以下の対象と一致している必要があります。
    • /RUN_NAME_PREFIX/plugins/profile/YYYY_MM_DD_HH_SS/
  • allowed_plugins: 許可する追加のプラグインのリスト。プロファイル データをアップロードする場合は、"profile" を含める必要があります。

gcloud CLI

  1. (省略可)専用の仮想環境を作成して、Vertex AI TensorBoard アップローダーの Python CLI をインストールします。
    python3 -m venv PATH/TO/VIRTUAL/ENVIRONMENT
    source PATH/TO/VIRTUAL/ENVIRONMENT/bin/activate
    • PATH/TO/VIRTUAL/ENVIRONMENT: 専用の仮想環境。
  2. Vertex AI SDK を使用して Vertex AI TensorBoard パッケージをインストールします。
    pip install -U pip
    pip install google-cloud-aiplatform[tensorboard]
  3. TensorBoard ログをアップロードする
    1. 時系列データと Blob データ
      tb-gcp-uploader --tensorboard_resource_name \
      TENSORBOARD_RESOURCE_NAME \
      --logdir=LOG_DIR \
      --experiment_name=TB_EXPERIMENT_NAME --one_shot=True
    2. プロファイル データ
      tb-gcp-uploader \
      --tensorboard_resource_name TENSORBOARD_RESOURCE_NAME \
      --logdir=LOG_DIR --experiment_name=TB_EXPERIMENT_NAME \
      --allowed_plugins="profile" --run_name_prefix=RUN_NAME_PREFIX \
      --one_shot=True
    • TENSORBOARD_RESOURCE_NAME: Vertex AI TensorBoard インスタンスを完全に識別するために使用される TensorBoard リソース名
    • LOG_DIR: ローカル ファイル システムまたは Cloud Storage のいずれかに配置されているイベントログの場所。
    • TB_EXPERIMENT_NAME: TensorBoard テストの名前(例: test-experiment)。
    • RUN_NAME_PREFIX: プロファイル データの場合、これは実行接頭辞です。LOG_DIR 内のディレクトリ形式は、次の対象と一致する必要があります。
      • /RUN_NAME_PREFIX/plugins/profile/YYYY_MM_DD_HH_SS/

デフォルトでは、アップローダー CLI は無期限に実行され、LOG_DIR の変更をモニタリングし、新しく追加されたログをアップロードします。--one_shot=True は、この動作を無効にします。詳細を確認するには、tb-gcp-uploader --help を実行してください。