Из этой статьи вы узнаете, как развернуть обученную с помощью AutoML модель машинного обучения в подключенной (вывод в реальном времени) конечной точке. Автоматизированное машинное обучение, которое также называется автоматизированным ML или AutoML, представляет собой процесс автоматизации трудоемких и многократно повторяющихся задач разработки модели машинного обучения. Дополнительные сведения см. в разделе Что такое автоматизированное машинное обучение (AutoML)?.
Из этой статьи вы узнаете, как развернуть обученную с помощью AutoML модель машинного обучения в сетевых конечных точках, используя следующее.
Студия машинного обучения Azure
CLI Azure Machine Learning (версия 2)
Пакет SDK Python для Машинного обучения Azure версии 2
Развертывание из Студии машинного обучения Azure без написания кода
Развертывание обученной с помощью AutoML модели со страницы автоматизированного ML не требует написания кода. Это значит, что вам не потребуется составлять скрипт оценки и готовить среду: они создаются автоматически.
Перейдите на страницу автоматизированного ML в студии
Выберите тип эксперимента и запустите его
Выберите вкладку "Модели"
Выберите модель для развертывания
После выбора модели загорится кнопка "Развернуть" и отобразится раскрывающееся меню
Выберите вариант Развертывание в конечной точке для прогнозирования в реальном времени
Система создаст модель и среду, необходимые для развертывания.
Завершите работу мастера, чтобы развернуть модель в подключенной конечной точке
Развертывание вручную из студии или командной строки
Если требуется более полный контроль над развертыванием, можно скачать артефакты обучения и развернуть их.
Чтобы загрузить компоненты, необходимые для развертывания, выполните следующие действия.
Перейдите к эксперименту автоматизированного ML и запустите его в рабочей области машинного обучения
Выберите вкладку "Модели"
Выберите модель для использования. После выбора модели кнопка Загрузить становится активной
Выберите команду Загрузить
Вы получите ZIP-файл, содержащий следующее.
Файл спецификации среды Conda с именем conda_env_<VERSION>.yml
Файл оценки Python с именем scoring_file_<VERSION>.py
Сама модель в файле Python .pkl с именем model.pkl
Для развертывания с использованием этих файлов можно использовать либо студию, либо Azure CLI.
Перейдите на страницу "Модели" в Студии машинного обучения Azure
Нажмите "Выбор и регистрация модели"
Зарегистрируйте модель, которую вы скачали из выполнения автоматизированного машинного обучения
Перейдите на страницу "Среды", выберите "Пользовательская среда", а затем выберите "+ Создать", чтобы создать среду для развертывания. Используйте загруженный файл Conda YAML для создания пользовательской среды
Выберите модель и в раскрывающемся списке "Развернуть" выберите "Развертывание в конечной точке для прогнозирования в реальном времени"
Выполните все шаги в мастере, чтобы создать подключенную конечную точку и развертывание
Чтобы создать развертывание из CLI, вам понадобится Azure CLI с расширением ML версии 2. Выполните следующую команду, чтобы подтвердить оба варианта:
az version
Если вы получили сообщение об ошибке или не видите Extensions: ml в ответе, выполните действия, описанные в разделе Установка и настройка CLI (версия 2).
Вход.
az login
Если у вас есть доступ к нескольким подпискам Azure, вы можете установить активную подписку:
az account set -s "<YOUR_SUBSCRIPTION_NAME_OR_ID>"
Установите группу ресурсов и рабочую область по умолчанию там, где вы хотите создать развертывание:
az configure --defaults group=$GROUP workspace=$WORKSPACE location=$LOCATION
Поместите файл оценки в свой собственный каталог
Создайте каталог с именем src/ и поместите в него загруженный файл оценки. Этот каталог загружается в Azure и содержит весь исходный код, необходимый для вывода. Для модели AutoML существует только один файл оценки.
Создание конечной точки и файла развертывания YAML
Чтобы создать подключенную конечную точку из командной строки, вам потребуется создать файлы endpoint.yml и deployment.yml. В следующем коде, взятом из репозитория примеров Машинного обучения Azure, отображается endpoints/online/managed/sample/, где собраны все необходимые входные данные:
Вам потребуется изменить этот файл, чтобы использовать файлы, загруженные со страницы моделей AutoML.
Создайте файл automl_endpoint.yml и automl_deployment.yml и вставьте содержимое приведенного выше примера.
Измените значение name конечной точки. Имя конечной точки должно быть уникальным в пределах региона Azure. Имя конечной точки должно начинаться с буквы верхнего или нижнего регистра и содержать только алфавитно-цифровые символы и дефисы.
В файле automl_deployment измените значение ключей по следующим путям.
Путь
Изменить на
model:path
Путь к файлу model.pkl, который вы скачали.
code_configuration:code:path
Каталог, в который был помещен файл оценки.
code_configuration:scoring_script
Имя файла оценки Python (scoring_file_<VERSION>.py).
environment:conda_file
URL-адрес загруженного файла среды Conda (conda_env_<VERSION>.yml).
Создайте каталог с именем src/ и поместите в него загруженный файл оценки. Этот каталог загружается в Azure и содержит весь исходный код, необходимый для вывода. Для модели AutoML существует только один файл оценки.
Подключение к рабочей области Машинного обучения Azure
Импортируйте необходимые библиотеки:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration,
)
from azure.identity import DefaultAzureCredential
Настройте сведения о рабочей области и получите дескриптор для рабочей области:
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Создание конечной точки и развертывания
Далее мы создадим управляемые подключенные конечные точки и развертывания.
Настройте сетевую конечную точку:
Совет
name: имя конечной точки. Оно должно быть уникальным в рамках региона Azure. Имя конечной точки должно начинаться с буквы верхнего или нижнего регистра и содержать только алфавитно-цифровые символы и дефисы. Дополнительные сведения о правилах именования см. в разделе "Ограничения конечной точки".
auth_mode: Используйте key для проведения проверки подлинности на основе ключей. Используйте aml_token для проверки подлинности в службе "Машинное обучение Azure" на основе маркеров. Срок действия key не истекает, в отличие от aml_token. Дополнительные сведения о проверке подлинности см. в статье Проверка подлинности подключенной конечной точки.
# Creating a unique endpoint name with current datetime to avoid conflicts
import datetime
online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
)
Создание конечной точки:
С помощью созданного ранее объекта MLClient мы создадим конечную точку в рабочей области. Эта команда запустит создание конечной точки и вернет ответ с подтверждением во время создания.
ml_client.begin_create_or_update(endpoint)
Настройка сетевого развертывания:
Развертывание представляет собой набор ресурсов, необходимых для размещения модели, которая выполняет процесс вывода. Мы создадим развертывание для нашей конечной точки с помощью класса ManagedOnlineDeployment.
В приведенном выше примере предполагается, что файлы, скачанные со страницы моделей AutoML, находятся в каталоге src. Параметры в коде можно изменить в соответствии с вашей ситуацией.
Параметр
Изменить на
model:path
Путь к файлу model.pkl, который вы скачали.
code_configuration:code:path
Каталог, в который был помещен файл оценки.
code_configuration:scoring_script
Имя файла оценки Python (scoring_file_<VERSION>.py).
environment:conda_file
URL-адрес загруженного файла среды Conda (conda_env_<VERSION>.yml).
Создание развертывания:
С помощью созданного ранее объекта MLClient мы создадим развертывание в рабочей области. Эта команда запустит создание развертывания и вернет ответ с подтверждением во время создания.