导入自定义评估至VertexAI模型遇500错误:含confusionMatrix时失败
解决Vertex AI导入自定义分类模型评估时的500内部错误(含confusionMatrix字段)
问题背景
尝试将包含confusionMatrix字段的自定义分类模型评估结果导入Vertex AI时,触发InternalServerError: 500 Internal error encountered,移除该字段则导入成功。
核心原因
500错误的本质是confusionMatrix或关联字段的格式、数据类型不符合Vertex AI的校验要求,常见问题包括:
- 数值类字段使用字符串类型而非数值类型
- 引用未定义变量导致字段值无效
confusionMatrix结构与标注规格不匹配
修复步骤
1. 修正数据类型错误
Vertex AI要求计数类(如falsePositiveCount、truePositiveCount)和比率类(如falsePositiveRate、recall)字段必须为数值类型(整数或浮点数),不能是字符串。修改代码中的错误写法:
# 错误写法 "falsePositiveCount": "3000", "falsePositiveRate": "1" # 正确写法 "falsePositiveCount": 3000, "falsePositiveRate": 1.0
2. 修复未定义变量
代码中precision字段引用了未定义的d变量,需替换为实际的精度值,或确保d变量在代码中已正确初始化:
# 替换为实际数值(示例) "precision": 0.8, # 或确保d已定义(业务场景下的合法变量) # "precision": d["evaluationReport"]["predictorsPerformance"][0]["accuracy"]
3. 优化confusionMatrix结构(可选)
虽然当前confusionMatrix的行数/列数与annotationSpecs数量匹配,但建议确认:
annotationSpecs中的id与模型训练时使用的标签ID完全一致confidenceThreshold优先使用0-1之间的常规值(-0.005虽被允许,但部分环境可能存在兼容问题,可先尝试0.0测试)
4. 更新客户端库
旧版本的google-cloud-aiplatform gapic客户端可能存在confusionMatrix解析bug,执行以下命令更新至最新版本:
pip install --upgrade google-cloud-aiplatform
修正后的完整代码示例
from google.cloud.aiplatform import gapic # 初始化metrics,移除重复赋值 metrics = { "auPrc": 0.92, "auRoc": 0.93, "logLoss": 0.26 } metrics["confidenceMetrics"] = [ { "confidenceThreshold": 0.0, "confusionMatrix": { "annotationSpecs": [ {"displayName": "less", "id": "0"}, {"displayName": "more", "id": "1"} ], "rows": [[1, 2], [3, 4]] }, "f1Score": 0.66, "f1ScoreAt1": 0.66, "falsePositiveCount": 3000, "falsePositiveRate": 1.0, "falsePositiveRateAt1": 1.0, "precision": 0.8, # 替换为实际精度值 "precisionAt1": 0.5, "recall": 1.0, "recallAt1": 1.0, "truePositiveCount": 3000 } ] model_eval = gapic.ModelEvaluation( display_name="eval", metrics_schema_uri="gs://google-cloud-aiplatform/schema/modelevaluation/classification_metrics_1.0.0.yaml", metrics=metrics, ) API_ENDPOINT = f"{REGION}-aiplatform.googleapis.com" client = gapic.ModelServiceClient(client_options={"api_endpoint": API_ENDPOINT}) client.import_model_evaluation(parent=my_model.resource_name, model_evaluation=model_eval)
额外排查建议
如果以上修复仍未解决问题,可通过GCP控制台的Cloud Logging查看具体错误详情:
- 进入GCP控制台的Cloud Logging页面
- 过滤条件选择
resource.type="aiplatform_model"和severity="ERROR" - 查找对应导入请求的日志,获取更具体的错误信息(如字段格式不匹配、权限问题等)
内容的提问来源于stack exchange,提问作者Anas Knefati
相关产品推荐
相关产品推荐

