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


Настройка MLOps с помощью Azure DevOps

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

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

  • Развертывание инфраструктуры Машинное обучение Azure
  • Подготовка данных (извлечение, преобразование, операции загрузки)
  • Обучение моделей машинного обучения с масштабированием по запросу и масштабированием
  • Развертывание моделей машинного обучения в виде общедоступных или частных веб-служб
  • Мониторинг развернутых моделей машинного обучения (например, для анализа производительности)

В этой статье вы узнаете об использовании Машинное обучение Azure для настройки сквозного конвейера MLOps, который выполняет линейную регрессию для прогнозирования тарифов на такси в Нью-Йорке. Конвейер состоит из компонентов, каждый обслуживающий различные функции, которые можно зарегистрировать в рабочей области, версии и повторно использовать с различными входными и выходными данными. Вы собираетесь использовать рекомендуемую архитектуру Azure для MLOps и акселератора решений AzureMLOps (версии 2), чтобы быстро настроить проект MLOps в Машинное обучение Azure.

Совет

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

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

  • Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения Azure.
  • Рабочая область Машинного обучения Azure.
  • Git, запущенный на локальном компьютере.
  • Организация в Azure DevOps.
  • Проект Azure DevOps, который будет размещать исходные репозитории и конвейеры.
  • Расширение Terraform для Azure DevOps , если вы используете Azure DevOps + Terraform для создания инфраструктуры

Примечание.

Требуется Git версии 2.27 или более поздней. Дополнительные сведения об установке команды Git см. в статье https://git-scm.com/downloads и выборе операционной системы.

Внимание

Команды CLI в этой статье были протестированы с помощью Bash. При использовании другой оболочки могут возникнуть ошибки.

Настройка проверки подлинности с помощью Azure и DevOps

Прежде чем настроить проект MLOps с Машинное обучение Azure, необходимо настроить проверку подлинности для Azure DevOps.

Практическое руководство. Создание приложения Azure Active Directory и субъекта-службы с доступом к ресурсам с помощью портала

Для использования демонстрации требуется создание одного или двух принципов службы в зависимости от количества сред, над которыми вы хотите работать (разработчик или Prod или Оба). Эти принципы можно создать с помощью одного из следующих методов:

  1. Запустите Azure Cloud Shell.

    Совет

    При первом запуске Cloud Shell вам будет предложено создать учетную запись хранения для Cloud Shell.

  2. При появлении запроса выберите Bash в качестве среды, используемой в Cloud Shell. Вы также можете изменить среды в раскрывающемся списке на верхней панели навигации.

    Снимок экрана: раскрывающийся список среды Cloud Shell.

  3. Скопируйте следующие команды Bash на компьютер и обновите переменные проекта, subscriptionId и среды со значениями для проекта. Если вы создаете среду разработки и prod, вам потребуется запустить этот сценарий один раз для каждой среды, создав субъект-службу для каждого из них. Эта команда также предоставит роль участника субъекту-службе в предоставленной подписке. Это необходимо для правильного использования ресурсов в этой подписке Azure DevOps.

    projectName="<your project name>"
    roleName="Contributor"
    subscriptionId="<subscription Id>"
    environment="<Dev|Prod>" #First letter should be capitalized
    servicePrincipalName="Azure-ARM-${environment}-${projectName}"
    # Verify the ID of the active subscription
    echo "Using subscription ID $subscriptionID"
    echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes     /subscriptions/$subscriptionId"
    az ad sp create-for-rbac --name $servicePrincipalName --role $roleName --scopes /subscriptions/$subscriptionId
    echo "Please ensure that the information created here is properly save for future use."
    
  4. Скопируйте измененные команды в Azure Shell и запустите их (CTRL + SHIFT + v).

  5. После выполнения этих команд вы получите информацию, связанную с субъектом-службой. Сохраните эти сведения в безопасном расположении, оно будет использоваться позже в демонстрации для настройки Azure DevOps.

    {
       "appId": "<application id>",
       "displayName": "Azure-ARM-dev-Sample_Project_Name",
       "password": "<password>",
       "tenant": "<tenant id>"
    }
    
  6. Повторите шаг 3 , если вы создаете субъекты-службы для сред разработки и prod. Для этой демонстрации мы создадим только одну среду, которая является Prod.

  7. Закройте Cloud Shell после создания субъектов-служб.

