如何在Vertex AI中实现含自定义指标的自定义Evaluation job
在Vertex AI中实现自定义模型评估(针对MMD/KL散度等定制指标)
你的思路方向完全正确,基于Docker容器+CustomJob的方案是Vertex AI支持自定义评估的标准路径,下面是具体落地的详细步骤:
一、构建自定义评估的Docker镜像
- 编写评估代码:实现定制化指标计算逻辑(比如MMD、KL散度),同时处理输入数据读取(从GCS或Vertex AI数据集)、结果输出(到GCS)。示例Python代码片段:
import numpy as np from scipy.spatial.distance import pdist from google.cloud import storage def compute_mmd(x, y): # RBF核MMD计算实现 xx = pdist(x, 'sqeuclidean').mean() yy = pdist(y, 'sqeuclidean').mean() xy = pdist(np.vstack([x, y]), 'sqeuclidean')[:len(x)*len(y)].mean() return xx + yy - 2*xy # 读取GCS测试数据 storage_client = storage.Client() bucket = storage_client.bucket("your-bucket-name") blob = bucket.blob("test-data/samples.npz") blob.download_to_filename("samples.npz") data = np.load("samples.npz") x, y = data["preds"], data["labels"] # 计算指标 mmd_score = compute_mmd(x, y) # 将结果写入GCS result_blob = bucket.blob("eval-results/mmd_score.json") result_blob.upload_from_string(f'{{"mmd_score": {mmd_score}}}')
- 编写Dockerfile:打包代码和依赖,确保镜像包含所有必要库(如numpy、scipy、google-cloud-storage等)。示例Dockerfile:
FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY eval_script.py . CMD ["python", "eval_script.py"]
- 构建并推送镜像到Artifact Registry:使用gcloud命令行完成打包上传:
gcloud builds submit --tag us-central1-docker.pkg.dev/你的项目ID/你的仓库名/custom-eval:v1 .
二、创建CustomJob运行评估任务
可以通过Python SDK或Vertex AI控制台创建任务:
- Python SDK示例:
from google.cloud import aiplatform aiplatform.init(project="你的项目ID", region="us-central1") custom_job = aiplatform.CustomJob( display_name="custom-mmd-evaluation", container_uri="us-central1-docker.pkg.dev/你的项目ID/你的仓库名/custom-eval:v1", args=["--input-bucket", "your-bucket-name/test-data/", "--output-bucket", "your-bucket-name/eval-results/"], machine_type="n1-standard-4", ) custom_job.submit()
- 控制台操作:进入Vertex AI控制台 → 自定义训练 → 创建自定义任务,选择已推送的镜像,配置机器资源和参数后启动任务。
三、评估产物处理与可选集成
- 结果存储:评估代码中直接将指标数值(JSON格式)、可视化图表(如Matplotlib生成的PNG)上传到指定GCS路径,方便后续查看或分析。
- 模型注册表集成(可选):如果模型已注册到Vertex AI,可通过API将自定义评估结果关联到对应模型版本,实现统一管理:
from google.cloud import aiplatform model = aiplatform.Model(model_name="你的模型资源名称") model.add_evaluation( evaluation_id="mmd-evaluation-v1", metrics={"mmd_score": 0.03, "kl_divergence": 0.12}, )
注意事项
- 权限配置:确保CustomJob使用的服务账号拥有GCS读写、Artifact Registry访问权限。
- 日志监控:在Vertex AI控制台的CustomJob详情页查看运行日志,快速排查问题。
- 资源适配:根据评估任务的计算量选择合适的机器类型,涉及大规模数据计算时可启用GPU加速。
内容的提问来源于stack exchange,提问作者Shengy90
相关产品推荐
相关产品推荐

