Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Машинное обучение Azure поддерживает MLflow для управления моделями при подключении к рабочей области. Этот подход является удобным способом поддержки всего жизненного цикла модели для пользователей, знакомых с клиентом MLflow.
В этой статье описываются возможности управления реестром моделей с помощью MLflow и сравнение этого метода с другими параметрами управления.
Предварительные условия
Установите пакет MLflow SDK
mlflowи плагин Azure Machine Learningazureml-mlflowдля MLflow:pip install mlflow azureml-mlflowСовет
Вы можете использовать
mlflow-skinnyпакет, который является упрощенным пакетом MLflow без хранилища SQL, сервера, пользовательского интерфейса или зависимостей для обработки и анализа данных. Мы рекомендуем этот пакет для пользователей, которым в первую очередь нужны возможности отслеживания и ведения журнала MLflow, но не полный набор функций, включая развертывания.Создайте рабочую область Машинного обучения Azure. Чтобы создать рабочую область, см. статью Создание ресурсов, необходимых для начала работы. Просмотрите разрешения доступа, необходимые для выполнения операций MLflow в рабочей области.
Чтобы выполнить удаленное отслеживание или отслеживать эксперименты, выполняемые вне Машинное обучение Azure, настройте MLflow для указания URI отслеживания рабочей области Машинное обучение Azure. Дополнительные сведения о подключении MLflow к рабочей области см. в разделе "Настройка MLflow" для Машинное обучение Azure.
Процедуры, описанные в этой статье, используют
clientобъект для ссылки на клиент MLflow.Некоторые операции можно выполнять непосредственно с помощью API fluent MLflow.
mlflow.<method>Для других операций требуется клиент MLflow для обеспечения связи с машинным обучением по протоколу MLflow. Следующий код создаетMlflowClientобъект:import mlflow client = mlflow.tracking.MlflowClient()
Ограничения
Машинное обучение Azure не поддерживает переименование моделей.
Машинное обучение Azure не поддерживает удаление всего контейнера модели.
Реестры организации не поддерживаются для управления моделями с помощью MLflow.
Развертывание модели с определенного этапа модели в настоящее время не поддерживается в Машинном обучении Azure.
В настоящее время операции между рабочими областями не поддерживаются в Azure Машинном обучении.
Регистрация новых моделей
Реестр моделей предлагает удобный и централизованный способ управления моделями в рабочей области. Каждая рабочая область имеет собственный независимый реестр моделей. В следующих разделах показано два способа регистрации моделей в реестре с помощью пакета SDK MLflow.
Создавать модели из существующего процесса
Если у вас есть модель MLflow, зарегистрированная внутри запуска, и вы хотите зарегистрировать ее в реестре, используйте идентификатор выполнения и путь, в котором регистрируется модель. Эти сведения можно запросить, следуя инструкциям в статье "Управление экспериментами" и запуском с помощью MLflow.
mlflow.register_model(f"runs:/{run_id}/{artifact_path}", model_name)
Примечание.
Вы можете зарегистрировать только модели в реестре в той же рабочей области, где вы отслеживали выполнение. Машинное обучение Azure в настоящее время не поддерживает операции между рабочими областями.
Совет
Зарегистрируйте модели из запусков или с помощью mlflow.<flavor>.log_model метода внутри запуска. Этот подход сохраняет происхождение из задания, создающего ресурс.
Создание моделей из ресурсов
Если у вас есть папка с моделью MLflow MLModel , ее можно зарегистрировать напрямую. Модель не обязательно должна находиться в контексте запуска. Для этого подхода можно использовать схему file://path/to/model URI для регистрации моделей MLflow, хранящихся в локальной файловой системе.
Следующий код создает простую модель с помощью scikit-learn пакета и сохраняет модель в формате MLflow в локальном хранилище:
from sklearn import linear_model
reg = linear_model.LinearRegression()
reg.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
mlflow.sklearn.save_model(reg, "./regressor")
Совет
Метод save_model() работает точно так же, как метод log_model().
log_model() Хотя метод сохраняет модель внутри активного запуска, save_model() метод использует локальную файловую систему для сохранения модели.
Следующий код регистрирует модель с помощью локального пути:
import os
model_local_path = os.path.abspath("./regressor")
mlflow.register_model(f"file://{model_local_path}", "local-model-test")
Реестры моделей запросов
Используйте пакет SDK MLflow для запроса и поиска моделей, зарегистрированных в реестре. В следующих разделах показано два способа запроса модели.
Запрос всех моделей в реестре
Используйте клиент MLflow для запроса всех зарегистрированных моделей в реестре.
Следующий код выводит имена всех моделей в реестре:
for model in client.search_registered_models():
print(f"{model.name}")
order_by Используйте метод для упорядочивания выходных данных по определенному свойству, например name, version, creation_timestampили last_updated_timestamp:
client.search_registered_models(order_by=["name ASC"])
Примечание.
Для версий MLflow предыдущих 2.0 используйте метод MlflowClient.list_registered_models() вместо этого.
Получите конкретные версии модели
Метод search_registered_models() извлекает объект модели, содержащий все версии модели. Чтобы получить последнюю зарегистрированную версию модели для данной модели, используйте get_registered_model() метод:
client.get_registered_model(model_name)
Чтобы получить определенную версию модели, используйте следующий код:
client.get_model_version(model_name, version=2)
Загрузка моделей из реестра
Модели можно загрузить непосредственно из реестра для восстановления объектов модели, зарегистрированных в журнале. Для этой задачи используйте функции mlflow.<flavor>.load_model() или mlflow.pyfunc.load_model() укажите универсальный код ресурса (URI) модели для загрузки.
Эти функции можно реализовать с помощью следующего синтаксиса:
-
models:/<model-name>/latest: загрузите последнюю версию модели. -
models:/<model-name>/<version-number>: загрузите определенную версию модели. -
models:/<model-name>/<stage-name>: загрузите определенную версию на заданном этапе для модели. Дополнительные сведения см. в статье "Работа с этапами модели".
Чтобы понять различия между функциями mlflow.<flavor>.load_model() и mlflow.pyfunc.load_model(), см. рабочие процессы для загрузки моделей MLflow.
Работа с этапами модели
MLflow поддерживает этапы для модели для управления жизненным циклом модели. Версия модели может переходить с одного этапа на другой. Этапы назначаются определенным версиям для модели. Модель может иметь несколько версий на разных этапах.
Внимание
Доступ к этапам можно получить только с помощью пакета SDK MLflow. Они не отображаются в Студия машинного обучения Azure. Вы не можете получить этапы с помощью пакета SDK машинного обучения Azure, интерфейса командной строки машинного обучения Azure или REST API машинного обучения Azure. Развертывание с определенного этапа модели в настоящее время не поддерживается.
Этапы модели запросов
Вы можете увидеть версии модели для каждого этапа, извлекая модель из реестра. Следующий код получает версию модели, которая сейчас находится на Staging этапе:
client.get_latest_versions(model_name, stages=["Staging"])
Несколько версий модели могут находиться на одном этапе одновременно в MLflow. В предыдущем примере метод возвращает последнюю (последнюю) версию среди всех версий этапа.
Внимание
В пакете SDK MLflow имена этапов чувствительны к регистру.
Версия модели перехода
Используйте клиент MLflow для перехода версии модели на определенный этап:
client.transition_model_version_stage(model_name, version=3, stage="Staging")
При переходе версии модели на определенный этап существующие версии модели на этом этапе остаются неизменными. Это поведение по умолчанию.
Чтобы переместить существующие версии модели на Archived этап, задайте archive_existing_versions=True параметр во время перехода:
client.transition_model_version_stage(
model_name, version=3, stage="Staging", archive_existing_versions=True
)
Загрузка моделей с этапов
Модель можно загрузить на определенном этапе непосредственно из Python с помощью функции load_model и указанного ниже формата URI. Для успешного выполнения этого метода необходимо установить все библиотеки и зависимости в рабочей среде.
Загрузите модель с Staging этапа:
model = mlflow.pyfunc.load_model(f"models:/{model_name}/Staging")
Изменение и удаление моделей
MLflow и Машинное обучение Azure поддерживают редактирование зарегистрированных моделей, но существуют некоторые важные различия. В следующих разделах описаны некоторые возможности.
Примечание.
Переименование моделей не поддерживается в Машинное обучение Azure, так как объекты модели неизменяемы.
Изменение описания и тегов модели
Описание и теги модели можно изменить с помощью пакета SDK MLflow:
client.update_model_version(model_name, version=1, description="My classifier description")
Чтобы изменить теги, используйте методы set_model_version_tag и remove_model_version_tag.
client.set_model_version_tag(model_name, version="1", key="type", value="classification")
Чтобы удалить тег, используйте delete_model_version_tag метод:
client.delete_model_version_tag(model_name, version="1", key="type")
Удалите версию модели
Вы можете удалить любую версию модели в реестре с помощью клиента MLflow:
client.delete_model_version(model_name, version="2")
Примечание.
Машинное обучение не поддерживает удаление всего контейнера модели. Чтобы достичь этой задачи, удалите все версии модели для данной модели.
Просмотр поддерживаемых возможностей для управления моделями
Клиент MLflow предоставляет несколько методов для получения моделей и управления ими. В следующей таблице перечислены методы, которые в настоящее время поддерживаются в MLflow при подключении к Машинное обучение Azure. Таблица также сравнивает MLflow с другими возможностями управления моделями в Azure Machine Learning.
Описание функции |
Только MLflow | Машинное обучение с MLflow | Машинное обучение CLI версии 2 | студия Машинное обучение |
|---|---|---|---|---|
| Регистрация моделей в формате MLflow | ✓ | ✓ | ✓ | ✓ |
| Регистрация моделей не в формате MLflow | ✓ | ✓ | ||
| Регистрация моделей из выходных данных и артефактов | ✓ | ✓1 | ✓2 | ✓ |
| Регистрация моделей из выходных данных и артефактов в другом сервере отслеживания или рабочей области | ✓ | ✓5 | ✓5 | |
| Поиск и перечисление зарегистрированных моделей | ✓ | ✓ | ✓ | ✓ |
| Получение сведений о версиях зарегистрированной модели | ✓ | ✓ | ✓ | ✓ |
| Изменение описания версий зарегистрированной модели | ✓ | ✓ | ✓ | ✓ |
| Изменение тегов версий зарегистрированной модели | ✓ | ✓ | ✓ | ✓ |
| Переименование зарегистрированных моделей | ✓ | 3 | 3 | 3 |
| Удаление зарегистрированной модели (контейнера) | ✓ | 3 | 3 | 3 |
| Удаление версии зарегистрированной модели | ✓ | ✓ | ✓ | ✓ |
| Управление этапами модели MLflow | ✓ | ✓ | ||
| Поиск зарегистрированных моделей по имени | ✓ | ✓ | ✓ | ✓4 |
Поиск зарегистрированных моделей с помощью строковых компраторов LIKE и ILIKE |
✓ | ✓4 | ||
| Поиск зарегистрированных моделей по тегу | ✓4 | |||
| Поддержка реестров организации | ✓ | ✓ |
Сноски таблицы:
-
1 Использование универсальных идентификаторов ресурсов (URI) с форматом
runs:/<ruin-id>/<path>. -
2 . Используйте URI с форматом
azureml://jobs/<job-id>/outputs/artifacts/<path>. - 3 Зарегистрированные модели — это неизменяемые объекты в Машинное обучение Azure.
- 4. Используйте поле поиска в Студия машинного обучения Azure. Поддерживается частичное сопоставление.
- 5 . Используйте реестры для перемещения моделей между разными рабочими областями и сохранения происхождения.