Python调用Vertex AI:模型/项目ID查询及批预测列排除问题
一、通过名称获取模型ID与项目ID
1. 获取模型ID
使用Vertex AI Python SDK的list_models方法,通过筛选模型名称来获取对应ID,示例代码如下:
from google.cloud import aiplatform aiplatform.init(project="你的项目ID", location="你的区域") # 根据模型名称筛选模型 models = aiplatform.Model.list(filter='display_name="My_Model"') if models: # 从资源名称中提取模型ID model_id = models[0].resource_name.split('/')[-1] print(f"模型ID: {model_id}") else: print("未找到指定名称的模型")
如果存在重名模型,可在筛选条件中添加版本限制,例如filter='display_name="My_Model" AND model_version_id="v1"'。
2. 获取项目ID
Google Cloud没有直接通过项目名称获取ID的SDK函数,可借助Resource Manager API实现,示例代码如下:
from google.cloud import resource_manager client = resource_manager.Client() # 遍历项目列表匹配名称 for project in client.list_projects(): if project.name == "你的项目名称": project_id = project.project_id print(f"项目ID: {project_id}") break else: print("未找到指定名称的项目")
若需限定特定文件夹范围,可在list_projects中添加参数parent=f"folders/{你的文件夹ID}"缩小检索范围。
二、批预测保留行ID且不参与预测
可以通过指定特征列的方式实现,在提交批预测作业时,明确告诉模型仅使用所需的特征列,忽略ID列,示例代码如下:
from google.cloud import aiplatform aiplatform.init(project="你的项目ID", location="你的区域") # 加载目标模型 model = aiplatform.Model(model_name=f"projects/你的项目ID/locations/你的区域/models/{你的模型ID}") # 提交批预测作业,指定模型所需特征列 batch_prediction_job = model.batch_predict( job_display_name="带ID的批预测作业", bigquery_source=f"bq://你的项目ID.你的数据集.你的输入表", bigquery_destination_prefix=f"bq://你的项目ID.你的数据集", prediction_parameters={ "feature_columns": ["特征列1", "特征列2"] # 仅填入模型需要的特征列,排除ID列 } ) batch_prediction_job.wait()
此方式下,ID列不会被传入模型参与预测,同时输出表会自动保留原输入表的ID列与预测结果,避免模型因识别到非特征列报错。
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

