如何在Google Cloud Vertex AI中通过YAML规范记录KFP v2组件的指标
问题修复方案
你当前的配置存在三个可直接修复的问题,修正后即可在Vertex AI控制台正常展示YAML组件输出的指标:
- 代码变量名错误
你通过命令行参数解析得到的指标输出路径存放在opts.metrics变量中,但写入文件时调用了未定义的metrics_path变量,导致指标根本没有写入到组件传入的正确路径。 - 旧版本配置冲突
你添加的fileOutputs是KFP v1版本的指标配置规则,在KFP v2中已被废弃。该配置会强制运行时从固定路径/mlpipeline-metrics.json读取指标,但你实际写入的是组件动态生成的输出路径,二者不一致导致运行时无法找到指标文件。 - 输出命名不规范
Vertex AI对Metrics类型输出的识别有严格要求,带空格的输出名MLPipeline Metrics会导致路径解析异常,建议使用标准的下划线命名格式。
修正后的配置示例
组件YAML
name: a component outputs: - name: mlpipeline_metrics type: Metrics implementation: container: image: eu.gcr.io/project/knark/base:latest command: - python3 - -m - module.foo - --metrics - {outputPath: mlpipeline_metrics}
指标写入代码
import json from argparse import ArgumentParser parser = ArgumentParser() # 去掉默认值,避免错误路径 fallback 导致异常 parser.add_argument('-m', '--metrics', required=True) opts = parser.parse_args() metrics = {'cluster-entropy': .5, 'inertia': 100.} with open(opts.metrics, 'w') as f: json.dump({ 'metrics': [ {'name': m, 'value': v, 'format': 'RAW'} for m, v in metrics.items() ] }, f)
额外注意事项
- 指标名称仅可使用小写字母、数字、横杠、斜杠,不要使用大写、下划线或其他特殊字符,避免Vertex AI无法识别
- 上传流水线到Vertex AI时,确保使用KFP v2编译模式,不要启用v1兼容配置
内容的提问来源于stack exchange,提问作者sniggatooth
相关产品推荐
相关产品推荐

