Azure Pipelines

Завершено

Для автоматизации рабочих процессов можно использовать службу Azure Pipelines, входящую в состав Azure DevOps Services. Azure Pipelines позволяет автоматизировать компиляцию, тестирование и развертывание кода.

В проекте машинного обучения вы можете использовать Azure Pipelines для создания любых ресурсов рабочей области Машинного обучения Azure, таких как сама рабочая область, ресурсы данных, вычислительные кластеры или задания для запуска конвейеров.

Примечание.

Чтобы использовать Azure Pipelines с конвейерами Машинного обучения Azure, необходимо подключить Azure DevOps к рабочей области Машинного обучения Azure через подключение к службе.

Далее вы научитесь использовать Azure Pipelines для запуска конвейера Машинного обучения Azure.

Создание конвейера Azure

Azure Pipelines помогает автоматизировать работу, выполняя определенные действия при срабатывании триггера. Чтобы использовать службу Azure Pipelines для автоматизации рабочих нагрузок машинного обучения, вы активируете конвейер Машинного обучения Azure с ее помощью.

Диаграмма: иерархия конвейеров.

  1. Активация конвейера Azure Pipelines. Обычно при этом вносится изменение в репозиторий (фиксацией или запросом на вытягивание).
  2. Запуск конвейера Azure Pipelines — группы заданий, состоящих из определенных шагов.
  3. Определенный шаг запускает конвейер Машинного обучения Azure.
  4. Конвейер Машинного обучения Azure запускает сценарии или компоненты Машинного обучения Azure.
  5. Сценарий или компонент представляет задачу машинного обучения.

Чтобы создать конвейер Azure Pipelines, необходимо определить шаги, которые будут включены в файл YAML. В YAML-файл конвейера Azure Pipelines необходимо включить следующее:

  • Триггер — при каком событии запускается конвейер.
  • Этап — группа заданий, обычно соответствующая различным средам разработки (разработка/тестирование/рабочая среда).
  • Задание — набор шагов, выполняемых на агенте. Для рабочих нагрузок машинного обучения вы, скорее всего, будете использовать агент Ubuntu, размещаемый в системах Майкрософт.
  • Шаг — сценарий или задача, которые вы хотите выполнить. Например, это может быть команда CLI, запускающая конвейер Машинного обучения Azure (az ml job create).

Совет

См. дополнительные сведения об основных понятиях, используемых в Azure Pipelines.

Для запуска конвейера Машинного обучения Azure при любом изменении в репозитории Azure Repos можно использовать подобный 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 для перечисления шагов, которые нужно выполнить. Для запуска конвейера Машинного обучения Azure, определенного в pipeline-job.yml, можно использовать CLI (версия 2). Для запуска конвейера Машинного обучения Azure в качестве шага в конвейере Azure Pipelines нужно будет:

  1. установить расширение Машинного обучения Azure для CLI;
  2. использовать команду az ml job create для выполнения задания конвейера в Машинном обучении Azure.

Файл aml-steps.yml для установки и запуска задания Машинного обучения Azure может выглядеть следующим образом:

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 Repos вы можете настроить Azure DevOps для запуска конвейера.

Снимок экрана: конфигурация конвейера в Azure DevOps.

  1. Находясь в Azure DevOps, перейдите на вкладку Pipelines и выберите Pipelines.
  2. Создайте конвейер.
  3. Выберите Azure Repos Git в качестве расположения кода.
  4. Выберите репозиторий, содержащий ваш код.
  5. Выберите Существующий файл YAML Azure Pipelines.
  6. Укажите путь к файлу YAML, созданному для конвейера Azure Pipelines.
  7. Проверив конвейер, вы можете сохранить и запустить его.

Конвейер активируется фиксацией в главной (main) ветви. Когда вы настроите конвейер, Azure Pipelines зафиксирует изменение в main-ветви, которое активирует первый запуск конвейера. После настройки вы сможете запускать конвейер когда угодно, отправляя в репозиторий фиксации из Visual Studio Code или Azure Repos.

Снимок экрана: задание со сбоем в Azure Pipelines.

Выбрав задание, вы можете просмотреть его работу. Каждый шаг задания отражается в области навигации слева. В обзоре показано, какие шаги успешно выполнены и какие из них завершились сбоем. При выборе шага в интерфейсе командной строки отобразятся все возможные сообщения об ошибках. Изучив выходные данные, вы сможете устранить ошибку.

Когда задача активирует запуск конвейера Машинного обучения Azure, вы также сможете просмотреть выполнение конвейера в рабочей области Машинного обучения Azure, чтобы найти интересующие вас метрики или ошибки.