A seguirPróximo guia
KServe e serviço de modelo no Kubernetes
Técnico
GUIA Técnico
Uma arquitetura de serviço que divide a inferência de grandes modelos de linguagem em duas fases separadas – pré-preenchimento e decodificação – e as executa em diferentes pools de GPUs.
It matters because these two phases have opposite hardware appetites, and forcing them onto the same machines wastes capacity and hurts latency.
Quando um LLM responde, ele funciona em duas etapas. O Prefill lê todo o prompt de uma vez e cria o cache de valor-chave (KV); esta é uma grande explosão paralela e limitada à computação que satura as unidades matemáticas da GPU. A decodificação então gera tokens um de cada vez, cada etapa lendo todo o cache KV – um gotejamento levemente computado limitado pela largura de banda da memória. Executados juntos, um longo pré-preenchimento paralisa a decodificação de todos (bloqueio de linha) e agrupar os dois em lote cria interferência. A desagregação coloca o pré-preenchimento em um pool de GPU e a decodificação em outro, transferindo o cache KV entre eles por meio de interconexões rápidas como NVLink ou InfiniBand. Cada pool é ajustado e dimensionado de forma independente, melhorando o bom rendimento, suavizando a latência final e permitindo que os operadores atinjam metas rígidas de tempo para o primeiro token e de tempo por token de saída simultaneamente.
As decisões de arquitetura impulsionam o desempenho e os custos operacionais durante anos.
A educação técnica ajuda as equipes a escolher a pilha certa, não apenas a mais nova.
Melhores escolhas de engenharia reduzem incidentes de confiabilidade na produção.
Espere que a desagregação se torne um padrão nas pilhas de produção. Sistemas como DistServe, Splitwise e Mooncake o popularizaram, e vLLM e NVIDIA Dynamo agora oferecem modos desagregados. A pesquisa está impulsionando otimizações de transferência de cache KV, pooling de cache e reutilização entre solicitações, reequilíbrio dinâmico de taxas de pré-preenchimento/decodificação sob mudança de tráfego e integração mais estreita com cache de prefixo e pré-preenchimento fragmentado. À medida que as janelas de contexto crescem para milhões de tokens, a separação dessas fases torna-se cada vez mais essencial para um serviço econômico e de baixa latência.
Um assistente de bate-papo encaminha longos prompts de documentos para um cluster de pré-preenchimento com muita computação e, em seguida, transmite respostas de um cluster de decodificação com otimização de memória para manter a latência de digitação suave.
O NVIDIA Dynamo e o vLLM permitem que as operadoras implantem grupos de trabalhadores de pré-preenchimento e decodificação separados para que uma série de prompts longos não congele as gerações contínuas.
Mooncake (usado por Kimi da Moonshot AI) desagrega o pré-preenchimento e a decodificação e adiciona um pool de cache KV distribuído para reduzir a recomputação de prompt redundante em escala.
Um serviço de conclusão de código dedica um pequeno pool de pré-preenchimento para prompts curtos e um grande pool de decodificação, já que a maior parte do custo vem do streaming de muitos tokens de saída.
A otimização de um benchmark pode ocultar fraquezas mais amplas do sistema.
Os custos de infraestrutura e manutenção são frequentemente subestimados.
As lacunas de segurança e observabilidade podem aumentar à medida que os sistemas se tornam mais complexos.
Defina metas de latência, qualidade e custo antes da implementação.
Benchmark sob condições realistas de carga e dados.
Monitoramento de instrumentos para erros, desvios e impacto no usuário.
Prepare caminhos de reversão e resposta a incidentes antes de escalar.
Free newsletter
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Uma arquitetura de serviço que divide a inferência de grandes modelos de linguagem em duas fases separadas – pré-preenchimento e decodificação – e as executa em diferentes pools de GPUs. É importante porque essas duas fases têm apetites de hardware opostos e forçá-las nas mesmas máquinas desperdiça capacidade e prejudica a latência.
O pré-preenchimento processa todo o prompt em paralelo e satura a computação, enquanto a decodificação lê o cache KV em cada etapa e é limitada pela largura de banda da memória – apetites opostos que justificam pools separados e ajustados de forma independente.
O Prefill cria o cache KV para o prompt; decode precisa desse cache para continuar gerando, portanto, o cache é enviado por meio de uma interconexão rápida para o pool de decodificação.
Em GPUs compartilhadas, uma longa explosão de pré-preenchimento pode bloquear etapas de decodificação em andamento; separá-los evita essa interferência e estabiliza a latência da cauda.
O pré-preenchimento processa todos os tokens de prompt juntos, para que lotes maiores alimentem bem os núcleos do tensor; decode gera um token por vez e é controlado pela memória, portanto, é dimensionado de maneira diferente.
Links de alta largura de banda e baixa latência, como NVLink (intra-nó) e InfiniBand (entre nós), são necessários para que a transferência de cache KV não se torne o novo gargalo.
Continue aprendendo
Mais guias escolhidos para este tópico
A seguirPróximo guia
KServe e serviço de modelo no Kubernetes
Técnico