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


Используйте GitHub Actions с Azure Machine Learning

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

Приступите к работе с 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.

Шаг 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 Login action с 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 Machine Learning.

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

  1. Перейдите в форкнутый репозиторий и откройте azureml-examples/cli/.

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

    Переменная Описание
    GROUP имя группы ресурсов
    LOCATION Расположение рабочей области (например: eastus2)
    WORKSPACE Имя рабочей области Azure Machine Learning

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

Используйте файл pipeline.yml для развертывания потока Azure Machine Learning. Конвейер — это конвейер машинного обучения, а не конвейер 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 действием входа, используя 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
        paths:
          - cli/jobs/pipelines/nyc-taxi/**
          - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
          - cli/run-pipeline-jobs.sh
          - cli/setup.sh
    permissions:
      id-token: write
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: check out repo
          uses: actions/checkout@v4
        - 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 и выберите опцию Включить рабочий процесс.

    Снимок экрана: включение рабочего процесса GitHub Actions.

  5. Выберите Выполнить рабочий процесс и выберите параметр Выполнить рабочий процесс сейчас.

    Снимок экрана: выполнение рабочего процесса GitHub Actions.

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

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

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

    Снимок экрана: успешное выполнение Machine Learning Studio.

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

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

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