我在使用 aiplatform SDK 设置 Vertex AI 模型监控时遇到问题,特别是在配置 BatchPredictionJob.create() 时。该文档不清楚,并且缺少定义 model_monitoring_objective_config 和 model_monitoring_alert_config 的示例。由于参考不完整和参数映射不清晰,这导致了兼容性问题。
出现主要混乱的原因是这些配置在 SDK 中没有详细记录,需要探索 SDK 源代码以了解正确的结构。此外,SDK 需要 aiplatform.model_monitoring 的配置,官方指南中没有明确说明。
我尝试过的: 我最初参考了 SDK 文档,并根据看似合理的方式尝试了各种配置,假设所有组件都可以直接使用 SDK 的类进行配置。但是,这导致了多个类型和参数不匹配错误。
我的期望: 我期望清晰、简单的文档展示如何在使用 aiplatform.BatchPredictionJob.create() 创建批量预测作业时定义和传递监控配置。
实际发生的事情: 由于 SDK 和 GAPIC API 之间的参数不匹配,我遇到了错误。在探索源代码之后,我意识到必须使用 aiplatform.model_monitoring 类定义所需的配置。这种跨库依赖关系没有记录。
我在使用 aiplatform SDK 设置 Vertex AI 模型监控时遇到了问题,特别是在配置 BatchPredictionJob.create() 时。挑战在于理解如何传递 model_monitoring_objective_config 和 model_monitoring_alert_config,因为 SDK 文档缺乏明确的示例。
解决方案:
为了解决这个问题,我使用了以下设置:
导入所需的库:
from google.cloud import aiplatform
定义模型监控配置:
# Define skew detection configuration
objective_config = aiplatform.model_monitoring.ObjectiveConfig(
skew_detection_config=aiplatform.model_monitoring.SkewDetectionConfig(
skew_thresholds={"feature1": 0.3},
data_source="gs://my-data-classification/train_data_new.csv",
target_field="type",
data_format="csv",
)
)
# Define email alert configuration
alert_config = aiplatform.model_monitoring.EmailAlertConfig(
user_emails=["[email protected]"]
)
创建批量预测作业:
batch_job = aiplatform.BatchPredictionJob.create(
job_display_name="vertex_monitoring_job",
model_name="projects/your_project_id/models/your_model_id",
instances_format="jsonl",
predictions_format="jsonl",
gcs_source=["gs://your-input-data/input.jsonl"],
gcs_destination_prefix="gs://your-output-data/",
machine_type="n1-standard-4",
model_monitoring_objective_config=objective_config,
model_monitoring_alert_config=alert_config,
)
print(f"Batch job created: {batch_job.resource_name}")
这解决了问题,并且在启用模型监控的情况下成功创建了作业。
主要挑战是理解 model_monitoring_objective_config 和 model_monitoring_alert_config 需要使用 aiplatform.model_monitoring 类构建。我希望这可以帮助任何面临类似困惑的人!
有关使用 Vertex AI 创建完整批量预测管道的更多详细信息,您可以参考我写的这篇博客文章。