Vertex AI SDK 包含以下预测类。一个类适用于批量预测。其他则与在线预测或 Vector Search 预测相关。如需了解详情,请参阅概览:在 Vertex AI 上进行预测。
批量预测类
批量预测是一组异步预测请求。您可以从模型资源请求批量预测,而无需将模型部署到端点。如果您不需要获得即时响应并且希望通过单个请求处理数据,则适合采用批量预测。BatchPredictionJob
便是 Vertex AI SDK 中一个特定于批量预测的类。
BatchPredictionJob
BatchPredictionJob
类表示一组异步预测请求。您可以通过以下两种方式创建批量预测作业:
创建批量预测作业的首选方法是对经过训练的
Model
使用batch_predict
方法。此方法需要用到以下参数:instances_format
:批量预测请求文件的格式:jsonl
、csv
、bigquery
、tf-record
、tf-record-gzip
或file-list
。prediction_format
:批量预测响应文件的格式:jsonl
、csv
、bigquery
、tf-record
、tf-record-gzip
或file-list
。gcs_source:
:批量预测请求的一个或多个 Cloud Storage 路径的列表。gcs_destination_prefix
:Vertex AI 要将预测写入到的 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 )
创建批量预测作业的第二种方法是调用
BatchPredictionJob.create
方法。BatchPredictionJob.create
方法需要用到下面四个参数:job_display_name
:您为批量预测指定的名称。请注意,虽然job_display_name
对于BatchPredictionJob.create
方法而言是必需的参数,但对Model.batch_predict
方法是可选参数。model_name
:要通过其来执行批量预测作业的经过训练的Model
的完全限定名称或 ID。instances_format
:批量预测请求文件的格式:jsonl
、csv
、bigquery
、tf-record
、tf-record-gzip
或file-list
。predictions_format
:批量预测响应文件的格式:jsonl
、csv
、bigquery
、tf-record
、tf-record-gzip
或file-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
资源类似,不同之处在于预测会通过安全网络发送到 Vertex AI 在线预测服务。如果您的组织希望将所有流量保持为不公开状态,请使用专用端点。
如需使用专用端点,您必须将 Vertex AI 配置为与一个虚拟私有云 (VPC) 建立对等互连。专用预测端点必须通过 VPC 才能与 Vertex AI 建立直接连接。如需了解详情,请参阅设置 VPC 网络对等互连和使用专用端点进行在线预测。
ModelDeploymentMonitoringJob
使用 ModelDeploymentMonitoringJob
资源监控模型,并在模型偏离既定目标并有可能影响模型的预测质量时接收提醒。
如果输入数据与用于训练模型的数据存在差异,那么即使模型本身未发生变化,模型的表现可能也会受到影响。模型监控功能会对输入数据进行分析,以发现特征偏差和偏移情况:
- 如果生产特征数据分布与用于训练模型的特征数据存在差异,便会发生“偏差”。
- 如果生产特征数据会随时间明显波动,便会发生“偏移”。
如需了解详情,请参阅 Vertex AI 模型监控功能简介。如需查看如何使用 Vertex AI SDK 实现 Vertex AI 监控功能的示例,请参阅 GitHub 上的将 Vertex AI 模型监控功能与 Explainable AI 特征归因搭配使用笔记本。
Vector Search 预测类
Vector Search 是一项托管式服务,用于构建相似度索引或矢量来执行相似度匹配。执行相似度匹配大致有下面两个步骤:
创建数据的矢量表示。数据可以是文本、图片、视频、音频或表格数据。
Vector Search 使用所创建向量的端点对类似向量执行大规模、低延迟的搜索。
如需了解详情,请参阅 GitHub 上的 Vector Search 概览和创建 Vector Search 索引笔记本。
MatchingEngineIndex
MatchingEngineIndex
类表示您创建的索引或向量,Vector Search 使用它们来执行相似度搜索。
可以在索引中使用下面两种搜索算法:
TreeAhConfig
使用浅树 AH 算法(即使用非对称哈希的浅树)。使用MatchingEngineIndex.create_tree_ah_index
可创建使用树 AH 算法的索引。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"
)
后续步骤
- 了解 Vertex AI SDK。