Azure Pipelines

已完成

自动化工作流的一个选项是使用 Azure Pipelines,它是 Azure DevOps Services 的一部分。 通过 Azure Pipelines,可以自动生成、测试和部署代码。

在机器学习项目中,可以使用 Azure Pipelines 创建任何 Azure 机器学习工作区资产(例如工作区本身、数据资产、计算群集或作业),以运行 Azure 机器学习管道。

注意

若要将 Azure Pipelines 与 Azure 机器学习管道配合使用,需要通过服务连接将 Azure DevOps 连接到 Azure 机器学习工作区

你将了解如何使用 Azure Pipelines 运行 Azure 机器学习管道。

创建 Azure 管道

每当发生触发时,Azure Pipelines 便执行步骤,以此帮助自动执行工作。 若要使用 Azure Pipelines 自动执行机器学习工作负载,请使用 Azure Pipelines 触发 Azure 机器学习管道。

管道层次结构的关系图。

  1. 触发 Azure 管道。 通常伴随存储库更改(提交或拉取请求)。
  2. 运行 Azure 管道,Azure 管道是一组由步骤组成的作业。
  3. 步骤会启动 Azure 机器学习管道。
  4. Azure 机器学习管道会运行脚本或 Azure 机器学习组件。
  5. 脚本或组件代表机器学习任务。

若要创建 Azure 管道,请定义要加入 YAML 文件的步骤。 在 Azure 管道的 YAML 文件中,你将加入:

  • 触发器:启动管道的事件。
  • 阶段:一组任务通常与不同的开发环境(开发/测试/生产)保持一致。
  • 作业:在 代理上运行的一组步骤。 对于机器学习工作负载,可能会使用 Microsoft 托管的 Ubuntu 代理。
  • 步骤:要执行的脚本或任务。 例如,启动 Azure 机器学习管道的一个 CLI 命令 (az ml job create)。

若要在对 Azure 存储库进行任何更改时运行 Azure 机器学习管道,可以使用如下所示的 YAML 文件:

trigger: 
- main

stages:
- stage: deployDev
  displayName: 'Deploy to development environment'
  jobs:
    - deployment: publishPipeline
      displayName: 'Model Training'
      pool:
        vmImage: 'Ubuntu-18.04'
      environment: dev
      strategy:
       runOnce:
         deploy:
          steps:
          - template: aml-steps.yml
            parameters:
              serviceconnectionname: 'spn-aml-workspace-dev'

管道中的作业使用 aml-steps.yml 列出应执行的步骤。 若要运行在 pipeline-job.yml 中定义的 Azure 机器学习管道,可以使用 CLI (v2)。 若要将 Azure 机器学习管道作为 Azure 管道中的步骤运行,则需要:

  1. 安装适用于 CLI 的 Azure 机器学习扩展。
  2. 使用 az ml job create 命令运行 Azure 机器学习中的管道作业。

用于安装和 Azure 机器学习作业启动的 aml-steps.yml 文件可能如下所示:

parameters:
- name: serviceconnectionname
  default: ''

steps:
- checkout: self

- script: az extension add -n ml -y
  displayName: 'Install Azure ML CLI v2'

- task: AzureCLI@2
  inputs:
    azureSubscription: ${{ parameters.serviceconnectionname }}
    scriptType: bash
    scriptLocation: inlineScript
    workingDirectory: $(Build.SourcesDirectory)
    inlineScript: |
      cd src
      az ml job create --file aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws
  displayName: 'Run Azure Machine Learning Pipeline'

如示例中所示,可以在整个管道定义中使用参数(如 serviceconnectionname),使 YAML 文件更加可以重复用于其他项目。

使用 Azure DevOps 运行管道

创建 YAML 文件并将其存储在 Azure 存储库中后,可以将 Azure DevOps 配置为运行管道。

Azure DevOps 中管道配置的屏幕截图。

  1. 在 Azure DevOps 中,导航到“管道”选项卡并选择“管道”。
  2. 创建新管道。
  3. 选择“Azure Repos Git”作为代码的位置。
  4. 选择包含代码的存储库。
  5. 选择“现有 Azure Pipelines”YAML 文件。
  6. 选择指向你为 Azure 管道创建的 YAML 文件的路径。
  7. 查看管道后,可以单击“保存并运行”。

管道通过提交到主分支触发。 配置管道时,Azure Pipelines 会将更改提交到主分支,这会触发管道首次运行。 设置后,可以随时通过将提交从 Visual Studio Code 或 Azure Repos 推送到存储库来触发管道。

Azure Pipelines 中失败作业的屏幕截图。

选择作业时,可以查看其进度。 作业中的每个步骤都反映在左侧导航窗格中。 概览将显示哪些步骤已成功运行,以及哪些步骤失败。 选择该步骤时,命令行界面中会显示任何潜在的错误消息。 通过查看输出,可以排查错误。

当任务触发要运行的 Azure 机器学习管道时,还可通过查看 Azure 机器学习工作区中的管道运行来查看可能感兴趣的任何指标或错误。