Otimize o modelo de endpoint para produção
Aprenda como otimizar o endpoint do modelo de atividade para cargas de trabalho de produção que exigem alta taxa de transferência, baixa latência e desempenho confiável.
As estratégias de otimização se dividem em três categorias:
- Otimizações de endpoint: configure a infraestrutura endpoint para melhor desempenho.
- Otimizações do modelo: Melhorar a eficiência do modelo e a taxa de transferência.
- Otimizações do cliente: Otimize a forma como os clientes interagem com o endpoint de serviço.
Quando otimizar seu endpoint
Considere otimizar endpoint do seu modelo de serviço quando você se deparar com qualquer um dos seguintes cenários:
- Alto volume de consultas : Seu aplicativo envia mais de 50 mil consultas por segundo (QPS) para um único endpoint.
- Requisitos de latência : Seu aplicativo requer tempos de resposta inferiores a 100 ms.
- Gargalos de escalabilidade : enfileiramento da experiência do usuário no endpoint ou retorno de erros HTTP 429 durante picos de tráfego.
- Otimização de custos : você deseja reduzir os custos de atendimento, mantendo as metas de desempenho.
- Preparação para produção : Você está se preparando para migrar das cargas de trabalho de desenvolvimento para as de produção.
Otimizações de infraestrutura
As otimizações de infraestrutura melhoram o roteamento de rede, o comportamento de escalabilidade e a capacidade compute .
Otimização de rotas
A otimização de rotas proporciona a melhoria de infraestrutura mais significativa para cargas de trabalho de alta taxa de transferência. Ao ativar a otimização de rotas em um endpoint, Databricks servindo modelo melhora o caminho de rede para solicitações de inferência, resultando em uma comunicação mais rápida e direta entre clientes e modelos.
Benefícios de desempenho:
Recurso | Limite endpoint padrão | limite endpoint otimizado para rota |
|---|---|---|
Consultas por segundo (QPS) por workspace | 200 | Mais de 50.000 (entre em contato com a Databricks para limites maiores) |
Simultaneidade de clientes por workspace | 192-1024 (varia conforme a região) | Sem limite explícito (limitado pela concorrência do provisionamento) |
provisionamento de endpoints concorrentes por entidade atendida | 1.024 | 1.024 (entre em contato com a Databricks para limites maiores) |
Quando usar a otimização de rotas:
- Cargas de trabalho que exigem mais de 200 QPS
- Aplicações com requisitos de latência rigorosos (sobrecarga inferior a 50 ms)
- Implantações de produção atendendo a múltiplos usuários simultâneos
A otimização de rotas está disponível apenas para endpoints personalizados do modelo de servir. As APIs do Foundation Model e os modelos externos não suportam otimização de rotas. tokens OAuth são necessários para autenticação; access tokens pessoal não são suportados.
Consulte Otimização de rotas no ponto de extremidade de serviço para obter instruções de configuração e Consultar ponto de extremidade de serviço otimizado para rotas para obter detalhes sobre a consulta.
provisionamento concorrência
O provisionamento de concorrência controla quantas solicitações simultâneas seu endpoint pode processar. Configure a simultaneidade de provisionamento com base nos seus requisitos esperados de QPS e latência.
Diretrizes de configuração:
- Concorrência mínima : Defina um valor suficientemente alto para lidar com o tráfego básico sem enfileiramento.
- Concorrência máxima : Defina um valor suficientemente alto para acomodar picos de tráfego, controlando os custos.
- Dimensionamento automático : Ative o dimensionamento automático para ajustar dinamicamente a capacidade com base na demanda.
Calcular a concorrência necessária:
Required Concurrency = Target QPS × Average Latency (seconds)
Por exemplo, se sua meta for 100 QPS com latência média de 200 ms:
Required Concurrency = 100 × 0.2 = 20
Utilize testes de carga para medir a latência real e determinar as configurações ideais de concorrência.
Tipos de instância
Escolha os tipos de instância com base nos requisitos compute do seu modelo:
Tipo de instância | Ideal para | Trocas |
|---|---|---|
CPU (Pequena, Média, Grande) | Modelos leves, lógica de inferência simples | Menor custo, mais lento para modelos que exigem alto poder compute |
GPU (Pequena, Média, Grande) | Modelos de grande porte, cálculos complexos, processamento de imagem/vídeo | Custo mais alto, desempenho ideal para aprendizagem profunda |
Comece com instâncias de CPU para desenvolvimento e testes. Utilize instâncias de GPU somente se observar alta latência de inferência ou se seu modelo exigir compute especializada (como operações de aprendizagem profunda).
Otimizações de modelo
As otimizações de modelo melhoram a velocidade de inferência e a eficiência de recursos.
Tamanho e complexidade do modelo
Tamanho e complexidade do modelo: Modelos menores e menos complexos geralmente levam a tempos de inferência mais rápidos e maior QPS (questões por segundo). Considere técnicas como quantização de modelos ou poda se o seu modelo for grande.
muitos
Se o seu aplicativo puder enviar várias solicitações em uma única chamada, habilite o recurso de lotes no lado do cliente. Isso pode reduzir significativamente a sobrecarga por previsão.
Otimização de pré-processamento e pós-processamento
Descarregar o pré-processamento e o pós-processamento complexos do ponto de extremidade 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 o ponto de extremidade de serviço.
Agrupamento de conexões
O agrupamento de conexões reutiliza conexões existentes em vez de criar novas conexões para cada solicitação, reduzindo significativamente a sobrecarga.
- Utilize o SDK do Databricks, que implementa automaticamente as melhores práticas de agrupamento de conexões.
- Se estiver usando clientes personalizados, implemente o agrupamento de conexões você mesmo.
Estratégias de tratamento de erros e repetição
Implemente um tratamento de erros robusto para lidar de forma adequada com falhas temporárias, especialmente durante eventos de escalonamento automático ou interrupções de rede.
Otimização do tamanho da carga útil
Minimizar o tamanho das cargas úteis de requisição e resposta para reduzir o tempo de transferência na rede e melhorar a taxa de transferência.
Medir e melhorar o desempenho
desempenho
Monitore o desempenho endpoint usando as ferramentas fornecidas pelo Mosaic AI Model Serving:
Métrica | O que mede | Destino | Ação a ser tomada em caso de excesso |
|---|---|---|---|
Latência (P50, P90, P99) | Tempo de resposta para solicitações | Dependente da aplicação (normalmente <100-500ms) | Verifique se há filas, otimize o modelo ou o cliente. |
Taxa de transferência (QPS) | Solicitações concluídas por segundo | Dependente da carga de trabalho | Ativar otimização de rotas, aumentar a simultaneidade de provisionamento |
Taxa de erro | Percentagem de pedidos falhados | <1% | Analise logs do serviço e verifique se há problemas de capacidade. |
Profundidade da fila | Solicitações aguardando processamento | 0 (sem fila) | Aumente a simultaneidade de provisionamento ou habilite o dimensionamento automático. |
Uso de CPU/Memória | utilização de recursos | <80% | Aumente a escala do tipo de instância ou a simultaneidade. |
Consulte Monitorar a qualidade do modelo e a integridade do endpoint para obter orientações detalhadas sobre monitoramento e Rastrear e exportar métricas de integridade do endpoint de serviço para o Prometheus e o Datadog para exportar métricas para ferramentas de observabilidade.
Teste de carga
O teste de carga mede o desempenho do endpoint em condições de tráfego realistas e ajuda você a:
- Determine as configurações ideais de simultaneidade de provisionamento.
- Identificar gargalos de desempenho
- Validar requisitos de latência e taxa de transferência
- Compreender a relação entre a concorrência do cliente e a concorrência do servidor.
Consulte Teste de carga para endpoint de serviço.
Solução de problemas comuns de desempenho
Filas
Servindo Modelo suporta escalonamento automático para ajustar a capacidade com base nos padrões de tráfego. No entanto, picos repentinos de tráfego podem causar filas, pois o dimensionamento automático precisa de tempo para detectar o aumento da carga e provisionar capacidade adicional. Durante esse período, as solicitações recebidas podem exceder temporariamente a capacidade disponível, fazendo com que as solicitações entrem em fila.
O enfileiramento ocorre quando a taxa de solicitações ou a simultaneidade ultrapassa a capacidade de processamento atual do endpoint. Isso normalmente ocorre durante picos repentinos de tráfego, rajadas de carga de trabalho ou quando o endpoint não possui provisionamento simultâneo suficiente. O endpoint do modelo de serviço permite o enfileiramento temporário para lidar com picos de demanda, mas, além de um limite definido, retorna erros HTTP 429 (Too Many Requests) para proteger a estabilidade do sistema.
O enfileiramento aumenta a latência porque as solicitações enfileiradas aguardam antes de serem processadas. Para minimizar as filas:
- Defina a simultaneidade mínima de provisionamento suficientemente alta para lidar com o tráfego de base, além dos picos típicos.
- Ative a otimização de rotas para limites de capacidade mais altos.
- Implemente lógica de repetição com recuo exponencial em seus aplicativos cliente.
Gargalos de API externos
Os modelos geralmente chamam APIs externas para enriquecimento de dados, recuperação de recursos ou outras tarefas durante a inferência. Essas dependências externas podem se tornar gargalos de desempenho:
- Latência : mede o tempo de resposta de cada chamada de API externa. A alta latência nessas chamadas aumenta diretamente a latência geral do serviço e reduz a taxa de transferência.
- Limites de taxa de transferência : APIs externas podem impor limites de taxa ou restrições de capacidade. Ultrapassar esses limites pode causar limitação de largura de banda, erros e degradação do desempenho.
- Taxas de erro : Erros frequentes de APIs externas podem desencadear novas tentativas e aumentar a carga no seu endpoint de serviço.
- Cache : Implemente o armazenamento em cache para dados acessados frequentemente de APIs externas para reduzir o número de chamadas e melhorar os tempos de resposta.
Monitore esses fatores para identificar gargalos e implementar otimizações direcionadas para cargas de trabalho com alta taxa de transferência.