如何追踪Vertex AI Pipelines的参数与指标并对接Vertex AI Experiments
关于Vertex AI Pipelines与Experiments指标追踪的相关问题解答
Vertex AI Pipelines是否支持自动同步Kubeflow流水线指标到Experiments?
是支持的,使用Vertex AI SDK 1.18及以上版本时,Kubeflow(KFP)流水线运行默认可以关联到Vertex AI Experiments的实验记录条目。你只需要在提交流水线任务时指定对应的实验名称,流水线各组件通过KFP标准输出定义的参数、指标、可视化内容都会自动同步到对应实验的记录中,无需额外开发。提交示例如下:
from google.cloud import aiplatform job = aiplatform.PipelineJob( display_name="your-pipeline-name", template_path="pipeline.yaml", experiment="your-experiment-name", # 指定要关联的实验名称 parameter_values={"epoch": 10} ) job.submit()
如何获取流水线运行ID并手动上报指标?
可以直接获取流水线运行ID手动上报指标,获取方式有两种:
- 在Vertex AI控制台的「流水线」页面,找到对应运行任务的详情页,可直接查看运行ID
- 若通过SDK提交任务,可从返回的
PipelineJob对象的resource_name属性中提取,格式为projects/<项目ID>/locations/<区域>/pipelineJobs/<运行ID>,最后一段即为运行ID;流水线组件内部也可以直接读取内置环境变量KFP_PIPELINE_JOB_ID获取运行ID,无需额外传参
拿到ID后即可调用SDK手动上报指标和参数,示例代码如下:
from google.cloud import aiplatform import os # 初始化SDK aiplatform.init(project="your-project-id", location="your-region") # 组件内部可直接从环境变量获取运行ID pipeline_job_id = os.getenv("KFP_PIPELINE_JOB_ID") pipeline_job = aiplatform.PipelineJob.get(f"projects/your-project-id/locations/your-region/pipelineJobs/{pipeline_job_id}") # 获取关联的实验run对象 experiment_run = aiplatform.ExperimentRun.get(pipeline_job.experiment_run_name) # 手动上报参数和指标 experiment_run.log_params({"batch_size": 32, "learning_rate": 1e-4}) experiment_run.log_metrics({"val_accuracy": 0.92, "train_loss": 0.15})
其他可用于Vertex AI Pipelines的实验追踪方案
除了Vertex AI Experiments外,还有以下常用方案可选:
- MLflow:你可以在流水线组件中引入MLflow客户端,将指标、参数、模型产物上报到自行托管的MLflow实例,或者使用Vertex AI托管的MLflow服务,数据可持久化存储在谷歌云存储中
- Weights & Biases (W&B):在组件中安装W&B SDK,配置好API密钥后即可同步训练过程指标、模型版本、数据集版本到W&B看板,适合需要丰富可视化能力和团队协作的场景
- KFP原生指标看板:如果不需要和Vertex AI Experiments打通,KFP本身支持在控制台直接展示所有组件输出的标准指标,无需额外接入第三方服务
- 自定义结构化存储:可以将指标、参数统一整理为结构化数据后存入BigQuery,配合Looker等BI工具制作自定义看板,适合需要和内部业务数据打通分析的场景
内容的提问来源于stack exchange,提问作者sniggatooth
相关产品推荐
相关产品推荐

