预测类

Vertex AI SDK 包含以下预测类。一个类适用于批量预测。其他则与在线预测或 Vector Search 预测相关。如需了解详情, 请参阅 概览:在 Gemini Enterprise Agent Platform 上进行预测

批量预测类

批量预测是一组异步预测请求。您可以从模型资源请求批量预测,而无需将模型部署到端点。如果您不需要获得即时响应并且希望通过单个请求处理数据,则适合采用批量预测。BatchPredictionJob 便是 Vertex AI SDK 中一个特定于批量预测的类。

BatchPredictionJob

BatchPredictionJob 类表示一组异步预测请求。您可以通过以下两种方式创建批量预测作业:

  1. 创建批量预测作业的首选方法是对经过训练的 Model 使用 batch_predict 方法。此方法需要用到以下参数:

    • instances_format:批量预测请求文件的格式:jsonlcsvbigquerytf-recordtf-record-gzipfile-list
    • prediction_format:批量预测响应文件的格式:jsonlcsvbigquerytf-recordtf-record-gzipfile-list
    • gcs_source: 批量 预测请求的一个或多个 Cloud Storage 路径的列表。
    • gcs_destination_prefix:Gemini Enterprise Agent Platform 要将预测写入到的 Cloud Storage 路径。

    以下代码示例展示了如何调用 Model.batch_predict

    batch_prediction_job = model.batch_predict(
        instances_format="jsonl",
        predictions_format="jsonl",
        job_display_name="your_job_display_name_string",
        gcs_source=['gs://path/to/my/dataset.csv'],
        gcs_destination_prefix='gs://path/to/my/destination',
        model_parameters=None,
        starting_replica_count=1,
        max_replica_count=5,
        machine_type="n1-standard-4",
        sync=True
    )
    
  2. 创建批量预测作业的第二种方法是调用 BatchPredictionJob.create 方法。BatchPredictionJob.create 方法需要用到下面四个参数:

    • job_display_name:您为批量预测指定的名称。请注意,虽然 job_display_name 对于 BatchPredictionJob.create 方法而言是必需的参数,但对 Model.batch_predict 方法是可选参数。
    • model_name:要通过其来执行批量预测作业的经过训练的 Model 的完全限定名称或 ID。
    • instances_format:批量预测请求文件的格式:jsonlcsvbigquerytf-recordtf-record-gzipfile-list
    • predictions_format:批量预测响应文件的格式:jsonlcsvbigquerytf-recordtf-record-gzipfile-list

在线预测类

在线预测是向模型端点发出的同步请求。您必须先将模型部署到端点,然后才能发出在线预测请求。如果您希望根据应用输入生成预测结果或是需要快速获得预测响应,则适合采用在线预测。

Endpoint

您必须先将模型部署到端点,然后才能通过该模型进行在线预测。将模型部署到端点,即会将物理机器资源与该模型相关联,以便通过模型进行在线预测。

您可以将多个模型部署到一个端点。您也可以将一个模型部署到多个端点。如需了解详情,请参阅模型部署注意事项

如需创建 Endpoint 资源,部署模型即可。当您调用 Model.deploy 方法时,即会创建并返回一个 Endpoint

下面的示例代码段展示了如何创建一个自定义训练作业,创建并训练一个模型,然后将该模型部署到一个端点。

# Create your custom training job

job = aiplatform.CustomTrainingJob(
    display_name="my_custom_training_job",
    script_path="task.py",
    container_uri="us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-8:latest",
    requirements=["google-cloud-bigquery>=2.20.0", "db-dtypes"],
    model_serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest"
)

# Start the training and create your model
model = job.run(
    dataset=dataset,
    model_display_name="my_model_name",
    bigquery_destination=f"bq://{project_id}"
)

# Create an endpoint and deploy your model to that endpoint
endpoint = model.deploy(deployed_model_display_name="my_deployed_model")

# Get predictions using test data in a DataFrame named 'df_my_test_data'
predictions = endpoint.predict(instances=df_my_test_data)

PrivateEndpoint

