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

在Azure Pipelines中使用Az Ml CLI部署与更新Azure ML模型方案咨询

实现方案

核心逻辑说明

你需要在现有流水线中增加版本对比校验步骤,生成判断标记变量,后续的部署、更新步骤仅在对应标记满足条件时执行,避免重复无意义的操作。

修改后的完整流水线配置

steps:
- task: AzureCLI@2
  displayName: 'Install AML CLI'
  inputs:
    azureSubscription: $(ml_ws_connection)
    scriptLocation: inlineScript
    scriptType: 'bash'
    inlineScript: 'az extension add -n azure-cli-ml'

- task: AzureCLI@2
  displayName: 'Attach folder to workspace'
  inputs:
    azureSubscription: $(ml_ws_connection)
    workingDirectory: $(ml_path)
    scriptLocation: inlineScript
    scriptType: 'bash'
    inlineScript: 'az ml folder attach -w $(ml_ws) -g $(ml_rg)'

- task: AzureCLI@2
  displayName: 'Check model and service status'
  name: statusCheck
  inputs:
    azureSubscription: $(ml_ws_connection)
    workingDirectory: $(ml_path)
    scriptLocation: inlineScript
    scriptType: 'bash'
    inlineScript: |
      # 配置目标模型名称,替换为你实际的模型名
      TARGET_MODEL_NAME="model1"
      # 配置部署服务名称
      TARGET_SERVICE_NAME="$(deploy_service_name)"

      # 1. 查询最新注册的模型版本,不存在则返回空
      LATEST_MODEL_VERSION=$(az ml model list --name $TARGET_MODEL_NAME --top 1 --query "[0].version" -o tsv || echo "")
      if [ -z "$LATEST_MODEL_VERSION" ]; then
        echo "目标模型未注册,无需执行部署/更新操作"
        echo "##vso[task.setvariable variable=needOperate;isOutput=true]false"
        exit 0
      fi

      # 2. 查询当前部署服务的状态,不存在则标记需要全新部署
      SERVICE_EXISTS=$(az ml service show --name $TARGET_SERVICE_NAME --query "name" -o tsv 2>/dev/null || echo "")
      if [ -z "$SERVICE_EXISTS" ]; then
        echo "服务未部署,需要执行全新部署"
        echo "##vso[task.setvariable variable=needDeploy;isOutput=true]true"
        echo "##vso[task.setvariable variable=needUpdate;isOutput=true]false"
        echo "##vso[task.setvariable variable=needOperate;isOutput=true]true"
        exit 0
      fi

      # 3. 查询当前服务使用的模型版本,和最新版本对比
      DEPLOYED_MODEL_VERSION=$(az ml service show --name $TARGET_SERVICE_NAME --query "containerImage.modelVersions[0]" -o tsv)
      if [ "$DEPLOYED_MODEL_VERSION" == "$LATEST_MODEL_VERSION" ]; then
        echo "当前服务已经使用最新模型,无需更新"
        echo "##vso[task.setvariable variable=needOperate;isOutput=true]false"
        exit 0
      else
        echo "发现新版本模型,需要执行更新"
        echo "##vso[task.setvariable variable=needUpdate;isOutput=true]true"
        echo "##vso[task.setvariable variable=needDeploy;isOutput=true]false"
        echo "##vso[task.setvariable variable=needOperate;isOutput=true]true"
        echo "##vso[task.setvariable variable=LATEST_MODEL_VERSION;isOutput=true]$LATEST_MODEL_VERSION"
      fi

- task: AzureCLI@2
  displayName: 'Create AKS cluster'
  condition: eq(dependencies.statusCheck.outputs['statusCheck.needOperate'], 'true')
  inputs:
    azureSubscription: $(ml_ws_connection)
    workingDirectory: $(ml_path)
    scriptLocation: inlineScript
    scriptType: 'bash'
    # 新增参数避免集群已存在时报错
    inlineScript: 'az ml computetarget create aks --name $(ml_aks_name) --cluster-purpose DevTest --no-wait-if-exists'

- task: AzureCLI@2
  displayName: 'Deploy model to AKS '
  condition: eq(dependencies.statusCheck.outputs['statusCheck.needDeploy'], 'true')
  inputs:
    azureSubscription: $(ml_ws_connection)
    workingDirectory: $(ml_path)
    scriptLocation: inlineScript
    scriptType: 'bash'
    inlineScript: 'az ml model deploy --name $(deploy_service_name) --ct $(ml_aks_name) --ic config/inferenceConfig.json -e $(ml_env_name) --ev $(ml_env_version) --dc config/aksDeploymentConfig-aks.json'

- task: AzureCLI@2
  displayName: 'Update model in AKS '
  condition: eq(dependencies.statusCheck.outputs['statusCheck.needUpdate'], 'true')
  inputs:
    azureSubscription: $(ml_ws_connection)
    workingDirectory: $(ml_path)
    scriptLocation: inlineScript
    scriptType: 'bash'
    # 执行更新时指定最新版本模型,避免使用缓存配置
    inlineScript: 'az ml service update --name $(deploy_service_name) --model-id model1:$(statusCheck.LATEST_MODEL_VERSION)'

关键调整说明

  • 新增的statusCheck步骤会自动校验模型存在状态、服务部署状态、模型版本差异,输出控制后续步骤执行的标记变量
  • 所有后续步骤都增加了condition参数,仅满足触发条件时才会运行,不会执行冗余操作
  • AKS创建命令新增--no-wait-if-exists参数,集群已存在时不会抛出错误中断流水线
  • 更新步骤指定了最新的模型ID,保证升级的是当前注册的最新版本模型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:48:04