guia de depuração para manutenção do modelo
Este artigo demonstra as etapas de depuração para problemas comuns que os usuários podem encontrar ao trabalhar com o modelo de endpoint servindo. Os problemas comuns podem incluir erros que os usuários encontram quando o endpoint não consegue inicializar ou começar, falhas de construção relacionadas ao contêiner ou problemas durante as operações ou a execução do modelo no endpoint.
:::dica Valide antes da depuração Está com problemas de implantação? Comece com a validação pré-implantação para detectar problemas comuns antes que eles ocorram. :::
Depure a construção do seu contêiner.
Databricks recomenda revisar logs em busca de erros e solucioná-los em suas cargas de trabalho do modelo de serviço. Consulte a seção "Monitorar a qualidade do modelo e a integridade endpoint para obter informações sobre logs e como view -los.
Os logs de eventos (clique na tab Eventos ) na interface do usuário workspace contêm informações sobre o progresso da criação de um contêiner. Uma construção de contêiner bem-sucedida é destacada por um tipo de evento SERVED_ENTITY_CONTAINER_EVENT juntamente com uma mensagem Container image creation finished successfully. Se você não visualizar nenhum evento ou mensagem de compilação após uma hora da criação do endpoint, entre em contato com o suporte da Databricks para obter assistência.
Se a sua compilação for bem-sucedida, mas você encontrar outros erros, consulte Depurar após a compilação bem-sucedida do contêiner. Se a sua compilação falhar, consulte Depurar após falha na compilação do contêiner.
Depurar após a criação bem-sucedida do contêiner
Mesmo que o contêiner seja criado com sucesso, podem ocorrer problemas ao executar o modelo ou durante as operações do próprio endpoint . As subseções a seguir detalham problemas comuns e como solucioná-los.
Se seu código de modelo retornar erros MlflowException, espere que o código de resposta seja mapeado para uma resposta 4xx. A 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. Os códigos de erro 5xx são reservados para comunicar erros em que o Databricks está em falta.
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á faltando no contêiner. Verifique se você indicou corretamente todas as dependências que devem ser incluídas na construção do contêiner. Preste atenção especial à biblioteca personalizada 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 ao 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.
Este erro pode indicar um problema de código na função predict() . Databricks recomenda que você carregue o modelo do MLflow em um Notebook e o execute. Fazendo isso, destacam-se os problemas na função predict() e você pode ver onde a falha está ocorrendo dentro do método.
Análise da causa raiz das solicitações com falha
Se uma solicitação a um endpoint falhar, você pode realizar uma análise da causa raiz usando tabelas de inferência. Se ativadas, as tabelas de inferência log automaticamente todas as solicitações e respostas ao seu endpoint em uma tabela Unity Catalog para que você possa consultá-las.
-
Para modelos externos, endpoint de provisionamento de taxa de transferência e agentes do AI, consulte Monitorar modelos atendidos usando tabelas de inferência habilitadas pelo AI Gateway.
-
Para modelos personalizados, consulte Tabelas de inferência para monitoramento e depuração de modelos.
Para consultar tabelas de inferência:
-
Em seu site workspace, acesse Serving tab e selecione o nome endpoint.
-
Na seção Tabelas de inferência , encontre o nome totalmente qualificado da tabela de inferência. Por exemplo,
my-catalog.my-schema.my-table. -
Execute o seguinte em um notebook Databricks:
Python%sql
SELECT * FROM my-catalog.my-schema.my-table -
Visualize e filtre em colunas como
request,response,request_timeestatus_codepara entender as solicitações e restringir os resultados.Python%sql
SELECT * FROM my-catalog.my-schema.my-table
WHERE status_code != 200 -
Se o senhor ativou o rastreamento de agentes para AI agentes, consulte a coluna Response (Resposta ) para view rastreamentos detalhados. Consulte Habilitar tabelas de inferência para agentes do site AI.
o espaço de trabalho excede a simultaneidade de provisionamento
Você pode receber um erro Workspace exceeded provisioned concurrency quota . Isso indica que você atingiu sua cota workspace para provisionamento simultâneo. Consulte limites e regiões do modelo de jogo para obter mais informações sobre limites de simultaneidade.
Você pode liberar essa cota excluindo ou interrompendo os endpoints não utilizados.
Esse limite pode ser aumentado dependendo da disponibilidade na região. Entre em contato com a equipe da sua account Databricks e forneça o ID do seu workspace para solicitar um aumento de simultaneidade.
O espaço de trabalho excedeu 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 workspace para o número máximo de solicitações que podem ser enviadas em paralelo. Consulte limites e regiões do modelo de navegação para obter mais informações sobre este limite.
Databricks recomenda a migração para endpoints otimizados para roteamento, onde esse limite foi removido. Se não for possível migrar para um endpoint otimizado para roteamento, você pode reduzir o número de clientes que enviam solicitações de inferência ou entrar em contato com seu representante 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.
Este erro indica que a capacidade de provisionamento simultâneo atual do seu endpoint não consegue lidar com o volume de tráfego recebido. Se você tiver habilitado o dimensionamento automático para seu endpoint, o sistema provisionará automaticamente recursos adicionais de endpoint até o limite configurado para lidar com o aumento da carga. Se o dimensionamento automático não estiver ativado, considere aumentar manualmente a simultaneidade de provisionamento ou ativar o dimensionamento automático para lidar com picos de tráfego.
Depurar após falha na criação do contêiner
Esta seção detalha os problemas que podem ocorrer quando sua compilação falha.
OSError: [Errno 28] No space left on device
O erro No space left pode ser devido ao excesso de artefatos grandes sendo registrados ao lado do modelo desnecessariamente. Verifique em MLflow se artefatos estranhos não estão registrados ao lado do modelo e tente reimplantar o pacote reduzido.
Falha na compilação devido à falta de disponibilidade da GPU
Devido a restrições no fornecimento e disponibilidade de GPUs, sua compilação de GPU pode falhar com este erro: Build could not start due to an internal error - please contact your Databricks representative..
Entre em contato com a equipe da sua account Databricks para obter ajuda na resolução do problema. Dependendo da disponibilidade na região, a equipe pode provisionar mais recursos de GPU.
Versões instaladas da biblioteca pacote
Databricks recomenda que você defina todas as bibliotecas importantes como dependências do modelo para garantir um comportamento consistente e reproduzível do modelo em diferentes ambientes. Nos logs de compilação, você pode confirmar as versões dos pacotes que foram instaladas corretamente.
- Para as versões do MLflow, se o senhor não tiver uma versão especificada, o servindo modelo usará a versão mais recente.
- Para o serviço personalizado de GPU, o servindo modelo instala as versões recomendadas de
cudaecuDNNde acordo com a documentação pública do PyTorch e do Tensorflow.
modelos registrados que exigem flash-attn
Se o senhor estiver registrando um modelo que requer flash-attn, a Databricks recomenda o uso de uma versão de roda personalizada de flash-attn. Caso contrário, podem ocorrer erros de compilação, como ModuleNotFoundError: No module named 'torch'.
Para usar uma versão de roda personalizada de flash-attn, especifique todos os requisitos de pip como uma lista e passe-os como um parâmetro para sua função mlflow.transformers.log_model. O senhor também deve especificar as versões PyTorch, torch e torchvision que são compatíveis com a versão CUDA especificada na roda flash attn.
Por exemplo, a Databricks recomenda usar as seguintes versões e rodas para CUDA 11.8:
- PyTorch
- Tocha 2.0.1+cu118
- Visão da tocha 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)