手动将数据记录到实验运行作业中

出于日志记录目的,请使用 Vertex AI SDK for Python。

支持的指标和参数:

  • 摘要指标
  • 时序指标
  • 参数
  • 分类指标

Python 版 Vertex AI SDK

注意:将可选的 resume 参数指定为 TRUE 时,先前启动的运行会继续。如果未指定,则 resume 默认为 FALSE,并创建一个新的运行。

以下示例使用 aiplatform 函数中的 init 方法。

摘要指标

摘要指标是存储在时序指标旁边的单一值标量指标,表示实验运行作业的最终摘要。

一个示例用例是早停法,其中容忍配置允许继续训练,但候选模型从较早的步骤中恢复,并且在该步骤中为模型计算的指标将表示为摘要指标,因为最新的时序指标不能代表恢复的模型。摘要指标的 log_metrics API 用于此用途。

Python

from typing import Dict

from google.cloud import aiplatform


def log_metrics_sample(
    experiment_name: str,
    run_name: str,
    metrics: Dict[str, float],
    project: str,
    location: str,
):
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name)

    aiplatform.log_metrics(metrics)

  • experiment_name:提供实验的名称。要找到实验列表,您可以在 Google Cloud 控制台的板块导航栏中选择实验
  • run_name:指定运行作业名称(请参阅 start_run)。
  • metric:指标键值对。例如:{'learning_rate': 0.1}
  • project:您的项目 ID。 您可以在 Google Cloud 控制台的欢迎页面中找到此信息。
  • location:请参阅可用位置列表

时序指标

为了记录时序指标,Vertex AI Experiments 需要一个提供支持的 Vertex AI TensorBoard 实例。

为时序指标日志记录分配提供支持的 Vertex AI TensorBoard 资源。

通过 log_time_series_metrics 记录的所有指标都会存储为时序指标。时序指标由 Vertex AI TensorBoard 存储。

您可在实验实验运行作业级别设置 experiment_tensorboard。在运行作业级别设置的 experiment_tensorboard 会覆盖实验级别的设置。在运行作业中设置 experiment_tensorboard 后,该运行作业的 experiment_tensorboard 便无法更改。

  • 在实验级别设置 experiment_tensorboard
      aiplatform.init(experiment='my-experiment',
                   experiment_tensorboard='projects/.../tensorboard/my-tb-resource')
  • 在运行作业级别设置 experiment_tensorboard:注意:覆盖实验级别的设置。
      aiplatform.start_run(run_name='my-other-run',
                        tensorboard='projects/.../.../other-resource')
    aiplatform.log_time_series_metrics(...)

Python

from typing import Dict, Optional

from google.cloud import aiplatform
from google.protobuf import timestamp_pb2


def log_time_series_metrics_sample(
    experiment_name: str,
    run_name: str,
    metrics: Dict[str, float],
    step: Optional[int],
    wall_time: Optional[timestamp_pb2.Timestamp],
    project: str,
    location: str,
):
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name, resume=True)

    aiplatform.log_time_series_metrics(metrics=metrics, step=step, wall_time=wall_time)

  • experiment_name:提供实验的名称。要找到实验列表,您可以在 Google Cloud 控制台的板块导航栏中选择实验
  • run_name:指定运行作业名称(请参阅 start_run)。
  • metrics:键为指标名称且值为指标值的字典。
  • step:可选。运行作业中此数据点的步骤索引。
  • wall_time:可选。最终用户生成此数据点时的实际时间戳。如果未提供,则系统会根据 time.time() 中的值生成 wall_time
  • project:您的项目 ID。 您可以在 Google Cloud 控制台的欢迎页面中找到此信息。
  • location:请参阅可用位置列表

步骤和实际用时

log_time_series_metrics API 可以选择性地接受 stepwalltime

  • step:可选。运行作业中此数据点的步骤索引。如果未提供,则使用已记录的所有时序指标中最新步骤的增量。如果提供的指标键存在此步骤,则此步骤会被覆盖。
  • wall_time:可选。所记录指标的周期之后的秒数。如果未提供,则默认为 Python 的 time.time

例如:

aiplatform.log_time_series_metrics({"mse": 2500.00, "rmse": 50.00})
记录到特定步骤
aiplatform.log_time_series_metrics({"mse": 2500.00, "rmse": 50.00}, step=8)
包括 wall_time
aiplatform.log_time_series_metrics({"mse": 2500.00, "rmse": 50.00}, step=10)

参数

参数是键入的输入值,它们可配置运行作业,控制运行作业的行为,并影响运行作业的结果。例如学习速率、漏失率和训练步数。使用 log_params 方法记录参数。

Python

from typing import Dict, Union

from google.cloud import aiplatform


def log_params_sample(
    experiment_name: str,
    run_name: str,
    params: Dict[str, Union[float, int, str]],
    project: str,
    location: str,
):
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name, resume=True)

    aiplatform.log_params(params)

aiplatform.log_params({"learning_rate": 0.01, "n_estimators": 10})
  • experiment_name:提供实验的名称。 要找到实验列表,您可以在 Google Cloud 控制台的板块导航栏中选择实验
  • run_name:指定运行作业名称(请参阅 start_run)。
  • params:参数键值对。例如:{'accuracy': 0.9}(请参阅 log_params)。欢迎页面。
  • location:请参阅可用位置列表

分类指标

除摘要指标和时序指标外,混淆矩阵和 ROC 曲线也是常用指标。可以使用 log_classification_metrics API 将它们记录到 Vertex AI Experiments。

Python

from typing import List, Optional

from google.cloud import aiplatform


def log_classification_metrics_sample(
    experiment_name: str,
    run_name: str,
    project: str,
    location: str,
    labels: Optional[List[str]] = None,
    matrix: Optional[List[List[int]]] = None,
    fpr: Optional[List[float]] = None,
    tpr: Optional[List[float]] = None,
    threshold: Optional[List[float]] = None,
    display_name: Optional[str] = None,
) -> None:
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name, resume=True)

    aiplatform.log_classification_metrics(
        labels=labels,
        matrix=matrix,
        fpr=fpr,
        tpr=tpr,
        threshold=threshold,
        display_name=display_name,
    )

  • experiment_name:提供实验的名称。 要找到实验列表,您可以在 Google Cloud 控制台的板块导航栏中选择实验
  • run_name:指定运行作业名称(请参阅 start_run)。
  • project:您的项目 ID。 您可以在 Google Cloud 控制台的欢迎页面中找到此信息。
  • location:请参阅可用位置列表
  • labels:混淆矩阵的标签名称列表。如果设置了“matrix'”,则必须设置此参数。
  • matrix:混淆矩阵的值。如果设置了“labels”,则必须设置此参数。
  • fpr:ROC 曲线的假正例率列表。如果设置了“tPR”或“thresholds”,则必须设置此参数。
  • tpr:ROC 曲线的真正例率列表。如果设置了“fpr”或“thresholds”,则必须设置此参数。
  • threshold:ROC 曲线的阈值列表。如果设置了“fpr”或“tpr”,则必须设置此参数。
  • display_name:分类指标工件的用户定义名称。

在 Google Cloud 控制台中查看实验运行作业列表

  1. 在 Google Cloud 控制台中,前往实验页面。
    前往“实验”
    实验列表随即显示。
  2. 选择要检查的实验。
    此时会显示运行作业列表。

Vertex AI 实验列表页面
如需了解详情,请参阅比较和分析运行作业

后续步骤

笔记本教程

博文