将日志上传到 Vertex AI TensorBoard

您可以将现有日志上传到 Vertex AI TensorBoard 实例,这些日志通过在本地训练、在 Vertex AI 外部训练、由同事创建,这些日志是示例日志,或者使用其他 Vertex AI TensorBoard 实例创建。日志可以在多个 Vertex AI TensorBoard 实例之间共享。

Vertex AI TensorBoard 提供 Google Cloud CLI 和 Python 版 Vertex AI SDK,用于上传 TensorBoard 日志。您可以从任何能够连接到 Google Cloud 的环境上传日志。

Python 版 Vertex AI SDK

持续监控

如需持续监控,请在训练开始时调用 aiplatform.start_upload_tb_log。SDK 会打开一个新线程以进行上传。此线程会监控目录中的新数据,然后将其上传到 Vertex AI TensorBoard 实验。 训练完成后,调用 end_upload_tb_log 以结束上传工具线程。

请注意,在调用 start_upload_tb_log() 后,即使抛出异常,您的线程也会保持活动状态。如需确保线程关停,请将 start_upload_tb_log() 之后且 end_upload_tb_log() 之前的任何代码放在 try 语句中,并在 finally 中调用 end_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_idTensorBoard 实例 ID。如果未设置,则使用 aiplatform.init 中的 tensorboard_id
  • project:您的项目 ID。 您可以在 Google Cloud 控制台的欢迎页面中找到项目 ID。
  • location:TensorBoard 实例所在的位置。
  • experiment_display_name:实验的显示名称。
  • run_name_prefix:如果存在,则此调用创建的所有运行的名称都会以此值为前缀。
  • description:要分配给实验的字符串说明。

一次性日志记录

上传 TensorBoard 日志

调用 aiplatform.upload_tb_log 以执行 TensorBoard 日志的一次性上传。此操作会上传 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_idTensorBoard 实例 ID。 如果未设置,则使用 aiplatform.init 中的 tensorboard_id
  • project:您的项目 ID。 您可以在 Google Cloud 控制台的欢迎页面中找到这些项目 ID。
  • 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。 您可以在 Google Cloud 控制台的欢迎页面中找到这些项目 ID。
  • 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 Uploader 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