Guia de depuração para serviço de modelo
Este artigo demonstra as etapas de depuração para problemas comuns que os usuários podem encontrar ao trabalhar com pontos de extremidade de serviço de modelo. Problemas comuns podem incluir erros que os usuários encontram quando o ponto de extremidade falha ao inicializar ou iniciar, falhas de compilação relacionadas ao contêiner ou problemas durante a operação ou execução do modelo no ponto de extremidade.
Aceder e rever registos
O Databricks recomenda a revisão de logs de compilação para depuração e solução de erros em seu modelo que atende cargas de trabalho. Consulte Monitorar a qualidade do modelo e a integridade do endpoint para obter informações sobre logs e como exibi-los.
Verifique os logs de eventos para o modelo na interface do usuário do espaço de trabalho e verifique se há uma mensagem de compilação de contêiner bem-sucedida. Se você não vir uma mensagem de compilação depois de uma hora, entre em contato com o suporte do Databricks para obter assistência.
Se sua compilação for bem-sucedida, mas você encontrar outros erros, consulte Depuração após a compilação do contêiner ser bem-sucedida. Se sua compilação falhar, consulte Depuração após falha na compilação do contêiner.
Versões do pacote de biblioteca instalado
Em seus logs de compilação, você pode confirmar as versões do pacote que estão instaladas.
- Para versões MLflow, se você não tiver uma versão especificada, o Model Serving usará a versão mais recente.
- Para uma GPU personalizada, o Model Serving instala as versões recomendadas e de acordo com a documentação pública do
cuda
cuDNN
PyTorch e do Tensorflow.
Depuração após a compilação do contêiner ser bem-sucedida
Mesmo que o contêiner seja compilado com êxito, pode haver problemas quando você executa o modelo ou durante a operação do próprio ponto de extremidade. As subseções a seguir detalham problemas comuns e como solucionar problemas e depurar
Dependência ausente
Você pode receber um erro como An error occurred while loading the model. No module named <module-name>.
. Esse erro pode indicar que uma dependência está faltando no contêiner. Verifique se você denotou corretamente todas as dependências que devem ser incluídas na compilação do contêiner. Preste especial atenção às bibliotecas personalizadas e certifique-se de que os .whl
arquivos sejam incluídos como artefatos.
Looping de logs de serviço
Se a compilação do contêiner falhar, verifique os logs de serviço para ver se eles estão fazendo looping quando o ponto de extremidade tenta carregar o modelo. Se você vir esse comportamento, tente as seguintes etapas:
- Abra um bloco de anotações e anexe a um cluster multiuso que usa uma versão do Databricks Runtime, não do Databricks Runtime for Machine Learning.
- Carregue o modelo usando MLflow e tente depurar a partir daí.
Você também pode carregar o modelo localmente no seu PC e depurar a partir daí. Carregue seu modelo localmente usando o seguinte:
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)
O modelo falha quando as solicitações são enviadas para o ponto de extremidade
Você pode receber um erro como Encountered an unexpected error while evaluating the model. Verify that the input is compatible with the model for inference.
quando predict()
é chamado no seu modelo.
Há um problema de predict()
código na função. O Databricks recomenda que você carregue o modelo do MLflow em um bloco de anotações e o chame. Isso destaca os problemas na predict()
função e você pode ver onde a falha está acontecendo dentro do método.
O espaço de trabalho excede a simultaneidade provisionada
Você pode receber um Workspace exceeded provisioned concurrency quota
erro.
Você pode aumentar a simultaneidade dependendo da disponibilidade da região. Entre em contato com sua equipe de conta Databricks e forneça seu ID de espaço de trabalho para solicitar um aumento de simultaneidade.
Depuração após falha na compilação do contêiner
Esta seção detalha problemas que podem ocorrer quando sua compilação falha.
OSError: [Errno 28] No space left on device
O No space left
erro pode ser devido a muitos artefatos grandes sendo registrados ao lado do modelo desnecessariamente. Verifique no MLflow se artefatos estranhos não são registrados ao lado do modelo e tente reimplantar o pacote reduzido.
Problemas do Firewall do Azure com modelos de serviço do Catálogo Unity
Poderá ver um erro como 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.
.
Entre em contato com sua equipe de conta Databricks para ajudar a resolver.
Falha de compilação devido à falta de disponibilidade da GPU
Poderá ver um erro como Build could not start due to an internal error - please contact your Databricks representative.
.
Entre em contato com sua equipe de conta Databricks para ajudar a resolver.