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

Automated ML数据触发调度流水线未自动触发问题求助

问题描述

我配置了两条Azure ML流水线:

  • 流水线1:将数据从Blob存储上传至数据存储(更新数据资产)
  • 流水线2:模型训练

同时设置了两个调度:

  • 调度1:每10分钟触发一次流水线1
  • 调度2:数据存储路径dstore/DATASET_NAME下有新数据时触发流水线2

调度1代码:

schedule = Schedule.create(
    workspace=ws,
    name="data_ingestion_schedule",
    description="Schedule that updates the Dataset",
    pipeline_parameters={"ds_name": DATASET_NAME},
    pipeline_id=published_pipeline.id,  # id of the published data upload pipeline
    experiment_name=EXPERIMENT_NAME,
    recurrence=ScheduleRecurrence(frequency="Minute", interval=10),
    wait_for_provisioning=True
)

调度2代码:

schedule = Schedule.create(
    workspace=ws,
    name="retraining_schedule",
    description="Schedule that triggers training pipeline",
    pipeline_parameters={"ds_name": DATASET_NAME, "model_name": MODEL_NAME},
    pipeline_id=published_pipeline.id,  # id of the published training pipeline
    experiment_name=EXPERIMENT_NAME,
    datastore=dstor,
    path_on_datastore=DATASET_NAME,
    wait_for_provisioning=True,
    polling_interval=5
)

目前的问题是:即使目标数据存储路径下的数据发生变更,调度2始终无法触发流水线2。我已尝试更换工作区、数据存储及存储路径,均未解决问题。

理想流程:上传新数据至Blob存储→调度1触发流水线1更新数据存储→调度2触发流水线2基于新数据重新训练模型

排查与解决方案

1. 确认路径配置准确性

检查path_on_datastore参数是否指向数据存储内的正确相对路径:

  • 代码中path_on_datastore=DATASET_NAME,需确保该值对应数据存储内的实际文件夹路径(而非数据集名称)
  • 通过datastore.path(path_on_datastore).exists()代码或Azure ML工作室验证路径是否真实存在

2. 检查数据变更触发条件

Azure ML数据存储调度仅对文件最后写入时间变更敏感,以下情况不会触发:

  • 仅修改文件元数据(如权限)
  • 上传文件的最后写入时间早于调度创建时间
  • 文件上传后被快速删除(调度未完成检测)

上传新文件后,需等待至少设置的polling_interval时长(当前为5分钟)再查看触发记录。

3. 验证调度权限与状态

  • 确认创建调度的账号/服务主体拥有数据存储的读取权限和流水线的触发权限
  • 在Azure ML工作室的「流水线→调度」页面,检查目标调度的状态是否为「已启用」,并查看是否有权限相关报错日志

4. 修正流水线ID赋值错误

调度2代码中pipeline_id=published_pipeline.id需确保对应已发布的训练流水线,而非数据上传流水线。建议分别存储两个流水线的发布ID:

# 发布数据上传流水线
published_upload_pipeline = pipeline_upload.publish(name="data_upload_pipeline", version="1.0")
# 发布训练流水线
published_training_pipeline = pipeline_train.publish(name="training_pipeline", version="1.0")

# 调度1绑定上传流水线
schedule1 = Schedule.create(
    workspace=ws,
    name="data_ingestion_schedule",
    # 其他参数
    pipeline_id=published_upload_pipeline.id,
    # 其他参数
)

# 调度2绑定训练流水线
schedule2 = Schedule.create(
    workspace=ws,
    name="retraining_schedule",
    # 其他参数
    pipeline_id=published_training_pipeline.id,
    # 其他参数
)

5. 查看调度运行日志

在Azure ML工作室进入对应工作区,依次点击:「流水线→调度→选中目标调度→运行历史记录」,查看是否有数据变更检测失败的具体错误信息。

6. 替代触发方案

若以上方法无效,可绕过数据存储调度逻辑:

  • 在流水线1的最后一步添加代码,直接调用训练流水线的REST API触发运行
  • 使用Azure Logic Apps或Azure Functions监听Blob存储的文件变更事件,再触发Azure ML流水线

内容的提问来源于stack exchange,提问作者Ashyam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:01:11