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


Руководство по отладке службы моделей

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

:: tip Проверьте перед отладкой Есть проблемы с развертыванием? Начните с предварительной проверки развертывания , чтобы поймать распространенные проблемы до их возникновения. :::

Отладьте сборку контейнера

Databricks рекомендует просматривать журналы для отладки и устранения ошибок в рабочих нагрузках, обслуживающих модель. Сведения о журналах и их просмотре см. в разделе "Мониторинг качества модели" и работоспособности конечных точек.

Журналы событий (щелкните вкладку "События ") в пользовательском интерфейсе рабочей области содержат сведения о ходе сборки контейнера. Контейнер, собранный успешно, выделяется типом события SERVED_ENTITY_CONTAINER_EVENT в сочетании с сообщением Container image creation finished successfully. Если после часа создания конечной точки не отображается какое-либо событие сборки или сообщение, обратитесь в службу поддержки Databricks.

Если сборка выполнена успешно, но вы столкнулись с другими ошибками, смотрите Отладка после успешной сборки контейнера. Если сборка завершается ошибкой, см. статью "Отладка после сбоя сборки контейнера".

Отладка после успешной сборки контейнера

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

Замечание

Если код модели возвращает MlflowException ошибки, ожидается, что код ответа будет сопоставлен с ответом 4xx . Databricks считает, что эти ошибки кода модели являются ошибками, вызванными клиентом, так как их можно устранить на основе результирующего сообщения об ошибке. 5xx Коды ошибок зарезервированы для передачи информации об ошибках, за которые отвечает Databricks.

Отсутствующая зависимость

Возможно, возникнет ошибка An error occurred while loading the model. No module named <module-name>., которая может указывать на то, что в контейнере отсутствует зависимость. Убедитесь, что вы правильно обозначили все зависимости, которые должны быть включены в сборку контейнера. Обратите особое внимание на библиотеки, созданные по вашему запросу, и убедитесь, что файлы .whl включены в качестве артефактов.

Сбой модели или превышение времени ожидания при отправке запросов на конечную точку.

Вы можете получить ошибку, такую как Encountered an unexpected error while evaluating the model. Verify that the input is compatible with the model for inference., если predict() вызывается на вашей модели.

Эта ошибка может указывать на проблему кода в predict() функции. Databricks рекомендует загрузить модель из MLflow в записную книжку и вызвать ее. Это позволяет выделить проблемы в функции predict() и увидеть, где происходит сбой в методе.

Анализ первопричин неудачных запросов

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

Чтобы запросить таблицы вывода, выполните приведенные ниже действия.

  1. В рабочей области перейдите на вкладку "Обслуживание " и выберите имя конечной точки.
  2. В разделе таблицы вывода найдите полностью квалифицированное имя таблицы вывода. Например: my-catalog.my-schema.my-table.
  3. Выполните следующую команду в записной книжке Databricks:
    %sql
    SELECT * FROM my-catalog.my-schema.my-table
    
  4. Просмотрите и отфильтруйте такие столбцы, как request, responserequest_time и status_code чтобы понять запросы и сократить результаты.
    %sql
    SELECT * FROM my-catalog.my-schema.my-table
    WHERE status_code != 200
    
  5. Если вы включили трассировку агента ИИ, просмотрите столбец "Ответ " для просмотра подробных трассировок. См. статью "Включить таблицы вывода" для агентов ИИ.

Рабочая среда превышает зарезервированную параллельную обработку.

Может появиться сообщение об ошибке Workspace exceeded provisioned concurrency quota . Это означает, что вы достигли квоты рабочего пространства для предоставленной параллельности. Дополнительные сведения об ограничениях параллелизма см. в разделе "Ограничения обслуживания моделей" и регионов .

Эту квоту можно освободить , удалив или остановив неиспользуемые конечные точки.

Это ограничение может быть увеличено в зависимости от доступности региона. Обратитесь к вашей команде поддержки Databricks и укажите идентификатор рабочей области для запроса увеличения лимита параллелизма.

