Использование GitHub Actions с Машинным обучением Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

Приступите к работе с GitHub Actions, чтобы обучить модель в Машинном обучении Azure.

В этой статье описано, как создать рабочий процесс GitHub Actions, который создает и развертывает модель машинного обучения в Машинном обучении Azure. Вы обучите модель линейной регрессии scikit-learn в наборе данных о такси Нью-Йорка.

Рабочий процесс в GitHub Actions определяется файлом YAML-фалом (.yml), который размещается в репозитории (/.github/workflows/). Это определение содержит разные шаги и параметры рабочего процесса.

Необходимые компоненты

Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:

  • Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно.

Шаг 1. Получение кода

Создайте вилку для следующего репозитория на GitHub:

https://github.com/azure/azureml-examples

Клонируйте вилку репозитория локально.

git clone https://github.com/YOUR-USERNAME/azureml-examples

Шаг 2. Проверка подлинности с помощью Azure

Сначала необходимо определить способ проверки подлинности в Azure. Вы можете использовать субъект-службу или OpenID Connect.

Создание учетных данных для развертывания.

Создайте субъект-службу с помощью командыaz ad sp create-for-rbac в Azure CLI. Чтобы выполнить эту команду, откройте Azure Cloud Shell на портале Azure или нажмите кнопку Попробовать.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

Параметр --json-auth доступен в версиях >Azure CLI = 2.51.0. Версии до этого использования --sdk-auth с предупреждением об нерекомендуемом.

В указанном выше примере замените заполнители соответствующим идентификатором подписки, именем группы ресурсов и именем приложения. Выходные данные содержат объект JSON с учетными данными назначения роли, которые предоставляют доступ к приложению Службы приложений, как показано ниже. Скопируйте этот объект JSON для последующего использования.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Создание секретов

  1. В GitHub перейдите в репозиторий.

  2. Перейдите к Параметры в меню навигации.

  3. Выберите "Секреты безопасности>" и "Действия переменных>".

    Снимок экрана: добавление секрета

  4. Нажмите Создать секрет репозитория.

  5. Вставьте все выходные данные JSON, полученные из команды Azure CLI, в поле значения секрета. Присвойте секрету имя AZURE_CREDENTIALS.

  6. Выберите Добавить секрет.

Шаг 3. Обновление setup.sh для подключения к рабочей области Машинное обучение Azure

Вам потребуется обновить переменные файла установки CLI в соответствии с рабочей областью.

  1. В вилку репозитория перейдите в azureml-examples/cli/раздел .

  2. Измените setup.sh и обновите эти переменные в файле.

    «Переменная» Description
    ГРУППА имя группы ресурсов
    LOCATION Расположение рабочей области (например: eastus2)
    РАБОЧАЯ ОБЛАСТЬ Имя рабочей области Машинное обучение Azure

Шаг 4. Обновление pipeline.yml с именем вычислительного кластера

Вы будете pipeline.yml использовать файл для развертывания конвейера Машинное обучение Azure. Это конвейер машинного обучения, а не конвейер DevOps. Это обновление необходимо выполнить, только если вы используете имя, отличающееся от значения cpu-cluster для имени кластера компьютера.

  1. В вилку репозитория перейдите в azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.ymlраздел .
  2. При каждом отображении compute: azureml:cpu-cluster обновляйте значение cpu-cluster имени вычислительного кластера. Например, если кластер называется my-cluster, новое значение будет azureml:my-cluster. Доступно пять обновлений.

Шаг 5. Выполнение рабочего процесса GitHub Actions

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

Файл рабочего процесса состоит из раздела триггера и заданий:

  • Триггер запускает рабочий процесс в разделе on. Рабочий процесс запускается по умолчанию по расписанию cron и при выполнении запроса на вытягивание из соответствующих ветвей и путей. См. дополнительные сведения о событиях, которые активируют рабочие процессы.
  • В разделе заданий рабочего процесса вы можете извлечь код и войти в Azure с помощью секрета субъекта-службы.
  • В разделе заданий также содержится действие установки, которое устанавливает и настраивает CLI Машинного обучения (версия 2). После установки CLI действие задания запуска выполняет файл pipeline.yml Машинного обучения Azure для обучения модели с использованием данных о такси Нью-Йорка.

Включение рабочего процесса

  1. В вилку репозитория откройте .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml и убедитесь, что рабочий процесс выглядит следующим образом.

    name: cli-jobs-pipelines-nyc-taxi-pipeline
    on:
      workflow_dispatch:
      schedule:
        - cron: "0 0/4 * * *"
      pull_request:
        branches:
          - main
          - sdk-preview
        paths:
          - cli/jobs/pipelines/nyc-taxi/**
          - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
          - cli/run-pipeline-jobs.sh
          - cli/setup.sh
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: check out repo
          uses: actions/checkout@v2
        - name: azure login
          uses: azure/login@v1
          with:
            creds: ${{secrets.AZURE_CREDENTIALS}}
        - name: setup
          run: bash setup.sh
          working-directory: cli
          continue-on-error: true
        - name: run job
          run: bash -x ../../../run-job.sh pipeline.yml
          working-directory: cli/jobs/pipelines/nyc-taxi
    
  2. Выберите Просмотреть выполнения.

  3. Включите рабочие процессы, выбрав Я понимаю свои рабочие процессы и хочу включить их.

  4. Выберите рабочий процесс cli-jobs-pipelines-nyc-taxi-pipeline workflow и выберите Включить рабочий процесс. Снимок экрана: включение рабочего процесса GitHub Actions.

  5. Выберите Выполнить рабочий процесс и щелкните Выполнить рабочий процесс. Снимок экрана: выполнение рабочего процесса GitHub Actions.

Шаг 6. Проверка выполнения рабочего процесса

  1. Откройте завершенный рабочий процесс и убедитесь, что задание сборки выполнено успешно. Рядом с заданием появится зеленая галочка.

  2. Откройте Студию машинного обучения Azure и перейдите к примеру nyc-taxi-pipeline-example. Убедитесь, что каждая часть задания (подготовка, преобразование, обучение, прогнозирование, оценка) завершена и что отображается зеленая галочка.

    Снимок экрана: успешное выполнение Студии машинного обучения.

Очистка ресурсов

Когда вы закончите работу с группой ресурсов и репозиторием, очистите развернутые ресурсы, удалив группу ресурсов и репозиторий GitHub.

Следующие шаги