Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Расширение Azure CLI для машинного обучения версии 2 (текущая версия)
Python SDK azure-ai-ml версии 2 (текущая версия)
Машинное обучение Azure интегрируется с конвейером Azure DevOps для автоматизации жизненного цикла машинного обучения. Ниже перечислены некоторые операции, которые можно автоматизировать.
- Развертывание инфраструктуры Azure Machine Learning
- Подготовка данных (операции извлечения, преобразования и загрузки)
- Обучение моделей машинного обучения с масштабированием по запросу и увеличением мощности.
- Развертывание моделей машинного обучения в виде общедоступных или частных веб-служб
- Мониторинг развернутых моделей машинного обучения (например, для анализа производительности)
В этой статье вы узнаете, как использовать Машинное обучение Azure для настройки сквозного конвейера MLOps, который выполняет линейную регрессию для прогнозирования тарифов на такси в Нью-Йорке. Конвейер состоит из компонентов, каждый из которых обслуживает различные функции. Эти компоненты можно зарегистрировать в рабочей области, присвоить им версии, а затем повторно использовать с различными входными и выходными данными. Используйте рекомендуемую архитектуру Azure для MLOps и акселератора решений AzureMLOps (версии 2), чтобы быстро настроить проект MLOps в Машинном обучении Azure.
Совет
Перед реализацией любого решения просмотрите некоторые рекомендуемые архитектуры Azure для MLOps. Выберите лучшую архитектуру для проекта машинного обучения.
Предварительные условия
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения Azure.
- Рабочая область Машинного обучения Azure.
- Запуск Git на локальном компьютере.
- Python 3.10 или более поздней версии, если используется пакет SDK для Python версии 2 локально.
- Организация в 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 Machine Learning, необходимо настроить проверку подлинности для Azure DevOps.
Создание субъекта-службы
Совет
Для повышения безопасности рекомендуется использовать федерацию удостоверений рабочей нагрузки вместо субъектов-служб с секретами. Идентификация по рабочей нагрузке устраняет потребность в смене ключей и рекомендуется для новых подключений службы.
Для демонстрации создайте одну или две учетные записи службы в зависимости от количества сред, в которых вы хотите работать (Dev, Prod или обоих сред). Эти принципы можно создать, используя один из следующих методов:
Запустите Azure Cloud Shell.
Совет
При первом запуске Cloud Shell вам будет предложено создать учетную запись хранения для Cloud Shell.
При появлении запроса выберите Bash в качестве среды, используемой в Cloud Shell. Вы также можете изменить среды в раскрывающемся списке на верхней панели навигации.
Скопируйте следующие команды Bash на компьютер и обновите переменные projectName, subscriptionId и environment с значениями вашего проекта. Если вы создаете среды разработки и продакшен, запустите этот сценарий один раз для каждой из них, создавая учетную запись службы для каждой среды. Эта команда также предоставляет роль участника служебному принципалу в указанной вами подписке. 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."Скопируйте отредактированные команды в Azure Shell и запустите их (Ctrl + Shift + v).
После выполнения этих команд вы увидите сведения, связанные с субъектом-службой. Сохраните эти сведения в безопасном расположении. Его можно использовать позже в демонстрации для настройки Azure DevOps.
{ "appId": "<application id>", "displayName": "Azure-ARM-dev-Sample_Project_Name", "password": "<password>", "tenant": "<tenant id>" }Повторите шаг 3 , если вы создаете субъекты-службы для сред разработки и prod. Для этой демонстрации вы создадите только одну среду, которая является Prod.
Закройте Cloud Shell после создания учетных записей службы.
Настройка Azure DevOps
Перейдите в Azure DevOps.
Выберите создать проект. Назовите проект
mlopsv2для этого руководства.
В проекте в разделе "Параметры проекта " (в нижней левой части страницы проекта) выберите "Подключения службы".
Выберите Создать подключение службы.
Выберите Azure Resource Manager и нажмите кнопку "Далее".
Примечание.
Для новых проектов выберите регистрацию приложения или управляемое удостоверение (вручную) с учетными данными федерации удостоверений рабочей нагрузки для повышения безопасности. Действия, описанные в этой статье, используют устаревший подход с секретом для принципала службы (вручную), требующий ручную ротацию.
Выберите сервисный принципал (вручную), выберите Далее, и выберите уровень области Подписка.
- Имя подписки — используйте имя подписки, в которой хранится учетная запись службы.
-
Идентификатор подписки. Используйте входные
subscriptionIdданные шага 1 в качестве идентификатора подписки. -
Идентификатор сервисного принципала - используйте
appIdиз выходных данных Шаг 1 в качестве идентификатора сервисного принципала -
Ключ субъекта-службы - Используйте
passwordвыходные данные из шага 1 в качестве ключа субъекта-службы - Идентификатор клиента - Используйте значение из Шаг 1 в качестве идентификатора клиента
Назовите подключение службы Azure-ARM-Prod.
Выберите "Предоставить разрешение на доступ ко всем конвейерам", а затем нажмите кнопку "Проверить и сохранить".
Настройка Azure DevOps успешно завершена.
Настройка исходного репозитория с помощью Azure DevOps
Откройте проект, созданный в Azure DevOps.
Откройте раздел Repos и выберите "Импорт репозитория".
Введите
https://github.com/Azure/mlops-v2-ado-demoв поле URL-адреса клонирования. Выберите импорт в нижней части страницы.
Примечание.
Демо-репозиторий может иметь обновления зависимостей, ожидающие установки. После импорта проверьте наличие оповещений системы безопасности Dependabot и при необходимости примените обновления. Сведения о последних функциях и исправлениях также см. в главном репозитории акселератора решений Azure MLOps (версии 2 ).
Откройте параметры проекта в нижней части области навигации слева.
В разделе Repos выберите репозитории. Выберите репозиторий, созданный на предыдущем шаге. Выберите вкладку Безопасность.
В разделе "Разрешения пользователя" выберите пользователя службы сборки mlopsv2. Измените разрешение Вклад на Разрешено и разрешение Создать ветвь на Разрешено.
Откройте раздел "Конвейеры" в области навигации слева и выберите 3 вертикальные точки рядом с кнопкой "Создать конвейеры". Выберите "Управление безопасностью".
Выберите учетную запись службы сборки mlopsv2 для проекта в разделе "Пользователи". Измените разрешение Изменить конвейер сборки на Разрешить.
Примечание.
На этом завершается раздел предварительных требований. Теперь можно развернуть акселератор решения.
Развертывание инфраструктуры с помощью Azure DevOps
Этот шаг развертывает конвейер обучения в рабочей области Машинного обучения Azure, созданной на предыдущих шагах.
Совет
Прежде чем ознакомиться с репозиторием MLOps версии 2 и развернуть инфраструктуру, убедитесь, что вы понимаете архитектурные шаблоны акселератора решений. В примерах используется классический тип проекта машинного обучения.
Запуск конвейера инфраструктуры Azure
Перейдите в репозиторий
mlops-v2-ado-demoи выберите файл config-infra-prod.yml .Внимание
Убедитесь, что выбрана основная ветвь репозитория.
Этот файл конфигурации использует пространство имен и значения постфиксов для создания имен артефактов, чтобы обеспечить их уникальность. Обновите следующий раздел в конфигурации в соответствии с вашими предпочтениями.
namespace: [5 max random new letters] postfix: [4 max random new digits] location: eastusПримечание.
Если вы используете рабочую нагрузку глубокого обучения, например CV или NLP, убедитесь, что вычислительные ресурсы GPU доступны в зоне развертывания.
Выберите "Зафиксировать", чтобы отправить код и внести эти значения в конвейер обработки.
Перейдите в раздел "Конвейеры ".
Выберите Создать конвейер.
Выберите Azure Repos Git.
Выберите репозиторий, который вы клонировали из предыдущего раздела.
mlops-v2-ado-demoВыберите Существующий файл Azure Pipelines YAML.
mainВыберите ветвь и нажмите кнопкуmlops/devops-pipelines/cli-ado-deploy-infra.yml"Продолжить".Запуск конвейера. Для завершения потребуется несколько минут. Конвейер создает следующие артефакты:
- Группа ресурсов для рабочей области, включая учетную запись хранения, реестр контейнеров, Application Insights, Key Vault и саму рабочую область машинного обучения Azure.
- В рабочей области также создается вычислительный кластер.
Теперь развернута инфраструктура для проекта MLOps.
Примечание.
Вы можете игнорировать предупреждения Не удалось переместить и повторно использовать существующий репозиторий в требуемое место.
Пример сценария обучения и развертывания
Акселератор решений включает код и данные для примера сквозного конвейера машинного обучения, который выполняет линейную регрессию для прогнозирования тарифов на такси в Нью-Йорке. Конвейер состоит из компонентов, каждый из которых обслуживает различные функции. Эти компоненты можно зарегистрировать в рабочей области, присвоить им версии, а затем повторно использовать с различными входными и выходными данными. Примеры конвейеров и рабочих процессов для сценариев Компьютерное зрение и NLP имеют различные шаги и этапы развертывания.
Этот конвейер обучения содержит следующие действия.
Подготовка данных
- Этот компонент принимает несколько наборов данных такси (желтый и зеленый) и объединяет и фильтрует данные. Он подготавливает наборы данных для тренировки, валидации и оценки.
- Входные данные: локальные данные в ./data/ (несколько .csv файлов)
- Выходные данные: один подготовленный набор данных (.csv) и обучение, проверка и тестирование наборов данных.
Train Model (Обучение модели);
- Этот компонент обучает линейный регрессор на обучающем наборе данных.
- Входные данные: набор данных для обучения
- Выходные данные: обученная модель (формат выбора)
Анализ модели
- Этот компонент использует обученную модель для прогнозирования тарифов на такси в тестовом наборе.
- Входные данные: модель машинного обучения и набор данных тестирования
- Результат: производительность модели и флаг, указывающий на необходимость развертывания.
- Этот компонент сравнивает производительность модели со всеми ранее развернутыми моделями в новом тестовом наборе данных. Он решает, следует ли внедрять модель в рабочую среду. Продвижение модели в рабочую среду происходит путем регистрации модели в рабочей области Машинного обучения Azure.
Регистрация модели
- Этот компонент оценивает модель на основе точности прогнозов в тестовом наборе.
- Входные данные: обученная модель и флаг развертывания.
- Выходные данные: модель зарегистрирована в Azure Machine Learning.
Развертывание конвейера обучения модели
Перейдите к пайплайнам ADO.
Выберите Новый конвейер.
Выберите Azure Repos Git.
Выберите репозиторий, который вы клонировали из предыдущего раздела.
mlopsv2Выберите Существующий файл Azure Pipelines YAML.
Выберите
mainв качестве ветви и выберите/mlops/devops-pipelines/deploy-model-training-pipeline.yml. Нажмите Продолжить.Сохраните и запустите конвейер.
Примечание.
На этом этапе инфраструктура настроена и развернут цикл прототипа архитектуры MLOps. Вы готовы внедрить обученную модель в продакшн-среду.
Развертывание обученной модели
Этот сценарий включает предварительно созданные рабочие процессы для двух подходов к развертыванию обученной модели: пакетная оценка или развертывание модели в конечной точке для оценки в режиме реального времени. Запустите любой из этих рабочих процессов или оба этих рабочих процесса, чтобы проверить производительность модели в рабочей области Машинного обучения Azure. В этом примере используется оценка в режиме реального времени.
Развертывание конечной точки модели машинного обучения
Перейдите к пайплайнам ADO.
Выберите Новый конвейер.
Выберите Azure Repos Git.
Выберите репозиторий, который вы клонировали из предыдущего раздела.
mlopsv2Выберите Существующий файл Azure Pipelines YAML.
Выберите
mainкак ветвь и выберите Управляемая Online конечная точка/mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml, затем выберите Продолжить.Имена онлайн-конечных точек должны быть уникальными, поэтому измените
taxi-online-$(namespace)$(postfix)$(environment)на другое уникальное имя, а затем нажмите кнопку "Выполнить". Если система работает без ошибок, не меняйте настройки по умолчанию.
Внимание
Если выполнение завершается ошибкой из-за существующего имени сетевой конечной точки, повторно создайте конвейер, как описано ранее, и измените [имя конечной точки]на [имя конечной точки (случайное число)]
После завершения выполнения вы увидите выходные данные, аналогичные следующему изображению:
Чтобы проверить это развертывание, перейдите на вкладку "Конечные точки" в рабочей области Машинного обучения Azure, выберите конечную точку и перейдите на вкладку "Тест ". Для проверки конечной точки можно использовать образец входных данных, расположенных в клонируемом репозитории
/data/taxi-request.json.
Очистка ресурсов
- Если вы не планируете продолжать использовать конвейер, удалите проект Azure DevOps.
- Удалите группу ресурсов и экземпляр Azure Machine Learning в портале Azure.
Следующие шаги
- Установка и настройка пакета SDK для Python версии 2
- Установка и настройка Python CLI версии 2
- Акселератор решений Azure MLOps (версии 2) на GitHub
- Учебный курс по MLOps с машинным обучением
- Узнайте больше о Azure Pipelines в контексте Azure Machine Learning
- Узнайте больше о GitHub Actions и Azure Machine Learning
- Развертывание MLOps в Azure менее чем за час — видео акселератора MLOps версии 2 сообщества