將模型記錄到實驗執行記錄

如要追蹤、分享及分析模型,Python 適用的 Vertex AI SDK 會提供 API,將機器學習模型序列化為 ExperimentModel 類別,並將模型記錄至 Vertex AI Experiments。

選取要使用的最佳模型後,您可以將該模型從 Vertex AI Experiments 註冊至 Vertex AI Model Registry。

支援的架構包括 scikit-learn、XGBoost 和 TensorFlow。

儲存及記錄機器學習模型

儲存模型

Vertex AI SDK 提供 save_model 方法,可將機器學習模型序列化、將模型上傳至 Cloud Storage,並將模型表示為 Vertex 機器學習中繼資料構件。

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。您可以在 Google Cloud 控制台 歡迎頁面中找到這些 ID。
  • location:請參閱「支援的地點清單
  • model:(必填)。機器學習模型。 (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:選用。每個模型都會接收輸入資料,然後產生預測結果。每個模型都接受特定格式的輸入內容 (例如數字、字串、2D 陣列),並以 YAML 檔案的形式儲存在 GCS URI 中。接受清單、字典、pd.DataFrame 和 np.ndarray。清單中的值必須是純量或清單。字典內的值必須是純量、清單或 np.ndarray。 (Union[list, dict, pd.DataFrame, np.ndarray])
  • display_name:構件的顯示名稱。

記錄模型

Vertex AI SDK 提供 log_model 方法,可協調 save_model,並執行額外步驟,將 Vertex 機器學習中繼資料構件記錄到目前的實驗執行作業。log_model 方法,可在 Vertex AI Experiments 中管理及分析多個機器學習模型。

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。您可以在 Google Cloud 控制台 歡迎頁面中找到這些 ID。
  • location:請參閱「可用位置清單」。
  • model:必填。機器學習模型。 (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • uri:選用。要儲存模型檔案的 GCS 目錄。如果未提供 URI,系統會使用 gs://default-bucket/timestamp-uuid-frameworkName-model。如果未設定預設暫存值區,系統會建立新的值區。
  • input_example:選用。每個模型都會接收輸入資料,然後產生預測結果。每個模型都接受特定格式的輸入內容 (例如數字、字串、2D 陣列),並以 YAML 檔案的形式儲存在 GCS URI 中。接受清單、字典、pd.DataFrame 和 np.ndarray。清單中的值必須是純量或清單。字典內的值必須是純量、清單或 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

  • project:您的專案 ID。您可以在 Google Cloud 控制台 歡迎頁面中找到這些 ID。
  • location:請參閱「可用位置清單」。
  • artifact_id:必要:現有模型的資源 ID。

取得實驗模型

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。您可以在 Google Cloud 控制台 歡迎頁面中找到這些 ID。
  • 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()

  • artifact_id:必要。現有 ExperimentModel 的資源 ID。
  • project:您的專案 ID。您可以在 Google Cloud 控制台 歡迎頁面中找到這些 ID。
  • location:請參閱「可用位置清單」。

載入 ExperimentModel

載入模型

load_experiment_model 方法可協助您將 ExperimentModel 執行個體還原為原始機器學習模型。

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()

  • artifact_id:(必填)。現有 ExperimentModel 的資源 ID。 範例:artifact_id="my-sklearn-model"
  • project:您的專案 ID。您可以在 Google Cloud 控制台 歡迎頁面中找到這些 ID。
  • location:請參閱「可用位置清單」。

註冊 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。您可以在 Google Cloud 控制台 歡迎頁面中找到這些 ID。
  • location:請參閱「可用位置清單」。
  • display_name:選用。註冊模型的使用者定義名稱。

在 Google Cloud 控制台中查看實驗執行清單

  1. 前往 Google Cloud 控制台的「Experiments」頁面。
    前往「實驗」
    系統會顯示實驗清單。
  2. 選取要查看的實驗。
    系統會顯示執行作業清單。

Vertex AI 實驗清單頁面

後續步驟

相關筆記本範例

網誌文章