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

Azure ML Pipeline:如何在计算节点上构建指定输入目录结构

解决Azure ML Pipeline中构建指定数据目录结构的问题

要让你的Python脚本在Azure ML计算节点上找到预期的data/目录结构,核心思路是将每个挂载的URI_FOLDER数据资产,映射到计算节点上data/下对应的子目录中,以下是两种可行方案:

方案一:通过Bash命令在执行脚本前构建目录结构

这种方案无需修改原有Python脚本,直接在Pipeline的command步骤中先创建目标目录结构,再将挂载的项目文件复制/链接到对应位置:

prep = command(
    name="preprocessing",
    code="./src/preprocessing.py",
    inputs=dict(
        project_A=Input(type=AssetTypes.URI_FOLDER, mode=InputOutputModes.RO_MOUNT),  
        project_B=Input(type=AssetTypes.URI_FOLDER, mode=InputOutputModes.RO_MOUNT),
        # 添加其他project输入
    ),
    command="""
        # 创建data目录及各项目子目录
        mkdir -p data/project_A data/project_B && \
        # 将挂载的项目文件复制到对应子目录(大文件建议用ln -s软链接替代cp -r)
        cp -r ${{inputs.project_A}}/* data/project_A/ && \
        cp -r ${{inputs.project_B}}/* data/project_B/ && \
        # 执行脚本并传入base_dir参数
        python preprocessing.py ./data
    """,
)

关键说明:

  • ${{inputs.project_A}}是Azure ML SDK v2的模板语法,会自动替换为该输入资产在计算节点上的实际挂载路径
  • 若处理大文件,用ln -s ${{inputs.project_A}}/* data/project_A/替代复制命令,避免占用额外存储且效率更高

方案二:修改Python脚本适配挂载路径(适合允许改动脚本的场景)

如果可以调整原有脚本的逻辑,可直接将每个项目的挂载路径作为参数传入,让脚本直接遍历这些路径处理数据,无需依赖data/目录结构:

  1. 修改Pipeline组件定义:
prep = command(
    name="preprocessing",
    code="./src/preprocessing.py",
    inputs=dict(
        project_A=Input(type=AssetTypes.URI_FOLDER, mode=InputOutputModes.RO_MOUNT),  
        project_B=Input(type=AssetTypes.URI_FOLDER, mode=InputOutputModes.RO_MOUNT),
        # 添加其他project输入
    ),
    command="python preprocessing.py ${{inputs.project_A}} ${{inputs.project_B}}",
)
  1. 调整preprocessing.py的逻辑:
    不再接收单个base_dir参数,而是接收多个项目路径,直接遍历每个路径下的data.csv和config.toml文件进行处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:22:40