Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 build relacionadas ao contêiner ou problemas durante a operação ou execução do modelo no ponto de extremidade.
:::tip Validar antes de depurar Está tendo problemas com a implantação? Comece com a validação de pré-implantação para capturar problemas comuns antes que eles ocorram. :::
Depurar o build do contêiner
O Databricks recomenda a revisão de logs para depuração e solução de problemas de erros em seu modelo que atende cargas de trabalho. Consulte Monitorar a qualidade do modelo e a integridade do ponto de extremidade para obter informações sobre logs e como visualizá-los.
Os logs de eventos (clique na guia Eventos ) na interface do usuário do workspace contêm informações sobre o progresso de um build de contêiner. Uma construção de contêiner bem-sucedida é destacada por um evento do tipo SERVED_ENTITY_CONTAINER_EVENT, acompanhado de uma mensagem Container image creation finished successfully. Se você não vir nenhum evento de build ou mensagem após uma hora de criação do endpoint, entre em contato com o suporte do Databricks para obter assistência.
Se o build for bem-sucedido, mas você encontrar outros erros, consulte Depurando após o sucesso do build do contêiner. Se o build falhar, consulte Como depurar após uma falha na construção do contêiner.
Depurar depois que o build do contêiner for bem-sucedido
Mesmo que o contêiner seja construído com êxito, pode haver problemas ao executar o modelo ou durante a operação do próprio endpoint. As subseções a seguir detalham problemas comuns e como solucioná-los.
Observação
Se o código do modelo retornar erros MlflowException, espere que o código de resposta seja mapeado para uma resposta 4xx. O Databricks considera esses erros de código de modelo como erros causados pelo cliente, pois eles podem ser resolvidos com base na mensagem de erro resultante.
5xx códigos de erro são reservados para comunicar erros em que o Databricks está em falha.
Dependência ausente
Você pode receber um erro como An error occurred while loading the model. No module named <module-name>., o que pode indicar que uma dependência está ausente do contêiner. Verifique se você indicou corretamente todas as dependências que devem ser incluídas na compilação do contêiner. Preste atenção especial às bibliotecas personalizadas e certifique-se de que os arquivos .whl sejam incluídos como artefatos.
O modelo falha ou atinge o tempo limite quando as solicitações são enviadas para o endpoint.
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 em seu modelo.
Esse erro pode indicar um problema de código na predict() função. O Databricks recomenda que você carregue o modelo do MLflow em um notebook e chame-o. Isso destaca os problemas na função predict(), e você pode ver onde a falha está acontecendo no método.
Análise de causa raiz de solicitações com falha
Se uma solicitação para um ponto de extremidade falhar, você poderá executar a análise de causa raiz usando tabelas de inferência. Se habilitadas, as tabelas de inferência registrarão automaticamente todas as solicitações e respostas em seu ponto de extremidade em uma tabela do Catálogo do Unity para você consultar.
- Para modelos externos e cargas de trabalho com taxa de transferência provisionada, consulte Monitorar os modelos atendidos usando tabelas de inferência habilitadas para Gateway de IA.
- Para modelos personalizados, confira Tabelas de inferência para monitorar e depurar modelos.
Para consultar tabelas de inferência:
- No workspace, vá para a guia Serviço e selecione o nome do ponto de extremidade.
- Na seção Tabelas de Inferência , localize o nome totalmente qualificado da tabela de inferência. Por exemplo,
my-catalog.my-schema.my-table. - Execute o seguinte em um notebook do Databricks:
%sql SELECT * FROM my-catalog.my-schema.my-table - Exiba e filtre em colunas como
request,responserequest_timeestatus_codepara entender as solicitações e restringir os resultados.%sql SELECT * FROM my-catalog.my-schema.my-table WHERE status_code != 200 - Se você habilitou o rastreamento de agente para agentes de IA, consulte a coluna Resposta para exibir rastreamentos detalhados. Consulte Habilitar tabelas de inferência para agentes de IA.
Workspace excede simultaneidade provisionada
Você pode receber um erro Workspace exceeded provisioned concurrency quota. Isso indica que você atingiu seu limite de área de trabalho para simultaneidade provisionada. Consulte os limites e regiões de Model Serving para obter mais informações sobre limites de simultaneidade.
Você pode liberar essa cota excluindo ou interrompendo endpoints não utilizados.
Esse limite pode ser aumentado dependendo da disponibilidade da região. Entre em contato com sua equipe de conta do Databricks e forneça sua ID do workspace para solicitar um aumento de simultaneidade.
Workspace excede o limite de solicitações paralelas
Você pode receber o seguinte erro 429: Exceeded max number of parallel requests. Please contact your Databricks representative to increase the limit.
Esse limite indica que você atingiu o limite do workspace no número máximo de solicitações que podem ser enviadas em paralelo. Consulte os limites e regiões de Serviço de Modelo para obter mais informações sobre esse limite.
Databricks recomenda mudar para pontos de extremidade otimizados por rota, onde esse limite foi removido. Se você não puder migrar para pontos de extremidade otimizados de rota, poderá reduzir o número de clientes que enviam solicitações de inferência ou entrar em contato com seu representante do Databricks para solicitar um aumento de cota.
Muitas solicitações simultâneas
Você pode receber o seguinte erro 429: Too many concurrent requests. Consider increasing the provisioned concurrency of the served entity. Esse erro indica que a concorrência provisionada atual do endpoint não pode lidar com o volume de tráfego de entrada. Se você tiver habilitado o dimensionamento automático para o ponto de extremidade, o sistema provisionará automaticamente concorrência adicional até o limite configurado do ponto de extremidade para gerenciar o aumento da carga. Se o dimensionamento automático não estiver habilitado, considere aumentar manualmente a simultaneidade provisionada ou habilitar o dimensionamento automático para lidar com picos de tráfego.
Depurar após falha no build do contêiner
Esta seção detalha os problemas que podem ocorrer quando o build falha.
OSError: [Errno 28] No space left on device
O erro No space left pode ser devido a muitos artefatos grandes sendo registrados ao lado do modelo desnecessariamente. Verifique no MLflow se os artefatos estranhos não são registrados junto com o modelo e tente reimplantar o pacote reduzido.
Problemas do Firewall do Azure com o serviço de modelos do Catálogo do Unity
Você pode ver o erro: 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 do Databricks e eles vão ajudar você a resolver.
Falha de compilação devido à falta de disponibilidade de GPU
Devido a restrições na disponibilidade e no fornecimento de GPU, o build da GPU pode falhar com este erro: Build could not start due to an internal error - please contact your Databricks representative..
Entre em contato com sua equipe de conta do Databricks e eles vão ajudar você a resolver. Dependendo da disponibilidade da região, a equipe pode provisionar mais recursos de GPU.
Versões do pacote de biblioteca instalado
O Databricks recomenda que você defina todas as bibliotecas importantes como dependências de modelo para garantir um comportamento de modelo consistente e reproduzível entre ambientes. Nos logs de build, você pode confirmar as versões do pacote instaladas corretamente.
- Para versões do MLflow, se você não tiver uma versão especificada, o Model Serving usará a versão mais recente.
- Para o serviço de GPU personalizado, o Model Serving instala as versões recomendadas de e
cudade acordo com a documentação pública docuDNNPyTorch e do Tensorflow.
Modelos de log que exigem flash-attn
Se você estiver registrando um modelo que requer flash-attn, o Databricks recomenda usar uma versão personalizada do wheel flash-attn. Caso contrário, erros de build, como ModuleNotFoundError: No module named 'torch' podem resultar.
Para usar uma versão personalizada do wheel flash-attn, especifique todos os requisitos de pip como uma lista e passe-a como um parâmetro para sua função mlflow.transformers.log_model. Você também deve especificar as versões pytorch, torch e torchvision compatíveis com a versão CUDA especificada em seu wheel flash attn.
Por exemplo, o Databricks recomenda usar as seguintes versões e rodas para CUDA 11.8:
- Pytorch
- Tocha 2.0.1+cu118
- Torchvision 0.15.2+cu118
- Flash-Attn
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)