Vertex AI调用ModelDeployOp报google_cloud_pipeline_components.remote模块缺失问题咨询
问题诊断
该问题属于google_cloud_pipeline_components 0.1.x版本的原生Bug,根因为该版本官方预制组件的运行容器未打包google_cloud_pipeline_components.remote模块,导致执行时触发模块找不到的报错,和流水线业务配置逻辑无关。
可行解决方案
- 方案1:升级组件库版本
直接将google-cloud-pipeline-components依赖升级到1.0.0及以上稳定版本,该版本后官方已修复模块缺失问题,同时兼容Vertex AI Pipeline的全部新特性。升级后直接使用新版的ModelDeployOp接口即可,原有传参逻辑基本无需调整。 - 方案2:自定义镜像修复老版本
如果必须使用0.1.5版本,可自行构建运行镜像,在原有镜像基础上手动安装匹配版本的依赖,替换原来的gcr.io/sashaproject-1/mb_sdk_component:latest镜像即可,参考Dockerfile如下:
构建完成后将镜像推送到自有GCP容器镜像仓库,在流水线中指定FROM gcr.io/sashaproject-1/mb_sdk_component:latest RUN pip install google-cloud-pipeline-components==0.1.5ModelDeployOp使用该自定义镜像运行。 - 方案3:封装自定义部署组件
直接使用Vertex AI Python SDK原生的deploy方法,封装为自定义KFP组件完成部署,绕过有问题的官方预制组件,自定义组件核心逻辑参考:from kfp.v2 import dsl from kfp.v2.dsl import Artifact, Input, Output @dsl.component( base_image='python:3.8', packages_to_install=['google-cloud-aiplatform'] ) def custom_model_deploy( project: str, model: Input[Artifact], endpoint: Output[Artifact], machine_type: str = 'n1-standard-4', deployed_model_display_name: str = 'my-deployed-model' ): from google.cloud import aiplatform aiplatform.init(project=project) model_obj = aiplatform.Model(model.uri) endpoint_obj = model_obj.deploy( machine_type=machine_type, deployed_model_display_name=deployed_model_display_name ) endpoint.uri = endpoint_obj.resource_name
内容的提问来源于stack exchange,提问作者Ruben
相关产品推荐
相关产品推荐

