テスト実行にデータを手動で記録する

ロギングを行うには、Vertex AI SDK for Python を使用します。

サポートされている指標とパラメータ:

  • サマリー指標
  • 時系列指標
  • パラメータ
  • 分類指標

Vertex AI SDK for Python

注: オプションの 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: 指標の Key-Value ペア。例: {'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: 省略可。エンドユーザーがデータポイントを生成したときの実時間のタイムスタンプ。指定しなかった場合、wall_time は time.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: パラメータの Key-Value ペア。例: {'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 テストの一覧ページ
詳細については、実行の比較と分析をご覧ください。

次のステップ

ノートブックのチュートリアル

ブログ投稿