Azure AML训练管道指标仅单步骤显示 如何实现作业级指标跟踪
问题根因
Azure Machine Learning 管道的指标按作业层级隔离存储:你在模型评估子步骤中通过日志接口记录的r2、mae等指标,默认仅归属到该子步骤对应的子作业Run实例,顶层管道父作业本身没有写入对应指标记录,因此不会在作业概览页的「Job Metrics」板块展示。
相关页面对比:
无指标展示的作业概览页
可正常查看指标的模型评估步骤页
可行实现方案
方案1:管道运行后批量同步子步骤指标到顶层作业(推荐,无需修改原有训练/评估逻辑)
该方案完全不需要改动你现有评估步骤的日志代码,只需要在管道提交侧加一段同步逻辑即可,适合已经上线运行的存量管道:
- 提交管道作业后,等待评估步骤执行完成(或等待整个管道运行结束)
- 分别获取顶层管道作业、评估子步骤的Run实例
- 拉取评估子步骤下的全量指标,批量写入顶层管道作业即可
Azure ML Python SDK v2 实现代码:
from azure.ai.ml import MLClient from azure.identity import DefaultAzureCredential # 初始化工作区连接 ml_client = MLClient( DefaultAzureCredential(), subscription_id="<替换为你的订阅ID>", resource_group_name="<替换为你的资源组名称>", workspace_name="<替换为你的AML工作区名称>" ) # 获取顶层管道作业,替换为你自己的管道作业ID/名称 pipeline_job = ml_client.jobs.get(name="<你的管道作业名称>") # 获取评估子步骤作业,替换为你管道中评估节点的实际命名 eval_job = ml_client.jobs.get(name=f"{pipeline_job.name}/<评估步骤的节点名>") # 拉取评估步骤的所有指标 eval_metrics = ml_client.jobs.get_metrics(eval_job.name) # 批量写入顶层作业 for metric_name, metric_val in eval_metrics.items(): ml_client.jobs.log_metric( job_name=pipeline_job.name, metric_name=metric_name, metric_value=metric_val )
注意事项:
- 标量指标、时序列表指标、图表类指标都支持直接同步,无需额外格式转换
- 如果用服务主体执行同步逻辑,需要给该主体分配工作区的
AzureML Data Scientist及以上权限,否则会报403无写入权限- 写入完成后等待1-2分钟刷新作业概览页即可看到指标,和子步骤页展示效果一致
方案2:在评估脚本内直接给父作业写入指标(适合可修改步骤脚本的场景)
如果你可以调整评估步骤的执行代码,可以在记录子步骤指标的同时,直接拿到顶层父作业的上下文同步写入指标,不需要额外的后置同步步骤:
from azureml.core import Run # 获取当前评估步骤的Run实例 current_step_run = Run.get_context() # 循环获取最顶层的管道父作业(适配多层嵌套管道场景) root_pipeline_run = current_step_run while root_pipeline_run.parent: root_pipeline_run = root_pipeline_run.parent # 你的原有指标计算逻辑 r2_score = 0.93 mae_score = 0.12 # 保留原有子步骤日志逻辑,保证子步骤页可正常查看指标 current_step_run.log("r2", r2_score) current_step_run.log("mae", mae_score) # 同步写入顶层父作业 root_pipeline_run.log("r2", r2_score) root_pipeline_run.log("mae", mae_score)
方案3:组件化管道通过标量输出自动聚合(适合SDK v2 组件式开发场景)
如果你是用AML v2组件化模式编写的管道,可以直接把需要在顶层展示的指标定义为组件的数字类型输出,AML会自动把这类标量输出聚合到顶层作业的Job Metrics板块,不需要手动写日志同步逻辑:
- 在评估组件的YAML定义中,新增
number类型的指标输出:
# 评估组件yaml片段 outputs: r2: type: number description: 模型测试集R2得分 mae: type: number description: 模型测试集MAE指标
- 在评估脚本的末尾,把计算得到的指标值写入对应输出路径的JSON文件即可,管道运行时会自动识别并展示到顶层概览页。
内容的提问来源于stack exchange,提问作者akshat garg
相关产品推荐
相关产品推荐