Рабочая область превышает ограничение параллельных запросов

Может появиться следующая ошибка 429: Exceeded max number of parallel requests. Please contact your Databricks representative to increase the limit Это ограничение указывает, что вы достигли ограничения рабочей области на максимальное количество запросов, которые могут отправляться параллельно. Дополнительные сведения об этом ограничении см. в разделе "Ограничения обслуживания моделей" и регионов .

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

Слишком много одновременных запросов

Вы можете получить следующую ошибку 429: Too many concurrent requests. Consider increasing the provisioned concurrency of the served entity. эта ошибка указывает, что предоставленная параллельность вашей конечной точки не может справиться с входящим объемом трафика. Если вы включили автоматическое масштабирование для конечной точки, система автоматически подготавливает дополнительные параллелизмы до настроенного ограничения конечной точки для обработки повышенной нагрузки. Если автоматическое масштабирование не включено, попробуйте вручную увеличить подготовленный параллелизм или включить автомасштабирование для обработки пиков трафика.

Отладка после сбоя сборки контейнера

В этом разделе описаны проблемы, которые могут возникнуть при сбое сборки.

OSError: [Errno 28] No space left on device

Ошибка No space left может возникать из-за слишком большого количества больших артефактов, регистрированных вместе с моделью без необходимости. Проверьте в MLflow, что лишние артефакты не регистрируются вместе с моделью, и попробуйте повторно развернуть упрощённый пакет.

Проблемы брандмауэра Azure с обслуживанием моделей из каталога 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

Из-за ограничений в поставках и доступности GPU ваша сборка GPU может завершиться с этой ошибкой: Build could not start due to an internal error - please contact your Databricks representative..

Обратитесь к команде по работе с клиентами Databricks, чтобы помочь разрешить проблему. В зависимости от доступности региона команда может подготовить дополнительные ресурсы GPU.

Установленные версии пакета библиотеки

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

  • Для версий MLflow, если у вас нет указанной версии, служба моделей использует последнюю версию.
  • Для пользовательского обслуживания GPU Model Serving устанавливает рекомендуемые версии cuda и cuDNN в соответствии с публичной документацией PyTorch и Tensorflow.

Логарифмические модели, для которых требуется flash-attn

Если требуется ведение журнала модели, flash-attnDatabricks рекомендует использовать пользовательскую версию flash-attnколеса. В противном случае могут возникнуть ошибки сборки, такие как ModuleNotFoundError: No module named 'torch'.

Чтобы использовать пользовательскую версию flash-attn библиотеки, укажите все требования pip в виде списка и передайте его в качестве параметра в функцию mlflow.transformers.log_model. Кроме того, необходимо указать версии pytorch, torch и torchvision, которые совместимы с версией CUDA, указанной в вашем flash attn пакете wheel.

Например, Databricks рекомендует использовать следующие версии и колеса для CUDA 11.8:


logged_model=mlflow.transformers.log_model(
transformers_model=test_pipeline,
       artifact_path="artifact_path",
       pip_requirements=["--extra-index-url https://download.pytorch.org/whl/cu118", "mlflow==2.13.1", "setuptools<70.0.0", "torch==2.0.1+cu118", "accelerate==0.31.0", "astunparse==1.6.3", "bcrypt==3.2.0", "boto3==1.34.39", "configparser==5.2.0", "defusedxml==0.7.1", "dill==0.3.6", "google-cloud-storage==2.10.0", "ipython==8.15.0", "lz4==4.3.2", "nvidia-ml-py==12.555.43", "optree==0.12.1", "pandas==1.5.3", "pyopenssl==23.2.0", "pytesseract==0.3.10", "scikit-learn==1.3.0", "sentencepiece==0.1.99", "torchvision==0.15.2+cu118", "transformers==4.41.2", "https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.8/flash_attn-2.5.8+cu118torch2.0cxx11abiFALSE-cp311-cp311-linux_x86_64.whl"],
       input_example=input_example,
       registered_model_name=registered_model_name)