Benchmarking de LLMs: Cargas Realistas e Padrões de Produção
Por Bianca Moreira, out 9 2026 0 Comentários

Você já configurou um servidor de inferência para um Large Language Model (LLM) e ficou se perguntando: "Será que isso aguenta o tráfego real?" A resposta raramente está nos números frios de um teste sintético simples. O verdadeiro desafio não é apenas fazer o modelo rodar, mas entender como ele se comporta sob a pressão caótica do mundo real. Benchmarking de stacks de serving de LLM é a disciplina crítica que une medição de desempenho, testes de carga e avaliação de cenários de produção para otimizar a implantação de inferência.

Se você está em Porto Alegre ou em qualquer lugar, sabe que infraestrutura de IA não é mágica; é engenharia. E engenharia exige dados. Este guia vai direto ao ponto sobre como testar suas pilhas de inferência com cargas realistas, evitando as armadilhas comuns que fazem sua arquitetura parecer rápida no laboratório, mas lenta na frente dos usuários.

A Distinção Crítica: Teste de Carga vs. Benchmarking de Desempenho

Muita gente confunde essas duas coisas, mas elas respondem perguntas diferentes. Segundo a documentação técnica da NVIDIA, o teste de carga foca especificamente em simular grandes números de requisições concorrentes. Ele avalia a capacidade do servidor de lidar com tráfego em escala, revelando problemas de autoscaling, latência de rede e utilização de recursos.

Por outro lado, o benchmarking de desempenho mede métricas específicas do modelo, como throughput, latência e eficiência de tokens. Ele isola a eficiência da configuração do software e do hardware. Pense assim: o teste de carga diz se seu barco afunda quando todo mundo pula dentro. O benchmarking de desempenho diz quão rápido o motor funciona quando está sozinho.

Para ter uma visão completa, você precisa combinar ambos. Se você só faz teste de carga, pode achar que o problema é a rede quando, na verdade, é a ineficiência do batch processing. Se só faz benchmarking isolado, ignora os gargalos de concorrência que destroem a experiência do usuário final.

Lado do Cliente vs. Lado do Servidor: Onde Medir?

Aqui mora um dos maiores erros de interpretação de dados. Pesquisas da Baseten indicam que existem duas estratégias principais:

  • Benchmarking do lado do servidor: Os scripts rodam na mesma máquina que o servidor do modelo. Isso elimina a latência da rede das medições, fornecendo uma caracterização pura do hardware. É ótimo para comparar GPUs ou otimizar a infra interna.
  • Benchmarking do lado do cliente: As medições são feitas de fora, simulando a jornada do usuário. Isso espelha melhor a experiência real, incluindo atrasos de rede e overhead de API.

A regra de ouro estabelecida por especialistas em infraestrutura é clara: benchmarks do lado do servidor mostram a capacidade máxima do hardware, enquanto os do lado do cliente revelam a experiência real do usuário. Se o seu número de latência cai pela metade ao mudar de um para o outro, parabéns, você acabou de medir a velocidade da sua fibra óptica, não do seu LLM.

Métricas Que Importam: TTFT e Throughput

Não adianta olhar apenas para "tempo total de resposta". Em modelos generativos, a percepção de velocidade é dominada pelo Time-to-First-Token (TTFT), ou tempo até o primeiro token ser gerado. Se o usuário espera 5 segundos para ver a primeira palavra, ele acha que o sistema travou, mesmo que o restante venha rápido.

Ferramentas como a TensorMesh implementam medições contínuas para comparar stacks diferentes servindo o mesmo modelo. Eles utilizam um padrão de "tiling" que cicla por contextos sequenciais, anexa perguntas aleatórias e mantém um máximo de requisições em voo para equilibrar a carga. As métricas mais relevantes para comparação direta são:

Comparação de Métricas Chave em Serving de LLM
Métrica O que indica Meta Ideal Impacto na Experiência
QPS (Queries Per Second) Capacidade de processamento agregado Alta Determina quantos usuários simultâneos você suporta
Global Average TTFT Latência inicial percebida Baixa Crítico para interatividade e chat em tempo real
Throughput (Tokens/s) Velocidade de geração contínua Alta Afeta a fluidez da leitura do texto gerado

A TensorMesh recomenda ignorar os primeiros 30-60 segundos de métricas devido aos efeitos de "cold start" (aquecimento). Só analise o estado estacionário após várias rotações completas de contexto. Além disso, monitore degradação de desempenho ao longo do tempo comparando intervalos sucessivos.

Contraste entre laboratório limpo e caos de tráfego real atingindo servidores.

Cargas Realistas: Simulando o Caos da Produção

Testes sintéticos limpos são úteis, mas enganam. Uma carga realista mistura tipos de requisições, tamanhos de prompt variados e picos súbitos. Um guia abrangente da Latitude.so sugere combinar testes sintéticos controlados (usando frameworks como DeepSpeed ou Hugging Face Transformers) com dados reais de tráfego de produção.

Para simular concorrência efetivamente, ferramentas como Apache JMeter, Gatling ou Locust são essenciais. Elas permitem definir variáveis como:

  • Número de usuários concorrentes;
  • Padrões de chegada de requisições (Poisson, uniforme);
  • Tamanho médio e variância dos prompts;
  • Taxas de erro aceitáveis.

