Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
В этой статье вы узнаете о развертывании моделей MLflow в Машинном обучении Azure для вывода в режиме реального времени и пакетного вывода, а также о различных средствах, которые можно использовать для управления развертываниями.
Развертывание без кода
При развертывании моделей MLflow в Машинном обучении Azure, в отличие от развертывания пользовательских моделей, вам не нужно предоставлять скрипт оценки или среду. Машинное обучение Azure автоматически создает скрипт оценки и среду. Эта функция называется развертыванием без кода.
Для развертывания без кода Машинное обучение Azure:
- Убедитесь, что все зависимости пакета, указанные в модели MLflow, удовлетворены.
- Предоставляет базовый образ MLflow или курированную среду, содержащую следующие элементы:
- Пакеты, необходимые для выполнения вывода с использованием Azure Machine Learning, включая
mlflow-skinny. - Скрипт оценки для выполнения вывода.
- Пакеты, необходимые для выполнения вывода с использованием Azure Machine Learning, включая
Пакеты и зависимости
Машинное обучение Azure автоматически создает среды для выполнения вывода в моделях MLflow. Чтобы создать среды, Машинное обучение Azure считывает зависимости Conda, указанные в модели MLflow, и добавляет все пакеты, необходимые для запуска сервера вывода. Эти дополнительные пакеты зависят от типа развертывания.
В следующем примере файла conda.yaml показаны зависимости Conda , указанные в модели MLflow.
channels:
- conda-forge
dependencies:
- python=3.12.3
- pip<=23.1.2
- pip:
- mlflow
- scikit-learn==1.6.1
- psutil==5.9.4
name: mlflow-env
Important
MLflow автоматически обнаруживает пакеты при журналировании модели и закрепляет версии пакетов в зависимостях Conda модели. Это автоматическое обнаружение пакетов может не отражать ваши намерения или требования. Кроме того, можно регистрировать модели, использующие пользовательскую подпись, среду или примеры.
Модели, включающие подписи
Модели MLflow могут включать сигнатуру, которая указывает ожидаемые входные данные и их типы. При развертывании таких моделей в сетевых или пакетных конечных точках Машинное обучение Azure гарантирует, что количество и типы входных данных соответствуют сигнатуре. Если входные данные не могут быть проанализированы должным образом, вызов модели завершается сбоем.
Сигнатуру модели MLflow можно проверить, открыв файл MLmodel. Дополнительные сведения о том, как подписи работают в MLflow, см. в разделе "Подписи" в MLflow.
В следующем примере файл MLmodel демонстрирует signature.
artifact_path: model
flavors:
python_function:
env:
conda: conda.yaml
virtualenv: python_env.yaml
loader_module: mlflow.sklearn
model_path: model.pkl
predict_fn: predict
python_version: 3.12.3
sklearn:
code: null
pickled_model: model.pkl
serialization_format: cloudpickle
sklearn_version: 1.1.2
mlflow_version: 2.7.1
model_uuid: 3f725f3264314c02808dd99d5e5b2781
run_id: 70f15bab-cf98-48f1-a2ea-9ad2108c28cd
signature:
inputs: '[{"name": "age", "type": "double"}, {"name": "sex", "type": "double"},
{"name": "bmi", "type": "double"}, {"name": "bp", "type": "double"}, {"name":
"s1", "type": "double"}, {"name": "s2", "type": "double"}, {"name": "s3", "type":
"double"}, {"name": "s4", "type": "double"}, {"name": "s5", "type": "double"},
{"name": "s6", "type": "double"}]'
outputs: '[{"type": "double"}]'
Tip
Подписи в моделях MLflow рекомендуется использовать, так как они предоставляют удобный способ обнаружения проблем совместимости данных. Для получения дополнительной информации о том, как регистрировать модели с сигнатурами, см. раздел Регистрирование моделей, использующих пользовательскую сигнатуру, среду или примеры.
Развертывание на встроенном сервере MLflow или на сервере выполнения выводов в Azure Machine Learning
Разработчики моделей могут использовать встроенные средства развертывания MLflow для локального тестирования моделей. Например, можно запустить локальный экземпляр модели, зарегистрированной в реестре серверов MLflow, с помощью mlflow models serve или интерфейса командной строки mlflow models predictMLflow. Для получения дополнительной информации о встроенных средствах развертывания MLflow смотрите Встроенные средства развертывания в документации по MLflow.
Машинное обучение Azure также поддерживает развертывание моделей в сетевых и пакетных конечных точках. Эти конечные точки выполняют различные технологии вывода, которые могут иметь различные функции.
Машинное обучение Azure сетевые конечные точки, аналогичные встроенному серверу MLflow, предоставляют масштабируемый, синхронный и упрощенный способ выполнения моделей для вывода.
Конечные точки пакетной обработки в Azure Machine Learning могут выполнять асинхронную инференцию по длительным процессам, которые могут масштабироваться до больших объёмов данных. Сервер MLflow не имеет этой возможности, хотя вы можете достичь аналогичной возможности с помощью заданий Spark. Дополнительные сведения о конечных точках пакетной службы и моделях MLflow см. в статье Об использовании моделей MLflow в пакетных развертываниях.
Форматы входных данных
В следующей таблице показаны типы входных данных, поддерживаемые встроенным сервером MLflow и поддерживаемыми веб-конечными точками Машинного обучения Azure.
| Тип входных данных | Встроенный сервер MLflow | Машинное обучение Azure конечная точка в Сети |
|---|---|---|
| Кадры данных pandas, сериализованные в формате JSON, в ориентации разделения | ✓ | ✓ |
| Panda DataFrames, сериализованные в формате JSON, с ориентацией на записи. | Deprecated | |
| Кадры данных pandas, сериализованные в формате CSV | ✓ | Используйте пакетную инференцию. Дополнительные сведения см. в статье "Развертывание моделей MLflow в конечных точках пакетной службы". |
| Входные данные TensorFlow в виде сериализованных списков в формате JSON (тензоры) и словаря списков (именованные тензоры) | ✓ | ✓ |
| Входные данные TensorFlow с использованием API TensorFlow Serving | ✓ |
В следующих разделах рассматриваются модели MLflow, развернутые в Машинное обучение Azure сетевых конечных точек.
Входная структура
Независимо от типа входных данных, Машинное обучение Azure требует предоставления входных данных в формате JSON в ключе input_data словаря. Этот ключ не требуется при использовании команды mlflow models serve, чтобы обслуживать модели, поэтому полезные нагрузки нельзя использовать взаимозаменяемо для онлайн-синофных точек Azure Machine Learning и встроенного сервера MLflow.
Important
Структура полезных данных изменилась в MLflow 2.0.
В следующих примерах полезных данных показаны различия между моделью, развернутой на встроенном сервере MLflow, и сервером инференса Azure Machine Learning.
JSON-сериализованный pandas DataFrame с ориентацией разделения
{
"input_data": {
"columns": [
"age", "sex", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
],
"index": [1],
"data": [
[1, 1, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
]
}
}
Входные данные Tensor
{
"input_data": [
[1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2],
[1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
[1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2],
[1, 1, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
]
}
Входные данные с именованным тензором
{
"input_data": {
"tokens": [
[0, 655, 85, 5, 23, 84, 23, 52, 856, 5, 23, 1]
],
"mask": [
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
]
}
}
Настройка вывода для моделей MLflow
Скрипты оценки настраивают способ выполнения вывода для пользовательских моделей. Но для развертывания модели MLflow решение о том, как выполнять вывод, делается построителем моделей, а не инженером развертывания. Каждая платформа модели может автоматически применять определенные подпрограммы вывода.
Если необходимо изменить способ выполнения вывода для модели MLflow, можно выполнить одно из следующих действий:
- Измените способ входа модели в подпрограмму обучения.
- Настройте вывод с помощью скрипта оценки во время развертывания.
Измените, как журналируется ваша модель во время обучения
Если вы регистрируете модель с помощью mlflow.autolog или mlflow.<flavor>.log_model, вкусовая разновидность, используемая для модели, определяет способ выполнения вывода и возвращаемых результатов. MLflow не применяет какое-либо конкретное поведение для того, как predict() функция создает результаты.
В некоторых случаях может потребоваться выполнить предварительную обработку или последующую обработку до и после запуска модели. Или вы можете изменить возвращаемые значения, например вероятности вместо классов. Одним из решений является реализация конвейеров машинного обучения, которые переходят от входных данных к выходным данным напрямую.
Например, sklearn.pipeline.Pipeline или pyspark.ml.Pipeline являются популярными способами реализации конвейеров и иногда рекомендуется повысить производительность. Вы также можете настроить способ вывода модели путем ведения журнала пользовательских моделей.
Настройка вывода с помощью скрипта оценки
Хотя для моделей MLflow не требуется скрипт оценки, при необходимости можно настроить выполнение вывода для моделей MLflow. Дополнительные сведения о настройке вывода см. в статье "Настройка развертываний модели MLflow для сетевых конечных точек" или "Настройка развертывания модели" с помощью скрипта оценки для конечных точек пакетной службы.
Important
Если вы решили указать скрипт оценки для развертывания модели MLflow, необходимо также предоставить среду для развертывания.
Средства развертывания
Машинное обучение Azure предоставляет следующие средства для развертывания моделей MLflow в сетевых и пакетных конечных точках:
- Пакет SDK для MLflow
- Машинное обучение Azure CLI версии 2
- Пакет SDK службы "Машинное обучение Azure" для Python
- Студия машинного обучения Azure
Каждый инструмент имеет различные возможности, особенно для того, какой тип вычислений он может использовать. В следующей таблице показана поддержка различных сценариев развертывания MLflow.
| Scenario | Пакет SDK для MLflow | Машинное обучение Azure CLI/SDK или studio |
|---|---|---|
| Развертывание в управляемых сетевых конечных точках. 1 | Supported. Ознакомьтесь с прогрессивным развертыванием моделей MLflow в сетевых конечных точках. | Supported. См. статью "Развертывание моделей MLflow в сетевых конечных точках". |
| Разверните на управляемых онлайн конечных точках с помощью оценочного скрипта. | Не поддерживается. 3 | Supported. См . раздел "Настройка развертываний модели MLflow". |
| Развертывание в конечных точках пакетной обработки. | Не поддерживается. 3 | Supported. См. статью "Использование моделей MLflow в пакетных развертываниях". |
| Развертывание в конечных точках пакетной службы с помощью скрипта оценки. | Не поддерживается. 3 | Supported. См . раздел "Настройка развертывания модели с помощью скрипта оценки". |
| Разворачивайте на веб-службах, таких как Azure Container Instances или Azure Kubernetes Service (AKS). | Устаревшая поддержка. 2 | Не поддерживается. 2 |
| Разверните в веб-службах, таких как Azure Container Instances или AKS (Kubernetes Service), с использованием скрипта оценки. | Не поддерживается. 3 | Устаревшая поддержка. 2 |
1 Переключитесь на управляемые сетевые конечные точки , если это возможно.
2 MLflow с открытым кодом не поддерживает сценарии оценки или пакетное выполнение.
Выбор средства развертывания
Используйте SDK MLflow, если выполняются оба следующих условия:
- Вы знакомы с MLflow и хотите продолжать использовать те же методы.
- Вы используете платформу, например Azure Databricks, которая поддерживает MLflow в собственном коде.
Используйте интерфейс командной строки Azure Machine Learning CLI версии 2 или SDK для Python, если соблюдается одно из следующих условий:
- Вы знакомы с инструментом.
- Вы хотите автоматизировать развертывание с помощью конвейеров.
- Вы хотите сохранить конфигурацию развертывания в репозитории Git.
Используйте пользовательский интерфейс Студия машинного обучения Azure, если вы хотите быстро развернуть и протестировать модели, обученные с помощью MLflow.