You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:18:43