Поделиться через


Использование 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/ пути в репозитории. Это определение содержит разные шаги и параметры рабочего процесса.

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

  • Рабочая область Машинного обучения Azure. Инструкции по созданию рабочей области см. в разделе "Создание рабочей области".

  • Пакет SDK машинного обучения Azure для Python версии 2. Чтобы установить пакет SDK, используйте следующую команду:

    pip install azure-ai-ml azure-identity
    

    Чтобы обновить существующую установку пакета SDK до последней версии, выполните следующую команду:

    pip install --upgrade azure-ai-ml azure-identity
    

    Для получения дополнительной информации см. библиотеку клиента пакета Azure Machine Learning для Python.

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

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

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

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

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

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

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

Сначала необходимо определить способ проверки подлинности в Azure. Рекомендуемый, более безопасный вариант — войти в OpenID Connect с помощью приложения Microsoft Entra или управляемого удостоверения, назначаемого пользователем. При необходимости можно также использовать вход с субъектом-службой и секретом. Этот подход является менее безопасным и не рекомендуется.

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

Чтобы использовать действие входа Azure с OIDC, необходимо настроить федеративные учетные данные удостоверения в приложении Microsoft Entra или управляемом удостоверении, назначаемом пользователем.

Вариант 1. Приложение Microsoft Entra

Вариант 2. Управляемое удостоверение, назначаемое пользователем

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

Необходимо указать идентификатор клиента приложения, идентификатор каталога (клиента) и идентификатор подписки для действия входа. Эти значения могут быть указаны непосредственно в рабочем процессе или храниться в секретах GitHub с указанием ссылок на них в рабочем процессе. Сохранение значений в виде секретов GitHub является более безопасным вариантом.

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

  2. Выберите > переменных".

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

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

    Примечание.

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

  4. Создайте секреты для AZURE_CLIENT_ID, AZURE_TENANT_ID и AZURE_SUBSCRIPTION_ID. Скопируйте эти значения из приложения Microsoft Entra или управляемого удостоверения, назначаемого пользователем, для секретов GitHub:

    Секрет GitHub Приложение Microsoft Entra или управляемое удостоверение, назначаемое пользователем
    AZURE_CLIENT_ID Идентификатор клиента
    AZURE_SUBSCRIPTION_ID ИД подписки
    AZURE_TENANT_ID (идентификатор арендатора Azure) Идентификатор каталога (клиента)

    Примечание.

    По соображениям безопасности рекомендуется использовать секреты GitHub, а не передавать значения непосредственно в рабочий процесс.

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

Чтобы соответствовать рабочей области, необходимо обновить переменные файла установки CLI.

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

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

    «Переменная» Описание
    ГРУППА имя группы ресурсов
    МЕСТОПОЛОЖЕНИЕ Расположение рабочей области (например: 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 с помощью действия входа в Azure с помощью OpenID Connect.
  • В разделе заданий также содержится действие установки, которое устанавливает и настраивает 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@v2
          with:
              client-id: ${{ secrets.AZURE_CLIENT_ID }}
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - 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.

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