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


Использование пользовательских библиотек 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. Обслуживание модели

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