Руководство по отладке службы моделей
В этой статье показано, как выполнить отладку распространенных проблем, с которыми пользователи могут столкнуться при работе с конечными точками обслуживания моделей. Распространенные проблемы могут включать ошибки, возникающие пользователями, когда конечная точка не может инициализировать или запустить, сбои сборки, связанные с контейнером, или проблемы во время операции или запуска модели в конечной точке.
Доступ и проверка журналов
Databricks рекомендует просматривать журналы сборки для отладки и устранения ошибок в рабочих нагрузках, обслуживающих модель. Сведения о журналах и их просмотре см. в разделе "Мониторинг качества модели" и работоспособности конечных точек.
Проверьте журналы событий для модели в пользовательском интерфейсе рабочей области и проверьте сообщение об успешной сборке контейнера. Если сообщение сборки не отображается через час, обратитесь в службу поддержки Databricks.
Если сборка выполнена успешно, но вы столкнулись с другими ошибками после успешной сборки контейнера. Если сборка завершается ошибкой, ознакомьтесь с отладкой после сбоя сборки контейнера.
Установленные версии пакета библиотеки
В журналах сборки можно подтвердить установленные версии пакета.
- Для версий MLflow, если у вас нет указанной версии, служба моделей использует последнюю версию.
- Для пользовательской
cuda
службы GPU служба модели устанавливает рекомендуемые версии иcuDNN
в соответствии с общедоступной документацией PyTorch и Tensorflow.
Перед проверками развертывания модели
Databricks рекомендует применять инструкции в этом разделе перед обслуживанием модели. Следующая parameters может обнаруживать проблемы на раннем этапе до ожидания конечной стадии. Перед развертыванием модели, см. раздел и проверьте входные данные модели на корректность, как указано в.
Тестирование прогнозов перед развертыванием
Перед развертыванием модели в конечной точке обслуживания проверьте автономные прогнозы с помощью виртуальной среды с помощью mlflow.models.predict
и примеров ввода. См. документацию по MLflow для тестирования прогнозов для получения более подробной информации.
input_example = {
"messages":
[
{"content": "How many categories of products do we have? Name them.", "role": "user"}
]
}
mlflow.models.predict(
model_uri = logged_chain_info.model_uri,
input_data = input_example,
)
проверить входные данные модели перед развертыванием
Конечные точки обслуживания моделей ожидают специального формата 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)
Вы также можете протестировать любые примеры входных данных в зарегистрированной модели с помощью API convert_input_example_to_serving_input
для generate допустимых входных данных 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)
Отладка после успешной сборки контейнера
Даже если контейнер успешно выполняет сборку, могут возникнуть проблемы при запуске модели или во время операции самой конечной точки. В следующих подразделах подробно описаны распространенные проблемы и способы устранения неполадок и отладки
Отсутствующие зависимости
Вы можете get ошибку, например An error occurred while loading the model. No module named <module-name>.
. Эта ошибка может указать, что зависимость отсутствует в контейнере. Убедитесь, что вы правильно обозначили все зависимости, которые должны быть включены в сборку контейнера. Обратите особое внимание на пользовательские библиотеки и убедитесь, что .whl
файлы включены в качестве артефактов.
Циклы журналов служб
Если сборка контейнера завершается сбоем, проверьте журналы службы, чтобы узнать, заметите ли они циклы при попытке загрузки модели конечной точкой. Если вы видите это поведение, попробуйте выполнить следующие действия.
- Откройте записную книжку и подключитесь к кластеру All-Purpose, использующего версию среды выполнения 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)
Сбой модели при отправке запросов в конечную точку
При вызове модели может возникать ошибка Encountered an unexpected error while evaluating the model. Verify that the input is compatible with the model for inference.
predict()
.
В функции возникает проблема predict()
с кодом. Databricks рекомендует загрузить модель из MLflow в записную книжку и вызвать ее. Это подчеркивает проблемы в функции predict()
, и вы можете увидеть where, что сбой происходит внутри метода.
Рабочая область превышает подготовленную параллелизм
Может появиться сообщение об ошибке Workspace exceeded provisioned concurrency quota
.
Вы можете увеличить параллелизм в зависимости от доступности региона. Обратитесь к группе учетной записи Databricks и укажите идентификатор рабочей области для запроса увеличения параллелизма.
Отладка после сбоя сборки контейнера
В этом разделе описаны проблемы, которые могут возникнуть при сбое сборки.
OSError: [Errno 28] No space left on device
Ошибка No space left
может возникать из-за слишком большого количества больших артефактов, регистрированных вместе с моделью без необходимости. Проверьте MLflow, что лишние артефакты не регистрируются вместе с моделью и пытаются повторно развернуть утонченный пакет.
Проблемы с брандмауэром Azure Catalog при подаче моделей из Unity
Может появиться ошибка: Build could not start due to an internal error. If you are serving a model from UC and Azure Firewall is enabled, this is not supported by default.
.
Обратитесь к группе учетных записей Databricks, чтобы помочь устранить проблему.
Сбой сборки из-за отсутствия доступности GPU
Может появиться сообщение об ошибке: Build could not start due to an internal error - please contact your Databricks representative.
.
Обратитесь к группе учетных записей Databricks, чтобы помочь устранить проблему.