You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AutoMLImageTrainingJobRunOp实现模型版本控制?

在Vertex AI流水线中实现AutoML模型版本控制的代码方案

针对你提到的AutoMLImageTrainingJobRunOp没有parent_model参数的问题,有两种可行的代码实现方式:

方法一:用原生SDK封装训练逻辑到流水线

原生的AutoMLImageTrainingJob类支持指定parent_model参数,你可以通过PythonFunctionOp将该训练逻辑封装进流水线,实现模型版本迭代:

from kfp.v2 import dsl
from kfp.v2.dsl import component
from google.cloud import aiplatform

@component(base_image="google-cloud-aiplatform:latest")
def train_automl_image_version(parent_model_resource_name: str, project: str, location: str, dataset_resource_name: str):
    aiplatform.init(project=project, location=location)
    
    # 初始化AutoML图像训练任务,指定父模型
    training_job = aiplatform.AutoMLImageTrainingJob(
        display_name="automl-image-versioned-training",
        prediction_type="classification", # 根据你的任务类型调整
        multi_label=False, # 根据你的任务类型调整
        parent_model=parent_model_resource_name
    )
    
    # 启动训练,关联数据集
    model = training_job.run(
        dataset=dataset_resource_name,
        model_display_name="automl-image-model-v2",
        training_fraction_split=0.8,
        validation_fraction_split=0.1,
        test_fraction_split=0.1,
        sync=False
    )
    return model.resource_name

# 定义流水线
@dsl.pipeline(name="automl-image-versioning-pipeline")
def pipeline(
    project: str = "your-project-id",
    location: str = "us-central1",
    parent_model_resource_name: str = "projects/your-project-id/locations/us-central1/models/your-parent-model-id",
    dataset_resource_name: str = "projects/your-project-id/locations/us-central1/datasets/your-dataset-id"
):
    train_task = train_automl_image_version(
        parent_model_resource_name=parent_model_resource_name,
        project=project,
        location=location,
        dataset_resource_name=dataset_resource_name
    )

方法二:训练后上传为父模型的新版本

如果必须使用AutoMLImageTrainingJobRunOp,可以在训练完成后,将生成的模型通过Model.upload关联到父模型,创建新版本:

from kfp.v2 import dsl
from kfp.v2.dsl import component
from google_cloud_pipeline_components.v1.automl import AutoMLImageTrainingJobRunOp
from google.cloud import aiplatform

@component(base_image="google-cloud-aiplatform:latest")
def create_model_version(parent_model_resource_name: str, trained_model_resource_name: str, project: str, location: str):
    aiplatform.init(project=project, location=location)
    
    # 获取训练生成的模型信息
    trained_model = aiplatform.Model(trained_model_resource_name)
    
    # 上传为父模型的新版本
    model_version = aiplatform.Model.upload(
        display_name="automl-image-model-v2",
        parent_model=parent_model_resource_name,
        artifact_uri=trained_model.uri,
        serving_container_image_uri=trained_model.serving_container_image_uri
    )
    return model_version.resource_name

# 定义流水线
@dsl.pipeline(name="automl-image-versioning-pipeline")
def pipeline(
    project: str = "your-project-id",
    location: str = "us-central1",
    parent_model_resource_name: str = "projects/your-project-id/locations/us-central1/models/your-parent-model-id",
    dataset_resource_name: str = "projects/your-project-id/locations/us-central1/datasets/your-dataset-id"
):
    # 用AutoMLImageTrainingJobRunOp完成训练
    train_task = AutoMLImageTrainingJobRunOp(
        project=project,
        location=location,
        display_name="automl-image-training",
        prediction_type="classification",
        multi_label=False,
        dataset=dataset_resource_name,
        model_display_name="temp-automl-model"
    )
    
    # 将训练后的模型转为父模型的新版本
    create_version_task = create_model_version(
        parent_model_resource_name=parent_model_resource_name,
        trained_model_resource_name=train_task.outputs["model"],
        project=project,
        location=location
    )

注意事项

  • 确保使用的服务账号拥有aiplatform.models.createVersion等相关权限
  • parent_model_resource_name需要替换为你现有AutoML模型的完整资源名称,可通过Vertex AI控制台或aiplatform.Model.list()获取

内容的提问来源于stack exchange,提问作者schoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:35:24