Chunked Prefill
Aprende como o prefill segmentado melhora a latência e o throughput de inferência de LLM ao dividir prompts longos em blocos de tokens para um serving mais fluido sob cargas de trabalho concorrentes.
O prefill em lotes (chunked prefill) é uma técnica de agendamento de inferência que divide um prompt de entrada longo em grupos menores de tokens em vez de processar todo o prompt em uma única operação ininterrupta. Um motor de inferência pode intercalar esses blocos com a geração de tokens para outras solicitações, evitando que um único prompt longo monopolize a GPU. O resultado é tipicamente uma latência mais estável sob cargas de trabalho concorrentes, melhor utilização de hardware e um serviço mais previsível para aplicações interativas de large language model.
Como Funciona o Prefill em Lotes#
A inferência de Transformer autorregressivo possui duas fases principais:
- Prefill: O modelo processa todos os tokens de entrada, calcula seus estados de atenção e preenche o KV cache. O prefill avalia muitos tokens em paralelo e geralmente é limitado pelo poder de computação (compute-bound).
- Decode: O modelo gera a saída um token por vez enquanto lê estados previamente armazenados em cache. O decode costuma ser limitado pela largura de banda da memória em vez do cálculo puro.
Sem a divisão em blocos, uma solicitação de 20.000 tokens pode ocupar uma etapa de inferência por muito mais tempo do que uma solicitação curta. As gerações ativas podem sofrer pausas, aumentando a latência entre tokens, mesmo que seus próprios prompts sejam pequenos.
Com o prefill em lotes, o agendador atribui a cada iteração um orçamento de tokens. Ele agenda primeiro as operações de decode ativas e, em seguida, usa o orçamento restante para um ou mais blocos de prompt. Se um prompt não couber, seus tokens restantes aguardam uma iteração posterior. A vLLM optimization guidance(orientação de otimização do vLLM) atual descreve essa abordagem como uma forma de combinar o trabalho de prefill intensivo em computação com o decode intensivo em memória.
A divisão em blocos altera o momento em que os tokens do prompt são processados, e não sua ordem ou significado. Cada bloco concluído estende o estado de atenção em cache da solicitação até que o prompt completo esteja pronto e a decodificação possa começar.
Por que o Prefill em Lotes é Importante#
O prefill em lotes aborda objetivos de desempenho conflitantes na model serving de produção:
- Latência entre tokens: Priorizar solicitações de decode existentes ajuda as respostas transmitidas a continuarem sem longas pausas.
- Tempo até o primeiro token: Blocos grandes concluem um novo prompt mais rapidamente, enquanto blocos muito pequenos podem atrasar seu primeiro token gerado.
- Throughput: Combinar o trabalho de prefill e decode pode usar a computação da GPU e a largura de banda da memória de forma mais eficaz.
- Justiça: Prompts longos têm menos probabilidade de bloquear muitas solicitações interativas curtas.
Portanto, a configuração do bloco ou do orçamento de tokens é um compromisso. A vLLM scheduler configuration(configuração do agendador vLLM) expõe controles para limites de tokens em lote, prefills parciais e limites para prompts longos. Orçamentos menores geralmente favorecem uma decodificação responsiva, enquanto orçamentos maiores favorecem uma ingestão mais rápida de prompts.
A divisão em blocos não elimina todos os gargalos. Contextos longos ainda consomem memória de cache, e uma admissão excessivamente agressiva pode causar pressão no cache, preempção de solicitações ou trabalho repetido. Os operadores devem medir a inference latency mediana e de cauda, o tempo até o primeiro token, a latência entre tokens, o throughput e o uso de memória da GPU sob distribuições de prompts realistas.
Conceitos de Inferência Relacionados#
O prefill em lotes está intimamente conectado a várias otimizações, mas serve a um propósito distinto:
- Continuous batching: Adiciona e remove solicitações dinamicamente durante a geração. O prefill em lotes o complementa tornando o processamento de prompts longos agendável em limites de nível de token.
- Prompt caching: Reutiliza estados previamente calculados para um prefixo de prompt repetido. O prefill em lotes agenda novos cálculos; ele não ignora esse cálculo.
- Gerenciamento de cache KV paginado: Organiza estados de atenção em cache em blocos de memória. A TensorRT-LLM overview(visão geral do TensorRT-LLM) da NVIDIA inclui cache paginado e lote em tempo de execução juntamente com otimizações de processamento de prompt.
- Agrupamento dinâmico (Dynamic batching): Combina solicitações separadas em lotes, conforme explicado no NVIDIA Triton dynamic batching guide(guia de agrupamento dinâmico do NVIDIA Triton). Ele não divide necessariamente um prompt longo individual em prefills parciais.
- Prefill e decode dessagregados: Executa as fases em workers separados. O prefill and decode deployment guidance(guia de implantação de prefill e decode) da NVIDIA mostra como os estágios podem ser escalados de forma independente.
Embora o Ultralytics YOLO26 Triton deployment workflow suporte inferência de visão computacional escalável e agrupamento automático (automatic batching), a detecção de objetos YOLO padrão não possui uma fase de prefill de texto autorregressivo. O prefill em lotes aplica-se principalmente a modelos generativos de linguagem e multimodais.
Aplicações no Mundo Real#
-
Assistentes de documentos: Um assistente aumentado por recuperação pode receber um relatório longo enquanto atende simultaneamente a usuários com perguntas curtas. A divisão em blocos do prefill do relatório permite que os chats em Andamento continuem a decodificar em vez de congelar até que todo o contexto seja processado.
-
Análise de vídeo multimodal: Um vision-language model pode receber recursos de imagem, descrições de objetos e uma instrução de texto longa. Um pipeline de visão pode primeiro produzir detecções usando a Ultralytics YOLO prediction, e depois enviar contexto visual estruturado para o modelo generativo. O prefill em lotes ajuda a agendar os tokens visuais e textuais resultantes juntamente com outras solicitações. O multimodal encode-prefill-decode workflow(fluxo de trabalho multimodal de codificação, prefill e decodificação) da NVIDIA ilustra por que gerenciar esses estágios de forma independente pode melhorar a escalabilidade.
Diretrizes Práticas de Implantação#
Ative o prefill em lotes apenas por meio de um mecanismo de atendimento que suporte oficialmente a arquitetura de destino. Por exemplo, a TensorRT-LLM backend configuration documenta controles de contexto em blocos para implantações suportadas.
Faça benchmarks com concorrência realista, comprimentos de entrada e comprimentos de saída em vez de depender de uma única solicitação. Comece com o orçamento de tokens recomendado pelo runtime e ajuste-o enquanto observa o tempo até o primeiro token e a latência entre tokens. Por fim, teste cargas de trabalho mistas contendo prompts muito longos e muito curtos; é aqui que o prefill em lotes fornece seu valor operacional mais claro.






