Vertex AI自定义模型批量预测失败:RuntimeError资源未创建
问题分析与排查方案
问题背景
依据《Vertex AI自定义代码训练》教程完成自定义模型训练后,通过KFP流水线提交批量预测作业时失败,报错信息如下:
RuntimeError: BatchPredictionJob resource has not been created
同时模型服务器容器异常终止(退出码1)。相同泰坦尼克数据集的AutoML模型批量预测可正常运行,已尝试调整instance_format、不指定machine_type、优化预测数据集等方案,均未解决问题。
用户使用的批量预测代码:
model = aiplatform.Model(model_path) batch_prediction_job = model.batch_predict( gcs_source=gcs_source, gcs_destination_prefix=gcs_destination, machine_type='n1-standard-4', instances_format='csv', sync=False )
排查方向与解决方案
检查自定义模型的预测接口合规性
Vertex AI批量预测对自定义模型的服务接口有严格要求:- 必须支持HTTP POST请求,能正确解析
instances_format指定的csv格式输入 - 训练输出的模型目录结构需符合规范:根目录下必须包含
model子目录,且该目录内的模型文件可被预测容器正常加载 - 若使用自定义预测镜像,需确保镜像暴露8080端口,且实现了
/predict预测端点和/health健康检查端点
- 必须支持HTTP POST请求,能正确解析
查看容器终止的详细日志
登录Vertex AI控制台,定位到失败的批量预测作业,查看模型服务器容器的标准错误(stderr)日志。退出码1通常对应容器启动失败或预测请求处理错误,日志中会包含具体的错误原因,比如模型加载失败、依赖库缺失、输入数据解析错误等,这是定位问题的关键。本地验证模型预测能力
在本地环境加载自定义训练生成的模型,使用相同的csv测试数据进行预测,确认模型本身可正常运行,排除训练过程中导致的模型损坏或逻辑错误。检查KFP流水线的权限配置
确保KFP流水线使用的服务账号具备以下权限:- 读取GCS源数据存储桶的权限
- 写入GCS目标存储桶的权限
- 创建和管理Vertex AI BatchPredictionJob资源的权限
- 访问训练生成的模型资源的权限
对齐AutoML模型的输入输出格式
对比自定义模型与AutoML模型的输入处理逻辑,确认csv文件的列顺序、列名是否与模型训练时的特征完全匹配,是否存在缺失值、数据类型不兼容等问题。
内容的提问来源于stack exchange,提问作者havryliuk
相关产品推荐
相关产品推荐

