Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aprenda a otimizar o desempenho dos endpoints de Model Serving para cargas de produção que exigem alta taxa de transferência, baixa latência e desempenho confiável.
As estratégias de otimização dividem-se em três categorias:
- Otimizações de endpoints: Configure a infraestrutura de endpoint para melhor desempenho
- Otimizações de modelos: Melhorar a eficiência e o rendimento do modelo
- Otimizações para clientes: Otimizar a forma como os clientes interagem com os endpoints de serviço
Quando otimizar o seu endpoint
Considere otimizar o seu endpoint de Model Serving quando encontrar algum dos seguintes cenários:
- Elevado volume de consultas: A sua aplicação envia mais de 50 mil consultas por segundo (QPS) para um único endpoint
- Requisitos de latência: A sua aplicação requer tempos de resposta inferiores a 100ms
- Gargalos de escalabilidade: Os endpoints experienciam filas ou devolvem erros HTTP 429 durante picos de tráfego
- Otimização de custos: Quer reduzir os custos de serviço mantendo as metas de desempenho
- Preparação para produção: Está a preparar-se para passar do desenvolvimento para as cargas de produção
Otimizações da infraestrutura
As otimizações da infraestrutura melhoram o encaminhamento da rede, o comportamento de escalabilidade e a capacidade de computação.
Otimização de rotas
A otimização de rotas proporciona a melhoria de infraestrutura mais significativa para cargas de trabalho de alto rendimento. Quando ativa a otimização de rotas num endpoint, o Databricks Model Serving melhora o caminho de rede para pedidos de inferência, resultando numa comunicação mais rápida e direta entre clientes e modelos.
Benefícios de desempenho:
| Característica | Limite padrão de endpoint | Limite de endpoint otimizado por rotas |
|---|---|---|
| Consultas por segundo (QPS) por espaço de trabalho | 200 | 50.000+ (contacte a Databricks para limites superiores) |
| Concorrência de clientes por espaço de trabalho | 192-1024 (varia consoante a região) | Sem limite explícito (limitado por concorrência provisionada) |
| Concurrência configurada de endpoints por entidade servida | 1,024 | 1.024 (contacte a Databricks para limites mais elevados) |
Quando usar a otimização de rotas:
- Cargas de trabalho que requerem mais de 200 QPS
- Aplicações com requisitos rigorosos de latência (sobrecarga inferior a 50ms)
- Implementações em produção que servem múltiplos utilizadores simultâneos
Importante
A otimização de rotas está disponível apenas para endpoints de modelos de serviço personalizados. As APIs do Foundation Model e modelos externos não suportam otimização de rotas. Tokens OAuth são necessários para autenticação; Tokens de acesso pessoal não são suportados.
Consulte Otimização de rotas nos endpoints de serviço para instruções de configuração e Interrogar endpoints de serviço otimizados para rotas para obter detalhes sobre consultas.
Concorrência provisionada
A concorrência provisionada controla quantos pedidos simultâneos o seu endpoint pode processar. Configure a concorrência provisionada com base nos seus requisitos esperados de latência e QPS.
Diretrizes de configuração:
- Concorrência mínima: Definido suficientemente alto para gerir tráfego base sem necessidade de fila
- Concorrência máxima: Definida suficientemente alta para acomodar picos de tráfego enquanto se controla os custos
- Autoescalonamento: Permitir o autoescalonamento para ajustar dinamicamente a capacidade com base na procura
Calcule a concorrência necessária:
Required Concurrency = Target QPS × Average Latency (seconds)
Por exemplo, se a sua meta for 100 QPS com uma latência média de 200ms:
Required Concurrency = 100 × 0.2 = 20
Use testes de carga para medir a latência real e determinar as definições ótimas de concorrência.
Tipos de instância
Escolha os tipos de instância com base nos requisitos de computação do seu modelo:
| Tipo de instância | Melhor para | Trade-offs |
|---|---|---|
| CPU (Pequeno, Médio, Grande) | Modelos leves, lógica de inferência simples | Menor custo, mais lento para modelos que exigem muita computação |
| GPU (Pequeno, Médio, Grande) | Modelos grandes, cálculos complexos, processamento de imagem/vídeo | Custo mais elevado, desempenho ótimo para aprendizagem profunda |
Sugestão
Comece com instâncias de CPU para desenvolvimento e testes. Mude para instâncias de GPU apenas se observar uma alta latência de inferência ou se o seu modelo exigir computação especializada (como operações de aprendizagem profunda).
Otimizações de modelos
As otimizações de modelos melhoram a velocidade de inferência e a eficiência dos recursos.
Tamanho e complexidade do modelo
Tamanho e Complexidade do Modelo: Modelos menores e menos complexos geralmente conduzem a tempos de inferência mais rápidos e a QPS mais elevados. Considere técnicas como quantização de modelos ou poda se o seu modelo for grande.
Criação de batches
Se a sua aplicação conseguir enviar múltiplos pedidos numa única chamada, ative o batching do lado do cliente. Isto pode reduzir significativamente a sobrecarga para cada previsão.
Otimização do pré-processamento e pós-processamento
Descarregar o pré-processamento e pós-processamento complexos dos endpoints de serviço para reduzir a carga na infraestrutura de inferência.
Otimizações do lado do cliente
As otimizações do lado do cliente melhoram a forma como as aplicações interagem com os endpoints de serviço.
Agrupamento de conexões
O pooling de conexões reutiliza ligações existentes em vez de criar novas ligações para cada pedido, reduzindo significativamente a sobrecarga.
- Use o Databricks SDK, que implementa automaticamente as melhores práticas de pooling de ligações
- Se usares clientes personalizados, implementa tu próprio o pooling de ligações.
Gestão de erros e estratégias de tentativas
Implemente uma gestão robusta de erros para gerir falhas temporárias de forma eficiente, especialmente durante eventos de autoescalabilidade ou interrupções de rede.
Otimização do tamanho da carga útil
Minimizar o tamanho da carga de dados de pedidos e respostas para reduzir o tempo de transferência na rede e melhorar o throughput.
Medir e melhorar o desempenho
Monitorização do desempenho
Monitorize o desempenho dos endpoints utilizando as ferramentas fornecidas pelo Mosaic AI Model Serving:
| Métrico | O que mede | Target | Ação em caso de excesso |
|---|---|---|---|
| Latência (P50, P90, P99) | Tempo de resposta aos pedidos | Depende da aplicação (tipicamente <100-500ms) | Verifique se há filas e otimize o modelo ou o cliente |
| Rendimento (QPS) | Pedidos concluídos por segundo | Depende da carga de trabalho | Permitir a otimização de rotas, aumentar a concorrência provisionada |
| Taxa de erro | Percentagem de pedidos falhados | <1% | Revisar registos de serviço, verificar problemas de capacidade |
| Profundidade da fila | Pedidos à espera de processamento | 0 (sem fila) | Aumentar a concorrência provisionada ou ativar o dimensionamento automático |
| Utilização de CPU/Memória | Utilização de recursos | <80% | Aumentar o tipo de instância ou aumentar a concorrência |
Consulte Monitorizar a qualidade do modelo e a saúde dos endpoints para orientações detalhadas de monitorização e Monitorizar e exportar métricas de saúde dos pontos finais de serviço para o Prometheus e o Datadog para exportar métricas para ferramentas de observabilidade.
Testes de carga
O teste de carga mede o desempenho dos pontos finais em condições de tráfego realistas e ajuda a:
- Determinar as configurações ideais de concorrência provisionada
- Identificar estrangulamentos de desempenho
- Validar requisitos de latência e capacidade
- Compreenda a relação entre a concorrência do cliente e a concorrência do servidor
Veja Testes de carga para servidores de endpoints.
Resolver problemas de desempenho comuns
Queuing
O Model Serving suporta o autoescalonamento para ajustar a capacidade com base nos padrões de tráfego. No entanto, súbitos picos de tráfego podem causar fila porque o escalonamento automático requer tempo para detetar o aumento da carga e provisionar capacidade adicional. Durante este período, os pedidos recebidos podem temporariamente exceder a capacidade disponível, fazendo com que os pedidos entrem em fila.
O enfileiramento ocorre quando a taxa de solicitação ou concorrência ultrapassa a capacidade atual de processamento do endpoint. Isto acontece tipicamente durante picos bruscos de tráfego, explosões de carga de trabalho ou quando o endpoint tem concorrência provisionada insuficiente. Os pontos de extremidade do Model Serving permitem filas temporárias para lidar com rajadas; no entanto, além de um limite estabelecido, o ponto de extremidade devolve erros HTTP 429 (Demasiados Pedidos) para proteger a estabilidade do sistema.
A fila aumenta a latência porque os pedidos em fila esperam antes de serem processados. Para minimizar as filas:
- Defina a concorrência mínima provisionada suficientemente alta para lidar com tráfego base mais rajadas típicas
- Permitir a otimização de rotas para limites de capacidade mais elevados
- Implemente lógica de tentativa de repetição com backoff exponencial nas aplicações cliente.
Gargalos externos de APIs
Os modelos frequentemente chamam APIs externas para enriquecimento de dados, recuperação de funcionalidades ou outras tarefas durante a inferência. Estas dependências externas podem tornar-se gargalos de desempenho:
- Latência: Meça o tempo de resposta de cada chamada de API externa. A alta latência nestas chamadas aumenta diretamente a latência global de serviço e reduz a largura de banda.
- Limites de throughput: APIs externas podem impor limites de taxa ou restrições de capacidade. Ultrapassar estes limites pode causar estrangulamento, erros e degradação do desempenho.
- Taxas de erro: Erros frequentes de APIs externas podem desencadear novas tentativas e aumentar a carga no endpoint de atendimento.
- Cache: Implementar cache para dados frequentemente acedidos de APIs externas para reduzir o número de chamadas e melhorar os tempos de resposta.
Monitorize estes fatores para identificar gargalos e implementar otimizações direcionadas para cargas de trabalho de alto rendimento.