- Alguns modelos de IA, como o DeepSeek-V3, são baratos e rápidos quando oferecidos em grande escala, mas ficam lentos e caros em execução local
- O motivo está no trade-off fundamental entre throughput (taxa de processamento) e latency (latência), relacionado à eficiência de uso da GPU
- Ao aumentar o tamanho do batch, a GPU opera com mais eficiência, mas o usuário precisa esperar até que os tokens sejam acumulados, o que causa aumento da latência
- Modelos com arquitetura Mixture-of-Experts e pipeline profundo exigem batches maiores e maior latência
- Em um ambiente local com um único usuário, é difícil formar batches grandes o suficiente, o que causa queda de desempenho e aumento de custo
- OpenAI, Anthropic e outras conseguem respostas rápidas por meio de maior eficiência na própria arquitetura, estratégias avançadas de batching ou até uso excessivo de GPUs
Inferência em batch e eficiência de GPU
- A GPU é um hardware otimizado para grandes multiplicações de matrizes (GEMM)
- Ao agrupar os tokens de vários usuários de uma vez e executá-los como uma matriz grande em batch, o throughput aumenta drasticamente devido ao baixo overhead de ida e volta e à eficiência de memória
- O servidor de inferência acumula os tokens de várias requisições em uma fila, escolhe um batch de tamanho adequado e executa uma grande operação GEMM
- Nesse processo, o servidor precisa escolher entre o trade-off de tamanho do batch (aumento de throughput) e tempo de espera (aumento de latência)
Por que alguns modelos são otimizados para batches grandes
Mixture of Experts (MoE) e batch
- A arquitetura MoE (DeepSeek-V3, estimado também para o GPT-4) é uma das principais causas da baixa eficiência de GPU
- Como centenas de blocos “especialistas” exigem multiplicações de matrizes separadas, em batches pequenos cada especialista recebe pouco trabalho e a eficiência cai
- Só com muitas requisições simultâneas é possível aproveitar plenamente todos os especialistas; por isso, em nível de serviço, batches grandes são indispensáveis
- Com espera curta (janela de 5 ms), os especialistas ficam ociosos com frequência; com espera longa (janela de 200 ms), é possível maximizar a eficiência
Problemas de batch em modelos com pipeline profundo
- Grandes transformers com centenas de camadas são executados dividindo as camadas entre várias GPUs (pipelining)
- Se o número de tokens em um batch for menor que o número de etapas do pipeline, ocorre o fenômeno de pipeline bubble, o que reduz o throughput
- Para evitar isso, um batch grande (e portanto uma espera maior) é indispensável, o que aumenta o tempo de resposta do modelo
Por que não é possível manter a fila sempre cheia
- Em teoria, parece que com muito tráfego simultâneo seria possível manter a fila sempre cheia e evitar bubbles
- Mas, na prática, na etapa de attention do transformer, as matrizes precisam ter o mesmo tamanho (comprimento) para poderem ser agrupadas em batch, então é difícil fazer isso funcionar perfeitamente com uma única fila
- Além disso, ao separar as etapas de FFN e attention, surgem problemas de forte aumento de overhead de memória e ineficiência na movimentação de dados
Resumo e conclusão
- O processamento em batch grande é essencial para reduzir o custo de GPU e aumentar o throughput, mas o usuário passa a enfrentar mais tempo de espera
- Modelos com Mixture-of-Experts e estrutura de pipeline grande são, por natureza, otimizados para ambientes de batch de alta eficiência baseados em espera
- Em ambientes com pouco tráfego, como o local, não é possível montar batches grandes otimizados, então a eficiência da GPU despenca e o custo de execução sobe
- OpenAI, Anthropic e outras mostram alta responsividade, e as razões podem ser:
- (1) usar uma arquitetura mais eficiente que MoE
- (2) aplicar otimizações de batch/pipeline e técnicas avançadas de inferência
- (3) empregar mais GPUs do que o estritamente necessário, comprando velocidade com hardware
Adicional: diferença entre batch de prefill e batch do corpo principal
- Em transformers, também é possível executar em batch o prefill de um prompt de usuário (entrada longa), acelerando a inferência inicial
- Porém, o batch discutido no texto é o batch do estágio efetivo de geração de tokens de várias requisições de usuários, onde surge o trade-off entre throughput e latência
- O batch de prefill não tem relação direta com o batch simultâneo de grande porte mencionado no texto
Observações
- Sistemas reais de inferência também usam continuous batching, executando assim que o batch fica pronto
- Porém, a estrutura fundamental do trade-off entre throughput e latency continua a mesma
1 comentários
Opiniões do Hacker News