Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Рекомендации, приведенные в этой статье, помогут вам выявить проблемы с моделью до того, как вам придется ждать процесс развертывания конечной точки. Databricks рекомендует выполнить эти шаги проверки, чтобы обеспечить лучший опыт разработки при использовании службы моделей.
Тестирование прогнозов перед развертыванием
Перед развертыванием модели в конечной точке обслуживания проверьте автономные прогнозы с помощью виртуальной среды с помощью mlflow.models.predict и примеров ввода. MLflow предоставляет API проверки, которые имитируют среду развертывания и разрешают тестирование измененных зависимостей.
Существует два варианта проверки перед развертыванием: API Python MLflow и интерфейс командной строки MLflow. См. документацию по MLflow для тестирования прогнозов для получения более подробной информации.
Можно указать следующие параметры:
- Модель
model_uri, развернутая для обслуживания моделей. - Одно из следующих элементов:
- Ожидаемый
input_dataформат вызоваmlflow.pyfunc.PyFuncModel.predict()модели. - Определяет
input_pathфайл, содержащий входные данные, которые будут загружены и использованы для вызоваpredict.
- Ожидаемый
- Формат
content_typeилиcsvформатjson. - Необязательный для
output_pathзаписи прогнозов в файл. Если этот параметр опущен, прогнозы печатаются вstdout. - Диспетчер среды,
env_managerкоторый используется для создания среды для обслуживания:- Значение по умолчанию —
virtualenv. Рекомендуется обслуживать проверку. -
localдоступен, но потенциально может возникать ошибка для обслуживания проверки. Обычно используется только для быстрой отладки.
- Значение по умолчанию —
- Следует ли установить текущую версию MLflow, которая находится в вашей среде с виртуальной средой.
install_mlflowЭтот параметр по умолчанию используетсяFalse. - Следует ли обновлять и тестировать различные версии зависимостей пакетов для устранения неполадок или отладки. Это можно указать в виде списка переопределения строковых зависимостей или добавлений с помощью аргумента переопределения
pip_requirements_override.
Рассмотрим пример.
import mlflow
run_id = "..."
model_uri = f"runs:/{run_id}/model"
mlflow.models.predict(
model_uri=model_uri,
input_data={"col1": 34.2, "col2": 11.2, "col3": "green"},
content_type="json",
env_manager="virtualenv",
install_mlflow=False,
pip_requirements_override=["pillow==10.3.0", "scipy==1.13.0"],
)
Обновление зависимостей модели
Если существуют проблемы с зависимостями, указанными в зарегистрированной модели, можно обновить требования с помощью интерфейса командной строки MLflow или mlflow.models.model.update_model_requirements() в API Python MLflow без необходимости регистрировать другую модель.
В следующем примере показано, как обновить pip_requirements.txt модели, зарегистрированной в её текущем местоположении.
Можно обновить существующие определения с указанными версиями пакетов или добавить несуществующие требования к файлу pip_requirements.txt. Этот файл находится в артефакте модели MLflow в указанном model_uri расположении.
from mlflow.models.model import update_model_requirements
update_model_requirements(
model_uri=model_uri,
operation="add",
requirement_list=["pillow==10.2.0", "scipy==1.12.0"],
)
проверить входные данные модели перед развертыванием
Для конечных точек обслуживания моделей требуется специальный формат входных данных JSON. Вы можете проверить, работают ли входные данные вашей модели на конечной точке обслуживания перед развертыванием с помощью validate_serving_input в MLflow.
Ниже приведен пример автоматически сгенерированного кода на вкладке артефактов выполнения, если модель зарегистрирована с корректным примером ввода.
from mlflow.models import validate_serving_input
model_uri = 'runs:/<run_id>/<artifact_path>'
serving_payload = """{
"messages": [
{
"content": "How many product categories are there?",
"role": "user"
}
]
}
"""
# Validate the serving payload works on the model
validate_serving_input(model_uri, serving_payload)
Вы также можете протестировать любые примеры входных данных для модели, зарегистрированной в журнале convert_input_example_to_serving_input , с помощью API для создания допустимых входных данных в формате JSON.
from mlflow.models import validate_serving_input
from mlflow.models import convert_input_example_to_serving_input
model_uri = 'runs:/<run_id>/<artifact_path>'
# Define INPUT_EXAMPLE with your own input example to the model
# A valid input example is a data instance suitable for pyfunc prediction
serving_payload = convert_input_example_to_serving_input(INPUT_EXAMPLE)
# Validate the serving payload works on the model
validate_serving_input(model_uri, serving_payload)
Тестирование модели вручную
Вы можете вручную протестировать поведение модели, выполнив следующие действия.
- Откройте записную книжку и подключитесь к кластеру общего назначения, использующему версию среды выполнения Databricks, а не Databricks Runtime для машинного обучения.
- Загрузите модель с помощью MLflow и попробуйте выполнить отладку.
Вы также можете загрузить модель локально на компьютере и выполнить отладку. Загрузите модель локально, используя следующее:
import os
import mlflow
os.environ["MLFLOW_TRACKING_URI"] = "databricks://PROFILE"
ARTIFACT_URI = "model_uri"
if '.' in ARTIFACT_URI:
mlflow.set_registry_uri('databricks-uc')
local_path = mlflow.artifacts.download_artifacts(ARTIFACT_URI)
print(local_path)
conda env create -f local_path/artifact_path/conda.yaml
conda activate mlflow-env
mlflow.pyfunc.load_model(local_path/artifact_path)