专用端点与 Endpoint 资源类似, 不同之处在于预测会通过安全网络发送到 Gemini Enterprise Agent Platform 在线预测服务。如果您的组织希望将所有流量保持为不公开状态,请使用专用端点。

如需使用专用端点,您必须将 Gemini Enterprise Agent Platform 配置为与一个虚拟私有云 (VPC) 建立对等互连。专用预测端点必须通过 VPC 才能与 Gemini Enterprise Agent Platform 建立直接连接。如需了解详情,请参阅 设置 VPC 网络对等互连使用专用端点进行在线预测

ModelDeploymentMonitoringJob

使用 ModelDeploymentMonitoringJob 资源监控模型,并在模型偏离既定目标并有可能影响模型的预测质量时接收提醒。

如果输入数据与用于训练模型的数据存在差异,那么即使模型本身未发生变化,模型的表现可能也会受到影响。模型监控功能会对输入数据进行分析,以发现特征偏差和偏移情况:

  • 如果生产特征数据分布与用于训练模型的特征数据存在差异,便会发生“偏差”。
  • 如果生产特征数据会随时间明显波动,便会发生“偏移”

如需了解详情,请参阅 Gemini Enterprise 代理平台模型监控简介。如需查看如何使用 Vertex AI SDK 实现 Gemini Enterprise Agent Platform 监控功能的示例,请参阅 GitHub 上的 将 Gemini Enterprise Agent Platform 模型监控功能与可解释 AI 特征 归因 搭配使用笔记本。

Vector Search 预测类

Vector Search 是一项托管式服务,用于构建相似度索引或矢量来执行相似度匹配。执行相似度匹配大致有下面两个步骤:

  1. 创建数据的矢量表示。数据可以是文本、图片、视频、音频或表格数据。

  2. Vector Search 使用所创建向量的端点对类似向量执行大规模、低延迟的搜索。

如需了解详情,请参阅 GitHub 上的 Vector Search 概览创建 Vector Search 索引笔记本。

MatchingEngineIndex

MatchingEngineIndex 类表示您创建的索引或向量,Vector Search 使用它们来执行相似度搜索。

可以在索引中使用下面两种搜索算法:

  1. TreeAhConfig 使用浅树 AH 算法(即使用非对称哈希的浅树)。使用 MatchingEngineIndex.create_tree_ah_index 可创建使用树 AH 算法的索引。
  2. BruteForceConfig 使用标准线性搜索。使用 MatchingEngineIndex.create_brute_force_index 可创建使用标准线性搜索的索引。

如需详细了解如何配置索引,请参阅配置索引

下面的代码示例演示了如何创建使用树 AH 算法的索引:

my_tree_ah_index = aiplatform.Index.create_tree_ah_index(
    display_name="my_display_name",
    contents_delta_uri="gs://my_bucket/embeddings",
    dimensions=1,
    approximate_neighbors_count=150,
    distance_measure_type="SQUARED_L2_DISTANCE",
    leaf_node_embedding_count=100,
    leaf_nodes_to_search_percent=50,
    description="my description",
    labels={ "label_name": "label_value" }
)

下面的代码示例演示了如何创建使用暴力算法的索引:

my_brute_force_index = aiplatform.Index.create_brute_force_index(
    display_name="my_display_name",
    contents_delta_uri="gs://my_bucket/embeddings",
    dimensions=1,
    approximate_neighbors_count=150,
    distance_measure_type="SQUARED_L2_DISTANCE",
    description="my description",
    labels={ "label_name": "label_value" }
)

MatchingEngineIndexEndpoint

使用 MatchingEngineIndexEndpoint 类可创建和检索端点。将模型部署到端点后,您会获得一个 IP 地址,用以运行查询。

下面的代码示例演示了如何创建一个匹配引擎索引端点,然后向该端点部署一个匹配引擎索引:

my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint.create(
    display_name="sample_index_endpoint",
    description="index endpoint description",
    network="projects/123456789123/global/networks/my_vpc"
)

my_index_endpoint = my_index_endpoint.deploy_index(
    index=my_tree_ah_index, deployed_index_id="my_matching_engine_index_id"
)

后续步骤