{"id":140,"date":"2026-06-11T06:09:45","date_gmt":"2026-06-11T09:09:45","guid":{"rendered":"https:\/\/plugged.ninja\/ai\/tutoriais\/prefill-decode-disaggregation-llm-cloudflare-infire-2026\/"},"modified":"2026-06-11T06:09:45","modified_gmt":"2026-06-11T09:09:45","slug":"prefill-decode-disaggregation-llm-cloudflare-infire-2026","status":"publish","type":"post","link":"https:\/\/plugged.ninja\/ai\/tutoriais\/prefill-decode-disaggregation-llm-cloudflare-infire-2026\/","title":{"rendered":"Como dividir um LLM em dois: o passo a passo de prefill-decode disaggregation"},"content":{"rendered":"<p><strong>Resumo:<\/strong> A Cloudflare anunciou em 2026 uma nova infraestrutura para rodar modelos de linguagem em escala global. A jogada t\u00e9cnica central \u00e9 simples de explicar e muito poderosa: <strong>separar a fase de &#8220;ler o prompt&#8221; da fase de &#8220;gerar resposta&#8221;<\/strong> em servidores diferentes \u2014 uma t\u00e9cnica conhecida como <em>prefill-decode disaggregation<\/em>. Em ganhos publicados, a lat\u00eancia entre tokens (p90) caiu de ~100 ms para 20\u201330 ms. Veja como isso funciona, quando vale a pena copiar a ideia e como pensar no Brasil.<\/p>\n<h2>Os dois tempos de um LLM<\/h2>\n<p>Toda infer\u00eancia de LLM tem duas fases bem distintas:<\/p>\n<ul>\n<li><strong>Prefill<\/strong>: o modelo l\u00ea o prompt inteiro de uma vez e preenche o cache de chave-valor (KV cache). \u00c9 um trabalho <em>compute-bound<\/em> \u2014 o gargalo \u00e9 o poder de c\u00e1lculo da GPU.<\/li>\n<li><strong>Decode<\/strong>: o modelo gera um token de cada vez, lendo o KV cache. \u00c9 um trabalho <em>memory-bound<\/em> \u2014 o gargalo \u00e9 a largura de banda de mem\u00f3ria da GPU.<\/li>\n<\/ul>\n<p>Em arquiteturas tradicionais, a mesma GPU faz tudo. Isso significa duas coisas ruins: (1) durante o decode, o sil\u00edcio de c\u00e1lculo fica ocioso; (2) durante o prefill, a mem\u00f3ria de outras requisi\u00e7\u00f5es \u00e9 congestionada.<\/p>\n<h2>O que muda com a disaggrega\u00e7\u00e3o<\/h2>\n<p>Em prefill-decode disaggregation, prefill e decode rodam em <strong>servidores diferentes, otimizados para cada fase<\/strong>. O fluxo:<\/p>\n<ol>\n<li>O usu\u00e1rio envia o prompt para o servidor de prefill.<\/li>\n<li>O prefill server processa o prompt e gera o KV cache.<\/li>\n<li>O KV cache \u00e9 transferido para um decode server (geralmente via interconex\u00e3o r\u00e1pida).<\/li>\n<li>O decode server gera os tokens de sa\u00edda.<\/li>\n<\/ol>\n<p>Resultado pr\u00e1tico: cada GPU faz aquilo que sabe fazer melhor. A pr\u00f3pria Cloudflare publicou ganhos de 3x na lat\u00eancia inter-token; estudos independentes mostram at\u00e9 2x de throughput em cargas mistas. A Cloudflare tamb\u00e9m construiu um motor pr\u00f3prio chamado <strong>Infire<\/strong> para gerenciar GPUs com mais efici\u00eancia e diminuir tempo de partida do modelo.<\/p>\n<h2>Como pensar isso na sua arquitetura<\/h2>\n<h3>1. Quando vale a pena<\/h3>\n<p>Para volume alto e prompts longos. Se sua aplica\u00e7\u00e3o tem prompts de 200 caracteres e poucos usu\u00e1rios por segundo, ganho marginal. Se \u00e9 RAG corporativo, agente com contexto grande, ou chatbot multi-tenant \u2014 vale estudar.<\/p>\n<h3>2. Como medir antes de mexer<\/h3>\n<p>Capture tr\u00eas m\u00e9tricas b\u00e1sicas em produ\u00e7\u00e3o: <strong>TTFT<\/strong> (Time To First Token), <strong>ITL<\/strong> (Inter-Token Latency) e <strong>RPS<\/strong> (Requests Per Second). Se o TTFT \u00e9 o problema, o gargalo provavelmente \u00e9 prefill. Se o ITL piora com carga, provavelmente \u00e9 decode.<\/p>\n<h3>3. Como aplicar passo a passo<\/h3>\n<ul>\n<li><strong>Passo A<\/strong>: separar o tr\u00e1fego por caracter\u00edstica (prompts longos vs. curtos) e enviar para pools diferentes. \u00c9 um &#8220;prefill-decode pobre&#8221; que j\u00e1 d\u00e1 ganho.<\/li>\n<li><strong>Passo B<\/strong>: usar engines que suportam disaggrega\u00e7\u00e3o nativa (vLLM, NVIDIA Dynamo, SGLang t\u00eam flags para isso).<\/li>\n<li><strong>Passo C<\/strong>: orquestrar transfer\u00eancia de KV cache via RDMA \/ NVLink \u2014 geralmente exige cluster pr\u00f3prio ou servi\u00e7o como Cloudflare Workers AI \/ Infire.<\/li>\n<\/ul>\n<h2>Por que importa (e o status no Brasil)<\/h2>\n<p>Para times brasileiros, o ganho mais imediato \u00e9 em <strong>lat\u00eancia percebida<\/strong> em aplica\u00e7\u00f5es de chat e em <strong>custo por token<\/strong> em workloads pesados de RAG. Em 2026, com o crescimento de agentes corporativos (que disparam dezenas de chamadas para cada intera\u00e7\u00e3o do usu\u00e1rio), uma redu\u00e7\u00e3o de 3x no ITL transforma a experi\u00eancia. Ainda assim, montar prefill\/decode disaggregation in-house \u00e9 complexo \u2014 para a maioria das empresas, a estrat\u00e9gia certa \u00e9 escolher um provedor (Cloudflare, NVIDIA Dynamo, vLLM gerenciado) que j\u00e1 entregue isso.<\/p>\n<h2>Riscos e limita\u00e7\u00f5es<\/h2>\n<p>Disaggrega\u00e7\u00e3o n\u00e3o \u00e9 bala de prata. Os custos aparecem em tr\u00eas frentes: (1) <strong>transfer\u00eancia do KV cache<\/strong> consome banda e adiciona um hop de rede; (2) <strong>orquestra\u00e7\u00e3o<\/strong> fica mais complexa, com mais coisas para monitorar; (3) <strong>cargas pequenas<\/strong> podem ficar piores que numa arquitetura agregada simples. Fa\u00e7a benchmarks com seu pr\u00f3prio tr\u00e1fego antes de adotar.<\/p>\n<h2>Cen\u00e1rio<\/h2>\n<p>A separa\u00e7\u00e3o de prefill e decode deve virar padr\u00e3o em infraestrutura s\u00e9ria de LLM nos pr\u00f3ximos 12\u201318 meses. NVIDIA Dynamo, vLLM, SGLang, BentoML e Cloudflare j\u00e1 oferecem caminhos. Para 2027, espere que provedores de nuvem brasileiros e regionais ofere\u00e7am o mesmo, com SLAs em portugu\u00eas.<\/p>\n<h2>Conclus\u00e3o pr\u00e1tica<\/h2>\n<p>Se voc\u00ea opera um produto s\u00e9rio com LLM, comece medindo TTFT e ITL hoje. Em seguida, teste vLLM 0.6+ ou outro engine com suporte a disaggrega\u00e7\u00e3o em um ambiente de staging. O ganho de lat\u00eancia \u00e9 real e tende a se traduzir em reten\u00e7\u00e3o e em menor custo por token. Para quem \u00e9 apenas usu\u00e1rio de API, o ganho vem &#8220;de gra\u00e7a&#8221; conforme provedores adotam a t\u00e9cnica \u2014 mas vale checar a documenta\u00e7\u00e3o para comparar.<\/p>\n<p><em>Fonte internacional de refer\u00eancia: <a href=\"https:\/\/www.infoq.com\/news\/2026\/05\/cloudflare-llm-infrastructure\/\" target=\"_blank\" rel=\"noopener nofollow\">InfoQ \u2014 Cloudflare Builds High-Performance Infrastructure for Running LLMs<\/a> e <a href=\"https:\/\/blog.cloudflare.com\/high-performance-llms\/\" target=\"_blank\" rel=\"noopener nofollow\">Cloudflare Blog<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cloudflare separa prefill e decode de LLMs em servidores distintos e ganha 3x em lat\u00eancia. Veja como funciona e como aplicar isso na sua arquitetura.<\/p>\n","protected":false},"author":1,"featured_media":139,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-140","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriais"],"_links":{"self":[{"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/posts\/140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/comments?post=140"}],"version-history":[{"count":0,"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/posts\/140\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/media\/139"}],"wp:attachment":[{"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/media?parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/categories?post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/plugged.ninja\/ai\/wp-json\/wp\/v2\/tags?post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}