Развертывание моделей MLflow в качестве веб-служб Azure
ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python azureml версии 1
В этой статье рассказывается, как развернуть модель MLflow в качестве веб-службы Azure, чтобы использовать и применять функции управления моделями и обнаружения смещения данных Машинного обучения Azure в рабочих моделях. Дополнительные сведения об интеграции функций MLflow и Машинного обучения Azure см. в статье MLflow и Машинное обучение Azure.
Машинное обучение Azure предлагает конфигурации развертывания для следующих сред.
- Экземпляр контейнера Azure (ACI) — подходит для быстрого развертывания среды разработки и тестирования.
- Служба Azure Kubernetes (AKS) — рекомендуется для масштабируемых рабочих развертываний.
Примечание
Конечные точки Машинного обучения Azure (версия 2) предоставляют улучшенные и простые возможности развертывания. Они поддерживают сценарии развертывания как в режиме реального времени, так и при использовании пакетного вывода. Конечные точки служат единым интерфейсом для вызова развертывания моделей и управления ими в вычислительных ресурсах разных типов. См. статью Что такое конечные точки Машинного обучения Azure?
Совет
Сведения в этом документе предназначены главным образом для специалистов по обработке и анализу данных и разработчиков, желающих развернуть свою модель MLflow в конечной точке веб-службы Машинного обучения Azure. Если вы являетесь администратором, который заинтересован в наблюдении из Машинного обучения Azure за использованием ресурсов и событиями, такими как квоты, завершенные обучающие запуски или завершенные развертывания моделей, ознакомьтесь с разделом Мониторинг Машинного обучения Azure.
Развертывание MLflow с Машинным обучением Azure
MLflow — это библиотека с открытым кодом для управления жизненным циклом экспериментов машинного обучения. Ее интеграция с Машинным обучением Azure позволяет расширить возможности управления за рамки обучения моделей до этапа развертывания рабочей модели.
На следующей схеме показано, как с помощью API развертывания MLflow и Машинного обучения Azure можно развертывать модели, созданные с помощью популярных платформ, таких как PyTorch, Tensorflow, Scikit-learn и т. п., в качестве веб-служб Azure и управлять ими в рабочей области.
Предварительные требования
- Модель машинного обучения. Если у вас нет обученной модели, найдите пример записной книжки, наилучшим образом соответствующий вашему сценарию вычислений, в этом репозитории и следуйте его инструкциям.
- Настройте URI отслеживания MLflow для подключения Машинного обучения Azure.
- Установите пакет
azureml-mlflow
.- Этот пакет автоматически подключает
azureml-core
из пакета SDK Машинного обучения Azure для Python, который обеспечивает возможности подключения для MLflow, таким образом позволяя этой платформе получать доступ к рабочей области.
- Этот пакет автоматически подключает
- Узнайте, какие права доступа требуются для выполнения операций MLflow в рабочей области.
Развертывание в экземпляре контейнера Azure (ACI)
Чтобы развернуть модель MLflow в качестве веб-службы Машинного обучения Azure, необходимо настроить в модели URI отслеживания MLflow для подключения к Машинному обучению Azure.
Чтобы выполнить развертывание в ACI, настраивать конфигурацию развертывания не требуется: если конфигурация не указана, по умолчанию служба использует развертывание ACI. Затем зарегистрируйте и разверните модель в одном шаге с помощью метода deploy MLflow для Машинного обучения Azure.
from mlflow.deployments import get_deploy_client
# set the tracking uri as the deployment client
client = get_deploy_client(mlflow.get_tracking_uri())
# set the model path
model_path = "model"
# define the model path and the name is the service name
# the model gets registered automatically and a name is autogenerated using the "name" parameter below
client.create_deployment(name="mlflow-test-aci", model_uri='runs:/{}/{}'.format(run.id, model_path))
Настройка конфигурации развертывания
Если вы не хотите использовать значения по умолчанию, можно настроить конфигурацию развертывания с помощью JSON-файла, в котором в качестве основы используются параметры метода deploy_configuration().
Для JSON-файла конфигурации развертывания каждый из параметров конфигурации должен быть определен в виде словаря. Пример. Узнайте больше о том, что может содержать JSON-файл конфигурации развертывания.
Схема конфигурации для развертывания экземпляра контейнера Azure
{"computeType": "aci",
"containerResourceRequirements": {"cpu": 1, "memoryInGB": 1},
"location": "eastus2"
}
Затем вы можете использовать этот JSON-файл для создания развертывания.
# set the deployment config
deploy_path = "deployment_config.json"
test_config = {'deploy-config-file': deploy_path}
client.create_deployment(model_uri='runs:/{}/{}'.format(run.id, model_path),
config=test_config,
name="mlflow-test-aci")
Развертывание в службе Azure Kubernetes (AKS)
Чтобы развернуть модель MLflow в качестве веб-службы Машинного обучения Azure, необходимо настроить в модели URI отслеживания MLflow для подключения к Машинному обучению Azure.
Чтобы выполнить развертывание в AKS, сначала создайте кластер AKS. Создайте кластер AKS с помощью метода ComputeTarget.create(). Создание нового кластера может занять 20–25 минут.
from azureml.core.compute import AksCompute, ComputeTarget
# Use the default configuration (can also provide parameters to customize)
prov_config = AksCompute.provisioning_configuration()
aks_name = 'aks-mlflow'
# Create the cluster
aks_target = ComputeTarget.create(workspace=ws,
name=aks_name,
provisioning_configuration=prov_config)
aks_target.wait_for_completion(show_output = True)
print(aks_target.provisioning_state)
print(aks_target.provisioning_errors)
Создайте JSON-файл конфигурации развертывания, взяв за основу значения метода deploy_configuration(). Каждый из параметров конфигурации развертывания просто необходимо определить как словарь. Пример приведен ниже.
{"computeType": "aks", "computeTargetName": "aks-mlflow"}
Затем зарегистрируйте и разверните модель за один шаг с помощью клиента развертывания MLflow.
from mlflow.deployments import get_deploy_client
# set the tracking uri as the deployment client
client = get_deploy_client(mlflow.get_tracking_uri())
# set the model path
model_path = "model"
# set the deployment config
deploy_path = "deployment_config.json"
test_config = {'deploy-config-file': deploy_path}
# define the model path and the name is the service name
# the model gets registered automatically and a name is autogenerated using the "name" parameter below
client.create_deployment(model_uri='runs:/{}/{}'.format(run.id, model_path),
config=test_config,
name="mlflow-test-aci")
Развертывание службы может занять несколько минут.
Очистка ресурсов
Если вы не планируете использовать развернутую веб-службу, удалите ее из записной книжки с помощью service.delete()
. Дополнительные сведения см. в документации метода Webservice.delete().
Примеры записных книжек
В примере MLflow с записными книжками Машинного обучения Azure демонстрируются и поясняются основные понятия, представленные в этой статье.
Примечание
Репозиторий примеров использования MLflow, поддерживаемый сообществом, можно найти здесь: https://github.com/Azure/azureml-examples.
Дальнейшие действия
- Управляйте своими моделями.
- Отслеживайте рабочие модели для выявления смещения данных.
- Отслеживание запусков Azure Databricks с использованием MLflow.