如何在Vertex AI管道中获取模型资源名称对应的真实model ID?
问题
现有一段Kubeflow管道代码:
training_op = gcc_aip.AutoMLTabularTrainingJobRunOp( project=project, display_name=display_name, optimization_prediction_type="classification", budget_milli_node_hours=1000, column_transformations=[ ... ], dataset=dataset_create_op.outputs["dataset"], target_column="Class", ) model_to_evaluate= training_op.outputs["model"] model_id=model_to_evaluate.name
这段代码能正常运行,但model_id的值一直是'model',拿不到模型资源名称末尾的真实ID——就是类似projects/{PROJECT}/locations/{LOCATION}/models/{model_id}里{model_id}对应的那部分内容。
解决方案
要获取真实的模型ID,得解析model_to_evaluate的完整资源名称,不能直接用.name属性。这里提供两种可行的方法:
方法1:拆分资源名称字符串
直接用Python字符串拆分,从完整路径里提取最后一段:
model_resource_name = model_to_evaluate.value model_id = model_resource_name.split("/")[-1]
方法2:用Google Cloud官方工具解析
如果项目里已经依赖google-cloud-aiplatform库,也可以用官方的资源解析方式:
方式A:通过Model类提取
from google.cloud.aiplatform import Model model = Model(model_name=model_to_evaluate.value) model_id = model.resource_name.split("/")[-1]
方式B:用资源名称工具类
from google.api_core import resource_name_utils model_id = resource_name_utils.extract_resource_id(model_to_evaluate.value, "models")
内容的提问来源于stack exchange,提问作者schoon
相关产品推荐
相关产品推荐

