Использование пользовательских библиотек Python с помощью службы моделей
Из этой статьи вы узнаете, как включать пользовательские библиотеки или библиотеки с частного зеркального сервера при логировании вашей модели, чтобы их можно было использовать с развертыванием моделей на Mosaic AI Model Serving. Вы должны выполнить действия, описанные в этом руководстве, после того как у вас есть обученная модель машинного обучения, готовая к развертыванию, но прежде чем создать конечную точку обслуживания модели Azure Databricks.
Для разработки моделей часто требуется использование пользовательских библиотек Python, содержащих функции для предварительной или последующей обработки, определений пользовательских моделей и других общих служебных программ. Кроме того, многие группы безопасности предприятия поощряют использование частных зеркал PyPi, таких как Nexus или Artifactory, чтобы снизить риск атак цепочки поставок. Azure Databricks предлагает встроенную поддержку установки пользовательских библиотек и библиотек из частного зеркала в рабочей области Azure Databricks.
Требования
- MLflow 1.29 или более поздней версии
Шаг 1. Отправка файла зависимостей
Databricks рекомендует загрузить ваш файл зависимостей в Unity Catalog volumes. Кроме того, его можно отправить в файловую систему Databricks (DBFS) с помощью пользовательского интерфейса Azure Databricks.
Чтобы обеспечить доступность библиотеки для записной книжки, необходимо установить ее с помощью %pip%
. Использование %pip
устанавливает библиотеку в текущей записной книжке и загружает зависимость в кластер.
Шаг 2. Регистрация модели с помощью пользовательской библиотеки
Внимание
Рекомендации в этом разделе не требуются, если вы устанавливаете частную библиотеку, указывая на пользовательское зеркало PyPi.
После того как вы установите библиотеку и отправите файл Python Wheel в тома Unity Catalog или DBFS, добавьте следующий код в скрипт.
extra_pip_requirements
Введите путь к файлу зависимостей.
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])
Для DBFS используйте следующее:
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])
Если у вас есть пользовательская библиотека, необходимо указать все пользовательские библиотеки Python, связанные с моделью при настройке ведения журнала. Это можно сделать с помощью параметров extra_pip_requirements
или conda_env
в log_model().
Внимание
Если используется DBFS, обязательно включите косую черту, /
перед вашим dbfs
путем при ведении журнала extra_pip_requirements
. Дополнительные сведения о путях DBFS см. в разделе "Работа с файлами в Azure Databricks".
from mlflow.utils.environment import _mlflow_conda_env
conda_env = _mlflow_conda_env(
additional_conda_deps= None,
additional_pip_deps= ["/volumes/path/to/dependency"],
additional_conda_channels=None,
)
mlflow.pyfunc.log_model(..., conda_env = conda_env)
Шаг 3. Обновление модели MLflow с помощью файлов колес Python
MLflow предоставляет утилиту add_libraries_to_model() для логирования вашей модели со всеми её зависимостями, предварительно упакованными в виде файлов колес Python. Это упаковывает пользовательские библиотеки вместе с моделью в дополнение ко всем другим библиотекам, указанным в качестве зависимостей модели. Это гарантирует, что библиотеки, используемые вашей моделью, являются именно теми, которые доступны в вашей учебной среде.
В следующем примере model_uri
ссылается на реестр моделей каталога Unity с помощью синтаксиса models:/<uc-model>/<model-version>
. Для использования реестра моделей рабочей области (устаревшая версия), используйте models:/<model-name>/<model-version>
.
При использовании URI реестра моделей эта программа создает новую версию в существующей зарегистрированной модели.
import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)
Шаг 4. Обслуживание модели
Когда новая версия модели с пакетами доступна в реестре моделей, можно добавить эту версию модели в конечную точку с помощью Model Serving.