Um exemplo prático: Segment testa sistemas movidos por LLM usando consultas reais de seus clientes. Isso fornece planejamento de capacidade e verificação de Objetivos de Nível de Serviço (SLOs). Se seu SLO define que 90% das requisições devem começar a responder em menos de 2 segundos (P90 = 2s), seu benchmark deve provar isso sob carga máxima, não em repouso.

Overhead de Infraestrutura: O Inimigo Silencioso

A ferramenta GenAI-Perf da NVIDIA introduz conceitos avançados, como o cálculo de TPS (transações por segundo) em lotes e técnicas de janela deslizante para identificar medições estáveis. Mas o ponto crucial é a exclusão de requisições de "aquecimento" e "resfriamento".

Observações da NVIDIA indicam que categorias de overhead significativas - geração de prompt de entrada, preparação da requisição e armazenamento da resposta - podem representar até 33% da duração total do benchmark em cenários de baixa concorrência. Se você não isolar esse overhead, vai culpar o modelo pela lentidão da sua camada de aplicação Python mal otimizada.

Arquiteturas complexas exigem avaliações multiestágio. Pesquisas recentes modelam plataformas de serving onde métricas de nível de scheduler rastreiam o comprimento da fila e variações de volume de chegada. Por exemplo, testar o Qwen3-32B em 8 GPUs pode exigir configurações específicas de paralelismo de tensor (TP2) e pipeline (PP1) para atingir a eficiência ótima de tokens por dólar.

Mãos digitando em teclado mecânico com tela de métricas desfocada ao fundo.

O Processo Iterativo e a Experiência do Desenvolvedor

Benchmarking não é um evento único; é um ciclo. A Baseten enfatiza que desenvolvedores ajustarão configurações, alterarão parâmetros de concorrência e reexecutarão testes dezenas de vezes antes de encontrar o setup ideal. Esse efeito composto torna a Experiência do Desenvolvedor (DevEx) crucial.

Recursos de infraestrutura que aceleram essa iteração incluem:

  • Caching de pesos: Evitar redownload de modelos de bilhões de parâmetros entre execuções;
  • Scripts de automação: Como um `startup_and_benchmark.sh` que inicia o servidor, roda o teste e gera o relatório automaticamente;
  • Feedback loop curto: Quanto mais rápido você obtém resultados após uma mudança de configuração, melhor será a qualidade final do ajuste.

Monitoramento contínuo com Prometheus e Grafana deve acompanhar esses benchmarks. Batch processing contínuo pode melhorar o desempenho, mas apenas se monitorado diligentemente para evitar regressões silenciosas.

Padrões Emergentes e Ferramentas Modernas

O cenário competitivo muda rápido. Novas entradas como SGL (Structured Generation Language) mostram-se promissoras, com benchmarks iniciais indicando que ela supera alternativas estabelecidas como vLLM em certas métricas, embora com ressalvas específicas de caso de uso.

A padronização é vital. Benchmarks expõem modelos a diversos inputs de teste, medindo desempenho com métricas padronizadas para facilitar rankings. Datasets de benchmark cobrem desde resolução de problemas matemáticos até geração de código. Seguir métodos padronizados remove o achismo e permite comparações significativas entre equipes de engenharia.

No fim das contas, a avaliação significativa requer combinar stress testing de hardware com modelagem realista de carga. Sem isso, você está apostando cegamente que sua infraestrutura aguentará o dia em que todos decidirem usar seu chatbot ao mesmo tempo.

Qual é a diferença principal entre QPS e Throughput em LLMs?

QPS (Queries Per Second) mede quantas requisições completas o sistema processa por segundo, independente do tamanho da resposta. Throughput geralmente se refere à quantidade de tokens gerados por segundo. Um sistema pode ter alto QPS com respostas curtas, mas baixo throughput se as respostas forem longas e complexas. Ambos são necessários para dimensionar corretamente a infraestrutura.

Por que devo ignorar os primeiros minutos do meu benchmark?

Os primeiros 30-60 segundos sofrem de "cold start effects", onde o cache da GPU ainda está sendo preenchido, as bibliotecas estão sendo carregadas na memória e o compilador JIT pode estar otimizando kernels. Essas condições não representam o estado estacionário do sistema, distorcendo negativamente as métricas médias.

O que é TTFT e por que ele importa tanto?

TTFT (Time-to-First-Token) é o tempo decorrido entre o envio da requisição e a recepção do primeiro token de saída. Ele importa porque define a percepção imediata de responsividade. Usuários toleram respostas longas se começarem rapidamente, mas abandonam chats que ficam "pensando" sem emitir nenhum sinal visual.

Devo fazer benchmarks do lado do servidor ou do cliente?

Depende do objetivo. Use benchmarks do lado do servidor para comparar hardware puro e otimizar a stack interna, pois elimina a latência de rede. Use benchmarks do lado do cliente para validar a experiência do usuário final e garantir que SLAs contratuais sejam cumpridos, já que inclui toda a jornada da requisição.

Como lido com a variabilidade da rede em testes remotos?

A variabilidade da rede pode mascarar o desempenho real do modelo. Para mitigar isso, use conexões dedicadas de baixa latência durante testes críticos ou execute o script de benchmark na mesma VPC/região de nuvem do servidor. Sempre registre a latência de rede separadamente para subtraí-la das métricas totais quando necessário.