Настройка Azure DevOps

  1. Перейдите в Azure DevOps.

  2. Выберите новый проект (назовите проект mlopsv2 для этого руководства).

    Снимок экрана: проект ADO.

  3. В проекте в разделе "Параметры проекта" (в нижней левой части страницы проекта) выберите "Подключения службы".

  4. Выберите "Создать подключение службы".

    Снимок экрана: кнопка подключения к новой службе ADO.

  5. Выберите Azure Resource Manager, нажмите кнопку "Далее", выберите субъект-служба (вручную), нажмите кнопку "Далее" и выберите подписку уровня области.

    • Имя подписки— используйте имя подписки, в которой хранится субъект-служба.
    • Идентификатор подписки. Используйте входные subscriptionId данные шага 1 в качестве идентификатора подписки.
    • Идентификатор субъекта-службы. Используйте выходные appId данные шага 1 в качестве идентификатора субъекта-службы
    • Ключ субъекта-службы. Использование password выходных данных из шага 1 в качестве ключа субъекта-службы
    • Идентификатор клиента. Используйте выходные данные из шага 1 в качестве идентификатора клиента tenant
  6. Назовите подключение службы Azure-ARM-Prod.

  7. Выберите "Предоставить разрешение на доступ ко всем конвейерам", а затем нажмите кнопку "Проверить" и "Сохранить".

Настройка Azure DevOps успешно завершена.

Настройка исходного репозитория с помощью Azure DevOps

  1. Открытие проекта, созданного в Azure DevOps

  2. Откройте раздел Repos и выберите "Импорт репозитория"

    Снимок экрана: репозиторий импорта Azure DevOps в первый раз.

  3. Введите https://github.com/Azure/mlops-v2-ado-demo поле URL-адреса клонирования. Выберите импорт в нижней части страницы

    Снимок экрана: репозиторий для импорта MLOps в Azure DevOps.

  4. Откройте параметры проекта в нижней части области навигации слева

  5. В разделе Repos выберите репозитории. Выберите репозиторий, созданный на предыдущем шаге, перейдите на вкладку "Безопасность"

  6. В разделе "Разрешения пользователя" выберите пользователя службы сборки mlopsv2. Измените разрешение "Разрешить" и разрешение "Создать ветвь", чтобы разрешить. Снимок экрана: разрешения Azure DevOps.

  7. Откройте раздел "Конвейеры" в области навигации слева и выберите 3 вертикальные точки рядом с кнопкой "Создать конвейеры". Выбор " Управление безопасностью"

    Снимок экрана: безопасность конвейера.

  8. Выберите учетную запись службы сборки mlopsv2 для проекта в разделе "Пользователи". Изменение конвейера сборки разрешения на allow

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

Примечание.

Это завершает раздел предварительных требований и развертывание акселератора решений может произойти соответствующим образом.

Развертывание инфраструктуры с помощью Azure DevOps

Этот шаг развертывает конвейер обучения в рабочей области Машинное обучение Azure, созданной на предыдущих шагах.

Совет

Перед извлечением репозитория MLOps версии 2 и развертыванием инфраструктуры необходимо понимать архитектурные шаблоны акселератора решений. В примерах используется классический тип проекта МАШИНного обучения.

Запуск конвейера инфраструктуры Azure

  1. Перейдите в репозиторий mlops-v2-ado-demoи выберите файл config-infra-prod.yml .

    Внимание

    Убедитесь, что выбрана основная ветвь репозитория.

    Снимок экрана: репозиторий в ADO.

    Этот файл конфигурации использует пространство имен и постфикс значения имен артефактов для обеспечения уникальности. Обновите следующий раздел в конфигурации в соответствии с вашими предпочтениями.

     namespace: [5 max random new letters]
     postfix: [4 max random new digits]
     location: eastus
    

    Примечание.

    Если вы используете рабочую нагрузку глубокого обучения, например CV или NLP, убедитесь, что вычислительные ресурсы GPU доступны в зоне развертывания.

  2. Выберите "Зафиксировать" и отправить код, чтобы получить эти значения в конвейере.

  3. Перейти к разделу "Конвейеры"

    Снимок экрана: конвейеры ADO.

  4. Выберите Создать конвейер.

  5. Выберите Azure Repos Git.

    Снимок экрана: ADO Where's your code.

  6. Выберите репозиторий, клонированные из предыдущего раздела mlops-v2-ado-demo

  7. Выбор существующего YAML-файла Azure Pipelines

    Снимок экрана: страница Azure DevOps Pipeline на шаге настройки.

  8. main Выберите ветвь и нажмите кнопку mlops/devops-pipelines/cli-ado-deploy-infra.yml"Продолжить".

  9. Запуск конвейера; Для завершения потребуется несколько минут. Конвейер должен создать следующие артефакты:

    • Группа ресурсов для рабочей области, включая учетную запись хранения, реестр контейнеров, Application Insights, Keyvault и саму рабочую область Машинное обучение Azure.
    • В рабочей области также создается вычислительный кластер.
  10. Теперь развернута инфраструктура для проекта MLOps. Снимок экрана: экран

    Примечание.

    Не удается переместить и повторно использовать существующий репозиторий для предупреждений о необходимых расположениях , может быть проигнорировано.

