Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модель MLflow — это стандартный формат для упаковки моделей машинного обучения, который можно использовать в различных нижестоящих инструментах, например для вывода пакетов на Apache Spark или при обслуживании в режиме реального времени через REST API. Формат определяет соглашение, позволяющее сохранить модель в различных вариантах (python-function, pytorch, sklearn и т. д.), которые могут быть поняты различными платформами обслуживания и предсказания моделей.
Сведения о том, как регистрировать и оценить модель потоковой передачи, см. в статье "Как сохранить и загрузить модель потоковой передачи".
Запись и загрузка моделей
При регистрации модели MLflow автоматически регистрирует файлы requirements.txt
и conda.yaml
. Эти файлы можно использовать для повторного создания среды разработки модели и переустановки зависимостей с помощью virtualenv
(рекомендуется) или conda
.
Внимание
Корпорация Anaconda Inc. обновила свои условия предоставления услуг для каналов anaconda.org. Based on the new terms of service you may require a commercial license if you rely on Anaconda’s packaging and distribution. Дополнительные сведения см. в часто задаваемых вопросах о коммерческом выпуске Anaconda. Использование любых каналов Anaconda регулируется условиями предоставления услуг Anaconda.
Модели MLflow, зарегистрированные до выхода версии 1.18 (Databricks Runtime 8.3 ML или более ранней версии), по умолчанию регистрировались с каналом conda defaults
(https://repo.anaconda.com/pkgs/) в качестве зависимости. Из-за этого изменения условий предоставления услуг компания Databricks прекратила использовать канал defaults
для моделей, зарегистрированных с помощью MLflow 1.18 и более поздних версий. The default channel logged is now conda-forge
, which points at the community managed https://conda-forge.org/.
Если вы зарегистрировали модель до выхода MLflow версии 1.18 и не исключили канал defaults
из среды conda для модели, эта модель может иметь зависимость от канала defaults
, которая, возможно, не предполагалась.
Чтобы узнать, имеет ли модель эту зависимость, можно проверить значение channel
в файле conda.yaml
, который упакован с зарегистрированной моделью. Например, conda.yaml
модели с зависимостью от канала defaults
может выглядеть так:
channels:
- defaults
dependencies:
- python=3.8.8
- pip
- pip:
- mlflow
- scikit-learn==0.23.2
- cloudpickle==1.6.0
name: mlflow-env
Так как Databricks не может определить, разрешено ли вам использовать репозиторий Anaconda для взаимодействия с моделями, Databricks не требует от пользователей вносить какие-либо изменения. Если вы используете репозиторий Anaconda.com с помощью Databricks в соответствии с условиями Anaconda, вам не нужно предпринимать никаких действий.
Если вы хотите изменить канал, используемый в среде модели, можно повторно зарегистрировать модель в реестре моделей с новым conda.yaml
. Это можно сделать, указав канал в параметре conda_env
log_model()
.
Дополнительные сведения об API log_model()
см. в документации по MLflow для варианта модели, с которым вы работаете, например log_model для scikit-learn.
Дополнительные сведения о файлах conda.yaml
см. в документации по MLflow.
Команды API
Чтобы зарегистрировать модель на сервере отслеживания MLflow, используйте mlflow.<model-type>.log_model(model, ...)
.
Чтобы загрузить ранее зарегистрированную модель для вывода или дальнейшей разработки, используйте mlflow.<model-type>.load_model(modelpath)
, где modelpath
является одним из следующих вариантов:
- a run-relative path (such as
runs:/{run_id}/{model-path}
) - Путь к томам каталога Unity (например,
dbfs:/Volumes/catalog_name/schema_name/volume_name/{path_to_artifact_root}/{model_path}
) - Путь к хранилищу артефактов под управлением MLflow, начиная с
dbfs:/databricks/mlflow-tracking/
- путь к зарегистрированной модели (например,
models:/{model_name}/{model_stage}
).
For a complete list of options for loading MLflow models, see Referencing Artifacts in the MLflow documentation.
Для моделей MLflow Python можно использовать mlflow.pyfunc.load_model()
для загрузки модели в качестве универсальной функции Python.
Чтобы загрузить модель и оценить точки данных, можно использовать следующий фрагмент кода.
model = mlflow.pyfunc.load_model(model_path)
model.predict(model_input)
В качестве альтернативы можно экспортировать модель в качестве Apache Spark UDF для скоринга в кластере Spark, либо в виде пакетного задания, либо в виде задания Spark Streaming в реальном времени.
# load input data table as a Spark DataFrame
input_data = spark.table(input_table_name)
model_udf = mlflow.pyfunc.spark_udf(spark, model_path)
df = input_data.withColumn("prediction", model_udf())
Зависимости логической модели
To accurately load a model, you should make sure the model dependencies are loaded with the correct versions into the notebook environment. В Databricks Runtime 10.5 ML и более поздних версий MLflow предупреждает о несоответствии между текущей средой и зависимостями модели.
Дополнительные функции, упрощающие восстановление зависимостей модели, включены в Databricks Runtime 11.0 ML и более поздних версий. В Databricks Runtime 11.0 ML и более поздних версиях для типов моделей pyfunc
можно вызывать mlflow.pyfunc.get_model_dependencies
, чтобы получить и загрузить зависимости модели. Эта функция возвращает путь к файлу зависимостей, который затем можно установить с помощью %pip install <file-path>
. When you load a model as a PySpark UDF, specify env_manager="virtualenv"
in the mlflow.pyfunc.spark_udf
call. Это восстанавливает зависимости модели в контексте PySpark UDF и не влияет на окружающую среду.
Эту функцию также можно использовать в Databricks Runtime 10.5 или более ранних версий, вручную установив MLflow версии 1.25.0 или выше:
%pip install "mlflow>=1.25.0"
Дополнительные сведения о том, как регистрировать зависимости модели (Python и не-Python) и артефакты модели, см. в «Журнал зависимостей модели».
Learn how to log model dependencies and custom artifacts for model serving:
- Развертывание моделей с помощью зависимостей
- Использование пользовательских библиотек Python с помощью службы моделей
- Package custom artifacts for Model Serving
Автоматически созданные фрагменты кода в пользовательском интерфейсе MLflow
При регистрации модели в записной книжке Azure Databricks Azure Databricks автоматически создает фрагменты кода, которые можно копировать и использовать для загрузки и запуска модели. Чтобы просмотреть эти фрагменты кода, сделайте следующее:
- Navigate to the Runs screen for the run that generated the model. (See View notebook experiment for how to display the Runs screen.)
- Прокрутите до раздела Артефакты.
- Кликните на имя зарегистрированной модели. Справа откроется панель с кодом, который можно использовать для загрузки зарегистрированной модели и построения прогнозов в кадрах данных Spark или pandas.
Примеры
Примеры моделей ведения журнала см. в примерах, приведенных в разделе Примеры отслеживания пробных запусков машинного обучения.
Зарегистрируйте модели в реестре моделей
Вы можете зарегистрировать модели в реестре моделей MLflow, централизованное хранилище моделей, которое предоставляет пользовательский интерфейс и набор API для управления полным жизненным циклом моделей MLflow. Инструкции по управлению моделями в каталоге Databricks Unity см. в статье Управление жизненным циклом модели в каталоге Unity. Сведения об использовании реестра моделей рабочей области см. в разделе "Управление жизненным циклом модели" с помощью реестра моделей рабочей области (устаревшая версия).
Для регистрации модели с помощью API, воспользуйтесь mlflow.register_model("runs:/{run_id}/{model-path}", "{registered-model-name}")
.
Сохраняйте модели в томах каталога Unity
Чтобы сохранить модель локально, воспользуйтесь mlflow.<model-type>.save_model(model, modelpath)
.
modelpath
must be a Unity Catalog volumes path. Например, если вы используете расположение томов каталога Unity dbfs:/Volumes/catalog_name/schema_name/volume_name/my_project_models
для хранения вашей проектной работы, вы должны использовать путь модели /dbfs/Volumes/catalog_name/schema_name/volume_name/my_project_models
:
modelpath = "/dbfs/Volumes/catalog_name/schema_name/volume_name/my_project_models/model-%f-%f" % (alpha, l1_ratio)
mlflow.sklearn.save_model(lr, modelpath)
For MLlib models, use ML Pipelines.
Download model artifacts
Можно скачать артефакты зарегистрированной модели (например, файлы модели, графики и метрики) с помощью различных API.
Пример API Python:
mlflow.set_registry_uri("databricks-uc")
mlflow.artifacts.download_artifacts(f"models:/{model_name}/{model_version}")
Пример API Java:
MlflowClient mlflowClient = new MlflowClient();
// Get the model URI for a registered model version.
String modelURI = mlflowClient.getModelVersionDownloadUri(modelName, modelVersion);
// Or download the model artifacts directly.
File modelFile = mlflowClient.downloadModelVersion(modelName, modelVersion);
Пример команды CLI:
mlflow artifacts download --artifact-uri models:/<name>/<version|stage>
Развертывание моделей для обслуживания в сети
Заметка
Перед развертыванием модели полезно убедиться, что модель может обслуживаться. See the MLflow documentation for how you can use mlflow.models.predict
to validate models before deployment.
Use Mosaic AI Model Serving to host machine learning models registered in Unity Catalog model registry as REST endpoints. Эти конечные точки обновляются автоматически на основе доступности версий модели.