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

如何用Azure DevOps部署Azure ML Studio Pipeline训练的最优模型

用Azure ML Pipeline训练后通过Azure DevOps部署最优模型的方案

1. 调整Azure ML Pipeline,确保模型注册时携带关键元数据

在你的Azure ML Pipeline训练步骤中,完成模型训练后注册模型时,要把用于筛选最优模型的核心指标(如准确率、AUC、损失值等)作为模型标签或属性一并注册,让所有训练产出的模型都带着可用于筛选的标识存入Azure ML工作区的模型注册表。示例代码:

from azureml.core import Model

# model为训练好的模型对象,metrics为包含评估指标的字典
Model.register(
    workspace=ws,
    model_path="./trained_model.pkl",
    model_name="customer-churn-model",
    tags={"experiment_id": "exp-20240520", "training_batch": "batch-003"},
    properties={"test_accuracy": str(0.93), "validation_auc": str(0.96)}
)

2. 在Azure DevOps CI流水线中对接Azure ML Pipeline运行结果

在DevOps的CI流水线里添加任务,触发Azure ML Pipeline并捕获其产出的模型信息:

  • 用Azure CLI任务触发Pipeline并获取运行元数据:
    az ml pipeline create --experiment-name churn-pred-exp --pipeline-id <你的Pipeline ID> --output-metadata-file pipeline-run-info.json
    
  • 等待Pipeline运行完成后,查询该实验下注册的所有模型并导出为JSON文件:
    az ml model list --workspace-name <你的工作区名> --resource-group <资源组名> --query "[?tags.experiment_id=='exp-20240520']" --output json > registered-models.json
    

将registered-models.json作为CI工件发布,供后续CD流水线使用。

3. 在Azure DevOps CD流水线中筛选最优模型

CD流水线启动后,加载CI阶段传递的模型列表文件,编写脚本(Python/PowerShell均可)按预定义规则筛选最优模型:

  • 示例Python脚本逻辑:
    import json
    
    with open("registered-models.json", "r") as f:
        models = json.load(f)
    
    # 按测试准确率降序排序,取第一个作为最优模型
    sorted_models = sorted(models, key=lambda x: float(x["properties"]["test_accuracy"]), reverse=True)
    best_model = sorted_models[0]
    
    # 将最优模型的名称和版本写入DevOps流水线变量,供后续部署任务调用
    print(f"##vso[task.setvariable variable=BestModelName]{best_model['name']}")
    print(f"##vso[task.setvariable variable=BestModelVersion]{best_model['version']}")
    

4. 在CD流水线中部署最优模型到目标环境

使用Azure CLI任务,基于上一步得到的模型名称和版本,部署到目标环境(ACI/AKS等):

  • 示例部署到ACI的命令:
    az ml model deploy --name churn-pred-endpoint --model-name $(BestModelName) --model-version $(BestModelVersion) --resource-group <资源组名> --workspace-name <工作区名> --compute-target aci --instance-count 1 --sku Standard_DS2_v2
    

若部署到AKS,只需调整--compute-target为你的AKS集群名称,并按需配置副本数、资源限制等参数。

替代原元数据传递的核心逻辑

之前手动传递训练元数据工件的方式,现在替换为:

  1. 模型及其元数据直接存储在Azure ML工作区的模型注册表中
  2. DevOps流水线通过查询Azure ML工作区获取模型元数据,无需手动传递文件
  3. 基于注册表中的元数据筛选最优模型,再触发部署流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:55:22