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

如何将Azure ML实验多流水线步骤的多个模型合并注册为一个?

解决方案

完全可以将多个流水线步骤产出的模型合并注册为同一个Azure ML模型实体,以下是两种可直接落地的实现方案:

方案1:新增流水线聚合步骤(推荐,适配CI/CD流程)

在现有两个训练步骤后新增一个无计算依赖的模型聚合步骤,统一归集两个模型文件后再注册:

  • 配置该步骤的输入为两个训练步骤的输出路径
  • 步骤内执行文件归集操作,参考代码:
import os
import shutil

# 定义输入路径(对应两个训练步骤的输出)
non_eow_model_path = "<非EOW训练步骤输出路径>"
eow_model_path = "<EOW训练步骤输出路径>"
# 定义聚合输出路径
aggregate_output_path = "./merged_models"
os.makedirs(aggregate_output_path, exist_ok=True)

# 分别复制两个模型到不同子目录避免重名冲突
shutil.copytree(non_eow_model_path, os.path.join(aggregate_output_path, "non_eow_tfidf"))
shutil.copytree(eow_model_path, os.path.join(aggregate_output_path, "eow_tfidf"))
  • 注册时将aggregate_output_path作为model_path参数传入即可,整个目录会被打包为同一个模型,部署时可直接按子目录读取两个模型。

方案2:使用child_paths参数直接注册(无需修改现有流水线)

Azure ML的Model.register()方法原生支持通过child_paths参数从公共父路径下选取多个文件/目录打包为同一个模型,无需额外新增步骤:

  • 首先确认两个训练步骤输出的公共父路径,将其设置为model_path
  • 把两个模型相对于父路径的相对路径填入child_paths列表即可,参考注册代码:
from azureml.core import Model

model = Model.register(
    workspace=ws,
    model_path="<两个训练步骤输出的公共父路径>", # 例如流水线运行的根输出目录
    model_name="tfidf_dual_model",
    child_paths=[
        "Train_Data_Non_EOW_TFIDF/outputs/model.pkl", # 第一个模型的相对路径
        "Train_Data_EOW_TFIDF/outputs/model.pkl" # 第二个模型的相对路径
    ],
    tags={
        "non_eow_model_path": "non_eow_tfidf/model.pkl",
        "eow_model_path": "eow_tfidf/model.pkl"
    }
)

注意事项

注册后两个模型会被打包为同一个模型版本,部署时推理脚本可直接从模型挂载的根目录下,按子路径读取对应模型即可,无需修改原有推理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 01:36:00