Поделиться через


Использование пользовательских библиотек Python с помощью службы моделей

Из этой статьи вы узнаете, как включить пользовательские библиотеки или библиотеки с частного зеркального сервера при регистрации модели, чтобы использовать их с развертываниями моделей обслуживания моделей. Вы должны выполнить действия, описанные в этом руководстве, после того как у вас есть обученная модель машинного обучения, готовая к развертыванию, но прежде чем создать конечную точку обслуживания модели Azure Databricks.

Для разработки моделей часто требуется использование пользовательских библиотек Python, содержащих функции для предварительной или последующей обработки, определений пользовательских моделей и других общих служебных программ. Кроме того, многие группы безопасности предприятия поощряют использование частных зеркал PyPi, таких как Nexus или Artifactory, чтобы снизить риск атак цепочки поставок. Azure Databricks предлагает встроенную поддержку установки пользовательских библиотек и библиотек из частного зеркала в рабочей области Azure Databricks.

Требования

  • MLflow 1.29 или более поздней версии

Шаг 1. Отправка файла зависимостей

Databricks рекомендует передать файл зависимостей в тома каталога Unity. Кроме того, его можно отправить в файловую систему Databricks (DBFS) с помощью пользовательского интерфейса Azure Databricks.

Чтобы обеспечить доступность библиотеки для записной книжки, необходимо установить ее с помощью %pip%. Использование %pip устанавливает библиотеку в текущей записной книжке и загружает зависимость в кластер.

Шаг 2. Регистрация модели с помощью пользовательской библиотеки

Внимание

Рекомендации в этом разделе не требуются, если вы устанавливаете частную библиотеку, указывая на пользовательское зеркало PyPi.

После установки библиотеки и отправки файла колеса Python в тома каталога Unity или 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 ссылается на реестр моделей с помощью синтаксиса models:/<model-name>/<model-version>.

При использовании URI реестра моделей эта программа создает новую версию в существующей зарегистрированной модели.

import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)

Шаг 4. Обслуживание модели

Когда новая версия модели с пакетами доступна в реестре моделей, можно добавить эту версию модели в конечную точку с помощью службы моделей.