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

AzureML Pipeline组件间如何共享代码?

解决AzureML v2 Pipeline组件共享辅助函数的问题

目录结构规范

先梳理清晰项目结构,确保共享模块能被正确识别:

my_pipeline_project/
├── shared_utils/          # 单独存放共享辅助函数的目录
│   ├── __init__.py        # 必须添加,让目录成为可导入的Python模块
│   └── helper_functions.py  # 你的辅助函数实现
├── component_a/
│   ├── component.yaml
│   └── component_script.py
├── component_b/
│   ├── component.yaml
│   └── component_script.py

__init__.py可以是空文件,也可以直接导出常用函数,比如在文件内写from .helper_functions import my_shared_func,后续组件可直接简化导入逻辑。

组件YAML的正确配置

每个组件的YAML中,code字段仅指定共享目录和当前组件脚本目录,使用相对路径数组(注意路径是相对于YAML文件所在位置),避免解析错误:
以component_a的yaml为例:

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: component_a
display_name: Component A
version: 1
type: command
inputs:
  input_data:
    type: uri_file
outputs:
  output_data:
    type: uri_file
code:
  - ../shared_utils/  # 指向共享目录的相对路径
  - ./                # 当前组件的脚本目录
environment: azureml:your_environment_name:1
command: >-
  python component_script.py
  --input_data ${{inputs.input_data}}
  --output_data ${{outputs.output_data}}

之前用列表报错,大概率是路径写法错误(比如用了绝对路径、路径相对于项目根而非YAML所在目录,或者目录不存在),按上述相对路径写法即可避免。

组件脚本的导入方式

在组件脚本中直接导入共享模块:

from shared_utils.helper_functions import my_shared_func

# 正常使用共享函数
processed_data = my_shared_func(input_data)

问题根源说明

  1. YAML配置code列表报错:核心是路径格式错误,AzureML v2要求code的路径必须是相对于当前YAML文件的相对路径,绝对路径或错误的相对路径会触发解析失败。
  2. 父目录作为code导致运行缓慢:父目录包含大量无关文件,AzureML会打包整个目录上传到计算目标,文件体积过大直接拖慢启动速度,仅指定必要目录可大幅减少上传体量。

额外优化方案

  • 如果共享模块依赖第三方包,确保组件使用的AzureML环境已预装这些依赖。
  • 若共享模块逻辑复杂,可将其打包成wheel包上传到工作区的包仓库,组件通过pip install直接安装该包,这种方式更适合长期维护的共享模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:46:01