Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описано, как добавлять пользовательские библиотеки или библиотеки с частного зеркального сервера при логировании модели, чтобы использовать их при развертывании модели с помощью Model Serving. Вы должны выполнить действия, описанные в этом руководстве, после того как у вас есть обученная модель машинного обучения, готовая к развертыванию, но прежде чем создать конечную точку обслуживания модели Azure Databricks.
Для разработки моделей часто требуется использование пользовательских библиотек Python, содержащих функции для предварительной или последующей обработки, определений пользовательских моделей и других общих служебных программ. Кроме того, многие группы безопасности предприятия поощряют использование частных зеркал PyPi, таких как Nexus или Artifactory, чтобы снизить риск атак цепочки поставок. Azure Databricks предлагает встроенную поддержку установки пользовательских библиотек и библиотек из частного зеркала в рабочей области Azure Databricks.
Требования
- MLflow 1.29 или более поздней версии
- Ограничить исходящий сетевой доступ из конечных точек обслуживания моделей путем настройки политик сети. См. статью "Проверка с помощью службы моделей".
Вариант 1. Использование частного репозитория пакетов
Используйте вариант 1, если в организации используется частное зеркало PyPI (например, Nexus или Artifactory). Администраторы рабочей области могут настроить его в качестве репозитория пакетов по умолчанию для рабочей области. Служба моделей автоматически использует эту конфигурацию уровня рабочей области при создании среды модели.
Сведения о настройке частного репозитория пакетов см. в разделе "Настройка репозиториев пакетов по умолчанию".
После настройки репозитория перейдите к развертыванию модели.
Вариант 2: Упаковать пользовательские библиотеки в файлы формата wheel
Используйте вариант 2, если частный зеркальный файл PyPI недоступен или есть пользовательские библиотеки, недоступные в любом репозитории пакетов. Вы можете упаковыть их в виде файлов колес Python и включить их при регистрации модели.
Шаг 1. Отправка файла зависимостей
Databricks рекомендует загрузить ваш файл зависимостей в Unity Catalog volumes. Кроме того, его можно отправить в файловую систему Databricks (DBFS) с помощью пользовательского интерфейса Azure Databricks.
Чтобы обеспечить доступность библиотеки для записной книжки, необходимо установить ее с помощью %pip. Использование %pip устанавливает библиотеку в текущей записной книжке и загружает зависимость в кластер.
Шаг 2. Регистрация модели с помощью пользовательской библиотеки
После того как вы установите библиотеку и отправите файл Python Wheel в тома Unity Catalog или DBFS, добавьте следующий код в скрипт.
extra_pip_requirements Введите путь к файлу зависимостей.
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volumes/path/to/dependency.whl"])
Если у вас есть пользовательская библиотека, необходимо указать все пользовательские библиотеки Python, связанные с моделью при настройке ведения журнала. Это можно сделать с помощью параметров extra_pip_requirements или conda_env в log_model().
from mlflow.utils.environment import _mlflow_conda_env
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
extra_pip_requirements=["/volumes/path/to/dependency.whl"],
)
Если пользовательская библиотека хранится в другом месте, отличном от тома или DBFS, можно указать её расположение с помощью параметра code_paths и передать "code/<wheel-file-name>.whl" в параметр extra_pip_requirements.
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
code_paths=["/path/to/dependency.whl"], # This will be logged as `code/dependency.whl`
extra_pip_requirements=["code/dependency.whl"],
)
Шаг 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>)
Обслуживание модели
Когда новая версия модели с пакетами доступна в реестре моделей, можно добавить эту версию модели в конечную точку с помощью Model Serving.
Устранение неполадок при установке пакета
Если развертывание модели завершается сбоем на этапе сборки, можно просмотреть журналы сборки, чтобы определить проблемы с установкой пакета.
- Перейдите на страницу обслуживания в рабочей области Azure Databricks.
- Щелкните имя конечной точки, чтобы открыть сведения о конечной точке.
- Перейдите на вкладку "Журналы ".
- Выберите неудачную версию в раскрывающемся меню.
- Щелкните " Создать журналы".
Просмотрите сообщения об ошибках, чтобы определить проблему.
После устранения проблемы создайте новое развертывание или обновите конечную точку, чтобы активировать новую сборку.
Устранение неполадок с частным репозиторием пакетов
Если вы используете частный репозиторий пакетов, распространенные проблемы включают:
- Отсутствующие пакеты: пакет недоступен в настроенном репозитории. Добавьте необходимый пакет в частный репозиторий.
- Проблемы с подключением: служба моделей не может получить доступ к репозиторию пакетов. Проверьте правила сетевого подключения и брандмауэра.
- Ошибки аутентификации: учетные данные, настроенные для репозитория, недействительны или истекли. Обновите секреты в конфигурации рабочей области.
Бессерверные записные книжки используют тот же репозиторий пакетов по умолчанию, настроенный для рабочей области. Ноутбук можно использовать для проверки подключения, аутентификации и доступности пакетов, установив требования из файла вашей модели requirements.txt перед развертыванием в Model Serving.
import mlflow
import subprocess
import sys
# Step 1: Set your model details
catalog = "<your_catalog>"
schema = "<your_schema>"
model_name = "<your_model>"
version = <your_version>
# Step 2: Download the model's requirements.txt
full_model_name = f"{catalog}.{schema}.{model_name}"
requirements_uri = f"models:/{full_model_name}/{version}/requirements.txt"
print(f"Downloading artifacts from: {requirements_uri}")
local_path = mlflow.artifacts.download_artifacts(requirements_uri)
# Step 3: Print the requirements
with open(local_path, "r") as f:
print(f.read())
# Step 4: Install the requirements using the workspace's default package repository
print(f"Installing requirements from {local_path}...")
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", local_path])
print("Installation complete!")