Пример сценария обучения и развертывания

Акселератор решений включает код и данные для примера сквозного конвейера машинного обучения, который выполняет линейную регрессию для прогнозирования тарифов на такси в Нью-Йорке. Конвейер состоит из компонентов, каждый обслуживающий различные функции, которые можно зарегистрировать в рабочей области, версии и повторно использовать с различными входными и выходными данными. Примеры конвейеров и рабочих процессов для сценариев Компьютерное зрение и NLP будут иметь различные шаги и этапы развертывания.

Этот конвейер обучения содержит следующие действия.

Подготовка данных

  • Этот компонент принимает несколько наборов данных такси (желтый и зеленый) и объединяет или фильтрует данные, а также подготавливает наборы данных для обучения и оценки.
  • Входные данные: локальные данные в ./data/ (несколько .csv файлов)
  • Выходные данные: один подготовленный набор данных (.csv) и наборы данных train/val/test.

Train Model (Обучение модели);

  • Этот компонент обучает линейный регрессор с набором обучения.
  • Входные данные: обучающий набор данных
  • Выходные данные: обученная модель (формат выбора)

Анализ модели

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

Регистрация модели

  • Этот компонент оценивает модель на основе точности прогнозов в тестовом наборе.
  • Входные данные: обученная модель и флаг развертывания.
  • Выходные данные: зарегистрированная модель в Машинное обучение Azure.

Развертывание конвейера обучения модели

  1. Переход к конвейерам ADO

    Снимок экрана: конвейеры ADO.

  2. Выберите Новый конвейер.

    Снимок экрана: кнопка

  3. Выберите Azure Repos Git.

    Снимок экрана: ADO Where's your code.

  4. Выберите репозиторий, клонированные из предыдущего раздела mlopsv2

  5. Выбор существующего YAML-файла Azure Pipelines

    Снимок экрана: страница конвейера ADO на шаге настройки.

  6. Выберите main ветвь и нажмите кнопку /mlops/devops-pipelines/deploy-model-training-pipeline.yml"Продолжить".

  7. Сохранение и запуск конвейера

Примечание.

На этом этапе инфраструктура настроена и развернут цикл прототипа архитектуры MLOps. Вы готовы перейти к обученной модели в рабочую среду.

Развертывание обученной модели

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

Развертывание конечной точки модели машинного обучения

  1. Переход к конвейерам ADO

    Снимок экрана: конвейеры ADO.

  2. Выберите Новый конвейер.

    Снимок экрана: кнопка

  3. Выберите Azure Repos Git.

    Снимок экрана: ADO Where's your code.

  4. Выберите репозиторий, клонированные из предыдущего раздела mlopsv2

  5. Выбор существующего YAML-файла Azure Pipelines

    Снимок экрана: страница Azure DevOps Pipeline на шаге настройки.

  6. Выберите main ветвь и выберите "Управляемая конечная точка /mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml Online", а затем нажмите кнопку "Продолжить".

  7. Имена конечных точек в Сети должны быть уникальными, поэтому измените taxi-online-$(namespace)$(postfix)$(environment) его на другое уникальное имя, а затем нажмите кнопку "Выполнить". Если он не завершается ошибкой, не нужно изменять значение по умолчанию.

    Снимок экрана: скрипт развертывания пакетной службы Azure DevOps.

    Внимание

    Если выполнение завершается ошибкой из-за существующего имени сетевой конечной точки, повторно создайте конвейер, как описано ранее, и измените [имя конечной точки]на [имя конечной точки (случайное число)]

  8. После завершения выполнения вы увидите выходные данные, аналогичные следующему изображению:

    Снимок экрана: страница результатов выполнения пакетного запуска конвейера ADO.

  9. Чтобы проверить это развертывание, перейдите на вкладку "Конечные точки" в рабочей области AzureML, выберите конечную точку и перейдите на вкладку "Тест". Для проверки конечной точки можно использовать образец входных данных, расположенных в клонируемом репозитории /data/taxi-request.json .

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

  1. Если вы не собираетесь продолжать использовать конвейер, удалите проект Azure DevOps.
  2. В портал Azure удалите группу ресурсов и экземпляр Машинное обучение Azure.

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