テスト実行にモデルを記録する

モデルを簡単に追跡、共有、分析できるように、Vertex AI SDK for Python には、機械学習モデルを ExperimentModel クラスにシリアル化し、モデルを Vertex AI experiments に記録する API が用意されています。

使用する最適なモデルを選択したら、Vertex AI Experiments から Vertex AI Model Registry にそのモデルを登録できます。

サポートされているフレームワークは、scikit-learn、XGBoost、Tensorflow です。

ML モデルの保存と記録

モデルを保存する

Vertex AI SDK には、ML モデルをシリアル化し、モデルを Cloud Storage にアップロードして、モデルを Vertex ML Metadata として表す save_model メソッドが用意されています。

Python

from typing import Optional, Union

from google.cloud import aiplatform


def save_model_sample(
    project: str,
    location: str,
    model: Union[
        "sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"  # noqa: F821
    ],
    artifact_id: Optional[str] = None,
    uri: Optional[str] = None,
    input_example: Optional[
        Union[list, dict, "pd.DataFrame", "np.ndarray"]  # noqa: F821
    ] = None,
    display_name: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location)

    aiplatform.save_model(
        model=model,
        artifact_id=artifact_id,
        uri=uri,
        input_example=input_example,
        display_name=display_name,
    )

  • project: 実際のプロジェクト ID。これらの ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: 利用可能なロケーションの一覧をご覧ください
  • model:(必須)。ML モデル。(Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • artifact_id: 省略可。アーティファクトのリソース ID。この ID は、metadataStore 内でグローバルに一意である必要があります。63 文字以下で、有効な文字は [a-z0-9_-] です。最初の文字に数字やハイフンを使用することはできません。
  • uri: 省略可。モデルファイルを保存する gcs ディレクトリ。URI が指定されていない場合は、gs://default-bucket/timestamp-uuid-frameworkName-model が使用されます。デフォルトのステージング バケットが設定されていない場合は、新しいバケットが作成されます。
  • input_example: 省略可。各モデルは入力データを受け取り、予測を生成します。各モデルは、1 つの特定の入力形式(数値、文字列、2 次元配列など)を受け入れ、gcs URI に yaml ファイルとして保存されます。 list、dict、pd.DataFrame、np.ndarray を受け入れます。list 内の値はスカラーまたはリストである必要があります。辞書内の値は、スカラー、リスト、または np.ndarray にする必要があります。 (Union[list, dict, pd.DataFrame, np.ndarray])
  • display_name: アーティファクトの表示名。

モデルを記録する

Vertex AI SDK には、log_model メソッドが用意されています。これにより、現在のテスト実行に対する Vertex ML Metadata アーティファクトを記録するために save_model および追加のステップをオーケストレートします。Vertex AI Experiments で複数の ML モデルを管理および分析するための log_model メソッド。

Python

from typing import Optional, Union

from google.cloud import aiplatform


def log_model_sample(
    experiment_name: str,
    run_name: str,
    project: str,
    location: str,
    model: Union[
        "sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"  # noqa: F821
    ],
    artifact_id: Optional[str] = None,
    uri: Optional[str] = None,
    input_example: Optional[
        Union[list, dict, "pd.DataFrame", "np.ndarray"]  # noqa: F821
    ] = None,  # noqa: F821
    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_model(
        model=model,
        artifact_id=artifact_id,
        uri=uri,
        input_example=input_example,
        display_name=display_name,
    )

  • experiment_name: テストの名前を指定します。Google Cloud コンソールで、セクション ナビゲーションの [テスト] を選択すると、テストのリストを見つけることができます。
  • run_name: 実行名を指定します。
  • project: 実際のプロジェクト ID。これらの ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: 利用可能なロケーションの一覧をご覧ください。
  • model: 必須。ML モデル。(Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • uri: 省略可。モデルファイルを保存する gcs ディレクトリ。URI が指定されていない場合は、gs://default-bucket/timestamp-uuid-frameworkName-model が使用されます。 デフォルトのステージング バケットが設定されていない場合は、新しいバケットが作成されます。
  • input_example: 省略可。各モデルは入力データを受け取り、予測を生成します。各モデルは、1 つの特定の入力形式(数値、文字列、2 次元配列など)を受け入れ、gcs URI に yaml ファイルとして保存されます。 list、dict、pd.DataFrame、np.ndarray を受け入れます。list 内の値はスカラーまたはリストである必要があります。辞書内の値は、スカラー、リスト、または np.ndarray にする必要があります。 (Union[list, dict, pd.DataFrame, np.ndarray])
  • display_name: 省略可。アーティファクトの表示名。

ExperimentModel をトラッキングする

テストモデルを取得する

get_experiment_model を使用して保存済みモデルを返すには、保存済みモデルのアーティファクト ID を渡します。

Python

from google.cloud import aiplatform


def get_experiment_model_sample(
    project: str,
    location: str,
    artifact_id: str,
) -> "ExperimentModel":  # noqa: F821
    aiplatform.init(project=project, location=location)
    experiment_model = aiplatform.get_experiment_model(artifact_id=artifact_id)

    return experiment_model

テストモデルを取得する

get_experiment_models メソッドは、特定のテスト実行に記録されるすべての ExperimentModel のリストを取得します。

Python

from typing import List, Union

from google.cloud import aiplatform


def get_experiment_run_models_sample(
    run_name: str,
    experiment: Union[str, aiplatform.Experiment],
    project: str,
    location: str,
) -> List["ExperimentModel"]:  # noqa: F821
    experiment_run = aiplatform.ExperimentRun(
        run_name=run_name, experiment=experiment, project=project, location=location
    )

    return experiment_run.get_experiment_models()

  • run_name: 実行名を指定します。
  • experiment: テストの名前を指定します。Google Cloud コンソールで、セクション ナビゲーションの [テスト] を選択すると、テストのリストを見つけることができます。
  • project: 実際のプロジェクト ID。これらの ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: 利用可能なロケーションの一覧をご覧ください。

モデル情報を取得する

get_model_info メソッドは、特定の ExperimentModel インスタンスのモデルのメタデータ(モデルクラス、フレームワーク タイプなど)を返します。

Python

from typing import Any, Dict

from google.cloud import aiplatform


def get_model_info_sample(
    artifact_id: str,
    project: str,
    location: str,
) -> Dict[str, Any]:
    experiment_model = aiplatform.get_experiment_model(
        artifact_id=artifact_id, project=project, location=location
    )

    return experiment_model.get_model_info()

ExperimentModel を読み込む

モデルを読み込む

load_experiment_model メソッドを使用すると、ExperimentModel インスタンスをシリアル化解除して元の ML モデルに戻すことができます。

Python

from typing import Union

from google.cloud import aiplatform


def load_experiment_model_sample(
    artifact_id: str,
    project: str,
    location: str,
) -> Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"]:  # noqa: F821:
    experiment_model = aiplatform.get_experiment_model(
        artifact_id=artifact_id, project=project, location=location
    )

    return experiment_model.load_model()

ExperimentModel を登録する

保存済みモデルを登録する

register_experiment_model API を使用すると、最小限の構成で、最適とみなされたモデルを Vertex AI Model Registry に登録できます。API は、モデルのフレームワークとバージョンに基づいてビルド済み予測コンテナを自動的に選択します。

Python

from google.cloud import aiplatform


def register_experiment_model_sample(
    artifact_id: str,
    project: str,
    location: str,
    display_name: str,
) -> aiplatform.models.Model:
    experiment_model = aiplatform.get_experiment_model(
        artifact_id=artifact_id, project=project, location=location
    )

    return experiment_model.register_model(display_name=display_name)

  • artifact_id:(必須)。既存の ExperimentModel のリソース ID。
  • project: 実際のプロジェクト ID。これらの ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: 利用可能なロケーションの一覧をご覧ください。
  • display_name: 省略可。登録済みモデルのユーザー定義の名前。

Google Cloud コンソールでテスト実行リストを表示する

  1. Google Cloud コンソールで、[テスト] ページに移動します。
    [テスト] に移動
    テストのリストが表示されます。
  2. 確認するテストを選択します。
    実行のリストが表示されます。

Vertex AI テストの一覧ページ

次のステップ

関連するノートブックのサンプル

ブログ投稿