Vertex AI自定义训练模型推理API调用失败求助
针对Vertex AI自定义模型推理失败的解决建议
问题1:AI Platform无法创建模型新版本
斯坦福的教程基于旧版AI Platform服务,目前该服务已整合至Vertex AI,操作路径需调整:
- 登录Vertex AI控制台,进入模型页面找到已上传的模型
- 确认模型格式符合Vertex AI要求(如TensorFlow SavedModel、PyTorch TorchScript等)
- 检查账号权限:需拥有
Vertex AI Admin或Model Admin角色,确保具备版本创建权限 - 若仍无操作选项,尝试直接通过Vertex AI入口重新上传模型
问题2:图片Payload超过1.5MB限制
将图片转为float32列表后,JSON序列化会大幅膨胀数据体积(即使原图片仅49KB),修复方案:
- 改用Base64编码传递图片内容,避免数值列表的冗余数据
- 修正代码结构,确保
instances参数为列表格式(模型推理接口要求批量输入结构):import base64 from google.cloud import aiplatform IMAGE_PATH = "test-image.jpg" with open(IMAGE_PATH, "rb") as f: encoded_content = base64.b64encode(f.read()).decode("utf-8") # 需根据模型实际输入键名调整,示例假设输入键为"image" instances = [{"image": {"b64": encoded_content}}] endpoint.predict(instances=instances).predictions - 额外检查:确认图片未被意外缩放(如
Image.open后是否存在隐式尺寸调整)
问题3:JSON格式错误(Invalid argument: does not have named input: instances)
原代码的instances结构不符合Vertex AI推理接口规范,正确格式要求:
instances需为列表类型,列表中每个元素是对应模型输入的键值对字典- 若需传递额外参数(如
key),应放在parameters参数中,而非instances字典内
修正后的代码示例:
import base64 from google.cloud import aiplatform with open("test-image.jpg", "rb") as f: image = f.read() encoded_content = base64.b64encode(image).decode("utf-8") # 正确的输入结构:instances是输入列表,parameters存放额外参数 instances = [{"image": {"b64": encoded_content}}] response = endpoint.predict( instances=instances, parameters={"key": "0"} ) print(response.predictions)
通用调试步骤
- 验证模型输入签名:使用
saved_model_cli show --dir <你的模型目录> --all(TensorFlow模型)查看输入键名、数据类型,确保代码中的输入键与签名完全匹配 - 控制台测试推理:在Vertex AI控制台的模型详情页,使用「测试和验证」功能直接上传图片或输入JSON,确认模型本身可正常推理,排除代码端问题
- 查看详细日志:进入Vertex AI的预测日志页面(而非通用日志),筛选具体推理请求的日志条目,通常会包含更详细的输入不匹配或格式错误信息
- 确认端点配置:检查端点是否关联了正确的模型版本,且模型版本的部署状态为「活跃」
内容的提问来源于stack exchange,提问作者Jinmo Chong
相关产品推荐
相关产品推荐

