将模型记录到实验运行作业中

为了能够轻松跟踪、共享和分析模型,Vertex AI SDK for Python 提供了一个 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:可选。每个模型会获取输入数据,然后生成预测。每个模型接受一种特定的输入格式(例如数字、字符串、二维数组),并会作为 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 ML Metadata 工件记录到当前实验运行作业中。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:可选。每个模型会获取输入数据,然后生成预测。每个模型接受一种特定的输入格式(例如数字、字符串、二维数组),并会作为 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 控制台中,前往实验页面。
    前往“实验”
    实验列表随即显示。
  2. 选择要检查的实验。
    此时会显示运行作业列表。

Vertex AI 实验列表页面

后续步骤

相关笔记本示例

博文