Por Dentro de um LLM Decoder-Only Moderno¶
Os Capítulos 2 a 4 introduziram os componentes — RoPE, RMSNorm, SwiGLU, GQA, FlashAttention, KV-cache. O Capítulo 7 percorreu a tricotomia arquitetural e encerrou entregando a este capítulo a pergunta sobre por que o modelo decoder-only venceu. A tarefa aqui é integrativa: pegar os componentes, encaixá-los em um bloco decoder de 2024-2025 e recuar para enxergar o que a classe de modelos resultante tem em comum entre fornecedores. A peça central é uma tabela comparativa que coloca Llama, DeepSeek-V3, GPT-3 e ModernBERT no mesmo sistema de coordenadas, de modo que o leitor possa ler tanto a convergência (todo decoder moderno usa pre-RMSNorm + RoPE + SwiGLU + alguma variante de attention agrupado) quanto os deltas que distinguem o MoE de fronteira da linha densa Llama.
O capítulo então se volta para tokenização, o pipeline de inferência (prefill e decode), speculative decoding e o regime de over-training pós-Chinchilla que nos dá modelos de 8B parâmetros treinados em 15 trilhões de tokens. DeepSeek-V3 ganha sua própria seção curta porque seu Multi-head Latent Attention e o balanceamento MoE livre de perda auxiliar são os dois deltas arquiteturais para os quais o restante do campo vem convergindo ao longo de 2025.
Do GPT-3 até hoje¶
O Transformer decoder-only chegou como candidato sério à fronteira com o GPT-3 em 2020. Brown e colegas mostraram que um modelo decoder-only suficientemente grande — 175 bilhões de parâmetros treinados em aproximadamente 300 bilhões de tokens com previsão vanilla do próximo token — exibia in-context learning zero-shot e few-shot em uma ampla gama de tarefas no momento da inferência, sem nenhuma atualização de parâmetros [src_037]. Esse resultado redefiniu para que serve um modelo decoder-only. Ele não é um truque engenhoso para uma única tarefa; é um substrato que, dada escala e dados suficientes, ganha a capacidade geral de seguir padrões apresentados em seu prompt.
Três anos depois, o lançamento do Llama 2 pela Meta demonstrou que a mesma receita — decoder-only, autorregressiva, escalada — podia ser reproduzida e liberada como pesos abertos nas escalas de 7B e 70B parâmetros [src_029]. O Llama 2 também fixou um conjunto particular de escolhas arquiteturais — pre-RMSNorm, RoPE, SwiGLU e Grouped-Query Attention na escala maior — para o qual o campo então convergiu. A manada Llama 3 em 2024 refinou a mesma receita com uma mistura de dados de treinamento mais ampla, um tokenizador de 128k tokens e GQA em todos os tamanhos de modelo [src_030]. O DeepSeek-V3, lançado no final de 2024, manteve o mesmo vocabulário de componentes mas empurrou dois deltas — Multi-head Latent Attention para compressão de KV-cache e um router mixture-of-experts livre de perda auxiliar — dos quais o restante da fronteira vem adotando variantes [src_031]. A arquitetura, em outras palavras, convergiu. Os eixos de diferenciação remanescentes são a cobertura do tokenizador, a composição dos dados de treinamento, a escolha denso-vs-MoE e a variante específica de attention GQA / MQA / MLA. Este capítulo torna essa afirmação concreta.
🔄 Recapitulação
Antes de prosseguir para o bloco canônico no §2, recupere os componentes dos Capítulos 2-4 que este capítulo assume que você encontrou:
- Complete a receita da convergência. Todo decoder moderno
usa normalização
pre-______, RoPE em Q/K, ativação______(gated) na FFN e attentiongrouped-______. - Explique com suas palavras. Por que o in-context learning emerge apenas de escala + previsão do próximo token, sem nenhuma supervisão explícita por tarefa?
- Preveja os quatro eixos de diferenciação. Dada a lista da convergência acima, nomeie os quatro eixos em que as decisões de design restantes para um decoder de 2024-2026 são tomadas.
O bloco decoder canônico de 2026¶
A Figura 1 mostra o bloco para o qual a família Llama / Qwen / Gemma / DeepSeek-V3 convergiu. Um residual stream com formato \([B, T, D]\) entra no bloco. Ele é dividido em dois caminhos. O primeiro caminho normaliza a entrada com RMSNorm, projeta em queries, keys e values, aplica RoPE em queries e keys, executa Grouped-Query Attention com máscara causal (ou, no DeepSeek-V3, Multi-head Latent Attention) e soma o resultado de volta no residual stream. O segundo caminho normaliza novamente com RMSNorm, executa a rede feed-forward SwiGLU e soma esse resultado de volta no residual stream também [src_002, src_047].
Três pontos merecem ênfase. Primeiro, a posição da normalização. Na configuração pre-norm o RMSNorm é aplicado antes da transformação de cada sublayer, deixando o próprio residual stream não normalizado; a soma residual é entre a entrada não normalizada e a saída do sublayer. Isso é mais estável em profundidade do que o posicionamento post-norm do Transformer original de Vaswani, no qual o LayerNorm ficava depois da soma residual — uma configuração que tinha dificuldade para treinar nas contagens de layer que decoders modernos utilizam [src_002, src_006].
🤔 Pause e pense
Antes de seguir: pre-norm normaliza a entrada de cada sublayer e deixa o residual stream em si sem normalização; post-norm normaliza depois da soma residual, de modo que o próprio residual stream é normalizado a cada passo. Preveja — em qual configuração as normas do residual stream crescem com a profundidade, e em qual elas permanecem aproximadamente constantes? (Não olhe adiante — escreva a resposta ou diga em voz alta.)
O Capítulo 3 desenvolve essa história em detalhes.
Segundo, RoPE é aplicado apenas às projeções de query e key, não a values. O mecanismo é uma rotação dependente da posição em pares de dimensões do embedding, e os scores de attention resultantes dependem da posição relativa de dois tokens por meio dessa rotação.
🎯 Intuição
Imagine cada par de dimensões do embedding como um ponteiro de relógio cujo ângulo cresce linearmente com o índice do token. Dois tokens nas posições \(m\) e \(n\) têm seus pares de ponteiros rotacionados por \(m\theta\) e \(n\theta\); o produto interno entre os pares rotacionados depende apenas da diferença de ângulo \((m-n)\theta\), de modo que os scores de attention enxergam a posição relativa automaticamente — nenhum embedding posicional separado é adicionado ao fluxo de values.
A frequência base \(\theta\) do RoPE é um hiperparâmetro; o Llama-3 usa \(\theta = 500{,}000\), o que estende a banda de frequências que a rotação consegue resolver e ajuda o modelo a usar contextos longos [src_030]. O próprio RoPE é o tópico do Capítulo 2.
Terceiro, GQA substitui a Multi-Head Attention dos manuais. No MHA cada head de query tem seus próprios heads de key e value; no MQA todas as queries compartilham um único par key/value head; no GQA as queries são divididas em grupos, e cada grupo compartilha um par key/value [src_006, src_030]. A troca é definida pela razão \(h / h_{kv}\), onde \(h\) é o número de query heads e \(h_{kv}\) é o número de key/value heads. O Llama-3 70B usa \(h = 64\) e \(h_{kv} = 8\), uma razão de compartilhamento de 8 para 1 [src_030].
🎯 Intuição
Imagine 64 query heads como 64 leitores todos consultando a mesma biblioteca. Com MHA, cada leitor tem um caderno privado (64 cadernos no total); com MQA, todos os 64 compartilham um caderno (barato de armazenar mas cada leitura é contendida); com GQA em \(h_{kv} = 8\), os leitores se dividem em 8 grupos de 8, cada grupo compartilhando um caderno. Isso é uma redução de ×8 no armazenamento de cadernos com contenção de leitura desprezível — o ponto ideal de engenharia entre a redundância do MHA e o gargalo do MQA.
A memória de KV-cache de um passo de decode escala linearmente em \(h_{kv}\), então essa razão define a pegada de memória da inferência. Voltamos a esse cálculo no §5.
O bloco é, fora isso, sem surpresas: a expansão FFN passa por SwiGLU, a soma residual fecha cada sublayer, e a saída é outro tensor com formato \([B, T, D]\) que alimenta o próximo layer.
💡 Resultado-chave
O bloco decoder de 2024-2026 é pre-RMSNorm + RoPE em Q/K + Grouped-Query Attention + FFN SwiGLU, com soma residual fechando cada sublayer — a receita que a tabela comparativa do §3 vai demonstrar como convergente entre fornecedores.
Tabela comparativa de arquiteturas¶
A tabela abaixo coloca cinco modelos no mesmo sistema de coordenadas. Três são decoders densos (Llama-3 8B, Llama-3 70B, GPT-3 175B); um é um decoder MoE esparso (DeepSeek-V3); e um é um encoder incluído por contraste (ModernBERT). O Llama-2 está implícito: as colunas Llama-3 são refinamentos diretos da receita Llama-2, não rupturas com ela.
| Dimensão | Llama-3 8B | Llama-3 70B | DeepSeek-V3 | ModernBERT (encoder) | GPT-3 175B (histórico) |
|---|---|---|---|---|---|
| Família | decoder denso | decoder denso | decoder MoE esparso | encoder denso | decoder denso |
| Normalização | Pre-RMSNorm | Pre-RMSNorm | Pre-RMSNorm | Pre-LN com LayerNorm sem viés (sem parâmetro de viés aprendível) | Pre-LN |
| Codificação posicional | RoPE, \(\theta = 500{,}000\) | RoPE, \(\theta = 500{,}000\) | RoPE | RoPE (alternando \(\theta = 160{,}000\) global / \(\theta = 10{,}000\) local) | absoluta aprendida |
| Ativação FFN | SwiGLU | SwiGLU | SwiGLU | GeGLU | GELU |
| Variante de attention | GQA, \(h = 32\), \(h_{kv} = 8\) | GQA, \(h = 64\), \(h_{kv} = 8\) | MLA (KV-cache latente) + FFN MoE | bidirecional pleno, sliding global / local alternando 128 | MHA |
| Vocabulário \(V\) | \(128{,}000\) (BPE estilo tiktoken) | \(128{,}000\) | \(128{,}000\) | \(50{,}368\) (BPE OLMo modificado) | \(\approx 50{,}257\) |
| Hidden \(D\) | \(4{,}096\) | \(8{,}192\) | \(7{,}168\) | (encoder, varia por checkpoint) | \(12{,}288\) |
| Layers \(L\) | \(32\) | \(80\) | \(61\) | (encoder) | \(96\) |
| Contexto nativo | \(8{,}192\) tokens (estendido depois) | \(8{,}192\) tokens (estendido depois) | \(128{,}000\) tokens | \(8{,}192\) tokens | \(2{,}048\) tokens |
| Parâmetros totais | \(\approx 8 \times 10^9\) | \(\approx 70 \times 10^9\) | \(671 \times 10^9\) | (encoder) | \(175 \times 10^9\) |
| Parâmetros ativos por token | denso, \(\approx 8 \times 10^9\) | denso, \(\approx 70 \times 10^9\) | \(37 \times 10^9\) | denso | denso, \(175 \times 10^9\) |
| Tokens de pretraining | \(\approx 15 \times 10^{12}\) | \(\approx 15 \times 10^{12}\) | \(14.8 \times 10^{12}\) | \(\approx 2 \times 10^{12}\) | \(\approx 0.3 \times 10^{12}\) |
| Compute de pretraining | (grande; ver paper) | (grande; ver paper) | \(\approx 2.788 \times 10^6\) H800 GPU-hours | (encoder; escala menor) | (grande; ver paper) |
🔗 Conexão
O attention global / local alternado por janela deslizante do ModernBERT é desempacotado no Capítulo 7 — Encoder, Decoder e Encoder-Decoder. O truque de dois bases de RoPE (160K global / 10K local) é o análogo, em contexto longo, da pilha de layers com attention alternado.
🤔 Pause e pense
Antes de ler as observações abaixo, percorra a tabela de cima a baixo e preveja: qual linha tem mais convergência entre as colunas decoder? Qual linha tem mais divergência? Qual célula do DeepSeek-V3 tem maior probabilidade de te surpreender dadas as quatro colunas anteriores? (Não olhe adiante — escreva as respostas antes de prosseguir.)
Referências para as colunas: Llama-3 [src_030]; DeepSeek-V3 [src_031]; ModernBERT [src_016]; GPT-3 [src_037]; baseline Llama-2 por trás da coluna Llama-3 [src_029]. A glosa narrativa que enquadra a tabela — de que todo modelo bem-sucedido é uma fundação conhecida modificada para necessidades específicas — vem do Smol Playbook [src_006]. As colunas de Qwen e Gemma não aparecem na tabela porque ela fixa um retrato do final de 2024; os relatórios técnicos primários da família Qwen3 [src_057] e do Gemma 3 [src_058] chegaram em meados de 2025 e em março de 2025, respectivamente, e tratamos esses dois lançamentos na subseção O cenário aberto em abril de 2026 mais adiante, em vez de retroajustá-los à comparação histórica.
Algumas observações vale extrair da tabela.
A convergência é real. Fora a coluna histórica do GPT-3, todo decoder usa pre-RMSNorm, RoPE, SwiGLU e alguma variante de attention agrupado. A coluna do encoder (ModernBERT) compartilha tudo isso exceto a escolha de ativação (GeGLU vs SwiGLU) e a direcionalidade do attention (bidirecional pleno com o padrão alternado global/local descrito no Capítulo 7) [src_016].
A razão de compartilhamento do GQA é conservadora ao longo da família densa Llama. Tanto o checkpoint Llama-3 8B quanto o 70B usam \(h_{kv} = 8\), embora o modelo 70B tenha oito vezes mais query heads [src_030]. Esse é o design que faz a memória de KV-cache escalar de forma suave com o tamanho do modelo; é também o que torna o modelo 70B viável em um único host de 8 GPUs com batch sizes modestos.
O vocabulário saltou da codificação classe 50k do GPT-3 para uma codificação classe 128k para a linha Llama-3 e o DeepSeek-V3 [src_030, src_031]. O vocabulário maior melhora a compressão em dados multilíngues e de código e reduz comprimentos de sequência para um mesmo conteúdo de texto. Discutimos isso no §4.
A razão tokens-para-parâmetros nas linhas inferiores é a história do over-training. O Llama-3 8B treinado em 15T tokens tem uma razão tokens-por-parâmetro de aproximadamente \(1{,}875\), muito acima do \(\approx 20\) Chinchilla-ótimo que o Capítulo 9 deriva. Desempacotamos isso no §7.
DeepSeek-V3 é a primeira coluna que rompe o padrão denso. Ele tem \(671 \times 10^9\) parâmetros totais, mas roteia cada token para apenas \(37 \times 10^9\) parâmetros ativos por forward pass por meio de uma FFN mixture-of-experts [src_031]. A distinção total/ativo é a característica definidora da economia de inferência MoE, e o Capítulo 10 desenvolve em detalhes a maquinaria de routing e balanceamento de carga. O attention MLA na mesma coluna é um eixo de inovação separado, e voltamos a ele no §8 abaixo.
🔗 Conexão
O routing mixture-of-experts e o balanceamento de carga livre de perda auxiliar do DeepSeek-V3 são desenvolvidos no Capítulo 10; o eixo do Multi-head Latent Attention é desempacotado no §8 abaixo.
💡 Resultado-chave
Fora a coluna histórica do GPT-3, todo decoder moderno usa a mesma receita de quatro componentes — pre-RMSNorm, RoPE, SwiGLU, attention agrupado — e se diferencia na variante de attention, na escolha denso-vs-MoE, no tamanho do vocabulário e na mistura de dados de treinamento; a subseção H3 abaixo registra como esses eixos diferenciadores mudaram até abril de 2026.
O cenário aberto em abril de 2026¶
A tabela comparativa acima captura um retrato do final de 2024. Em abril de 2026 a fronteira de pesos abertos havia passado por mais duas ondas de lançamento. O núcleo convergente — pre-RMSNorm, codificação posicional no estilo RoPE, SwiGLU e attention agrupado por consulta — sobreviveu. Cada modelo que apareceu entre meados de 2025 e abril de 2026 mantém essa receita. O que mudou foi tudo o que está ao redor dela.
Primeiro, MoE virou padrão na ponta. Llama 4 Scout e Maverick (abril de 2025) foram os primeiros lançamentos MoE da Meta, com 17 bilhões de parâmetros ativos distribuídos por 16 e 128 experts, respectivamente [src_059]. DeepSeek-V4 (abril de 2026) chega com 1,6 trilhão de parâmetros totais e 49 bilhões ativos por token [src_060]. Qwen3-235B-A22B (maio de 2025) ativa 22 bilhões de um total de 235 bilhões de parâmetros, com 128 experts e 8 ativos a cada passo [src_057]. A divisão denso-versus-esparso que a tabela tratava como uma dicotomia Llama-vs-DeepSeek tornou-se agora um eixo de razão de esparsidade, com as razões mais agressivas operando perto de 5 por cento ativos.
Segundo, as variantes de attention se multiplicaram. A trajetória do DeepSeek foi MLA → DeepSeek Sparse Attention → um híbrido entre Compressed Attention e Heavily-Compressed Attention [src_060]. O Gemma 3 apostou em uma proporção de 5:1 entre janelas locais (sliding) e globais, com janela local de 1024 tokens [src_058]. O Llama 4 introduziu o "iRoPE": algumas camadas não carregam embedding posicional algum, combinadas com um escalonamento de temperatura no attention durante a inferência para generalização em comprimentos maiores [src_059].
🎯 Intuição
iRoPE = RoPE intercalado: em algumas layers o RoPE é aplicado normalmente, em outras nenhuma codificação posicional é aplicada. As layers sem informação posicional podem prestar attention em qualquer token independentemente da distância, o que melhora a generalização em comprimentos maiores; as layers com RoPE carregam o sinal posicional. O escalonamento de temperatura na inferência compensa o attention de alcance mais longo que as layers sem-posicional admitem quando o contexto cresce além do comprimento de treinamento.
⚠️ Armadilha
Seis novos identificadores de modelo e quatro novas variantes de attention em três parágrafos é densidade de preview, não densidade para decorar. A lição é o eixo de mistura entre layers (quais blocos alternam, como as posições são codificadas entre eles, quão agressivamente a FFN é esparsificada) — não memorizar qual variante vive em qual modelo.
Terceiro, as frequências base do RoPE subiram. O Llama-3 usava 500K; Qwen3 e Gemma 3 usam 1 milhão [src_057, src_058]. As janelas de contexto nativas saltaram de 128K (a norma do final de 2024) para a faixa de 256K-1M, com o Llama 4 Scout reivindicando 10M [src_059].
A conclusão para o bloco canônico. A lição para este capítulo é que o panorama no nível de bloco que você acabou de aprender ainda descreve o que está em produção. Os deltas estão no nível da mistura entre layers: quais blocos alternam, como as posições são codificadas entre eles e quão agressivamente a FFN é esparsificada. A tabela acima permanece um retrato fiel do final de 2024; esta subseção registra o que está na fronteira de pesos abertos em abril de 2026.
Tokenização¶
LLMs decoder modernos usam tokenizadores Byte Pair Encoding em nível
de byte — o "estilo tiktoken" herdado da linha GPT. (tiktoken é a
biblioteca open-source de tokenizador BPE da OpenAI, originalmente
liberada com o GPT-3.5 e o GPT-4; o vocabulário-base de 100k que o
Llama-3 estende é a codificação cl100k_base.) A base em nível
de byte significa que o tokenizador pode codificar qualquer string
de entrada, incluindo código, símbolos matemáticos, emoji e texto
multilíngue arbitrário, sem nunca recorrer a um marcador de token
desconhecido; as fusões BPE então compõem esses bytes em sub-word
tokens mais eficientes para o inglês comum e para as línguas dos
dados de treinamento do tokenizador [src_030].
O Llama-3 usa um tokenizador de 128k de vocabulário que combina os 100k tokens do vocabulário tiktoken da OpenAI com 28k tokens adicionais escolhidos para melhorar a cobertura de línguas não-inglesas. A taxa de compressão — caracteres por token, em média sobre um corpus representativo — melhora de 3.17 no tokenizador 32k do Llama-2 para 3.94 no tokenizador 128k do Llama-3 [src_030]. Esse número importa porque determina, para um mesmo conteúdo de texto, quantos tokens uma sequência custa. Uma taxa de compressão maior traduz-se diretamente em mais texto cabendo na mesma janela de contexto, menor custo de inferência por caractere e maior throughput de treinamento por token de treinamento.
O DeepSeek-V3 também usa um tokenizador BPE classe 128k com fallback em nível de byte [src_031]. O ModernBERT, no lado do encoder, usa um BPE OLMo modificado de 50,368 tokens — o tamanho do vocabulário é deliberadamente um múltiplo de \(64\) para que a matriz de embedding se posicione de forma limpa no hardware GPU [src_016]. Essa é uma microotimização recorrente em toda a stack de componentes modernos: tamanhos de vocabulário, contagens de heads e dimensões hidden são todos escolhidos como múltiplos de \(64\) ou \(128\) sempre que possível.
Vale nomear brevemente as alternativas históricas. BERT e a linha encoder-only usaram WordPiece, um algoritmo de sub-word relacionado com regras de fusão ligeiramente diferentes; T5 e a linha encoder-decoder usaram SentencePiece, que dobra o whitespace no alfabeto do tokenizador e opera em texto bruto em vez de palavras pré-tokenizadas. O contraste mecanístico é nítido: WordPiece roda sobre palavras já tokenizadas por whitespace e funde pedaços sub-word a partir de um vocabulário aprendido; SentencePiece opera em fluxos de texto bruto (whitespace incluso como um caractere regular) e é agnóstico de língua na fronteira de entrada; o BPE estilo tiktoken em nível de byte desce ainda mais um nível, tratando a entrada como um fluxo de bytes de modo que qualquer sequência de bytes seja codificável. Ambos foram deslocados no lado decoder-only pelo BPE em nível de byte estilo tiktoken porque o tratamento em nível de byte evita os modos de falha de cobertura de língua que algoritmos pré-tokenizados produzem em código e em línguas sem tokenização limpa por whitespace.
Pipeline de inferência: prefill e decode¶
Um modelo decoder-only moderno na inferência divide seu trabalho em duas fases que têm características de desempenho muito diferentes. A primeira fase, prefill, processa o prompt inteiro em um único forward pass paralelo. Cada token no prompt presta attention em todo token anterior sob a máscara causal, tudo em uma única passagem intensiva em multiplicação de matrizes pela stack. O subproduto do prefill é o KV-cache: para cada layer, para cada token de prompt, as keys e values projetadas são escritas em um cache por layer para que não precisem ser recomputadas [src_002, src_006].
A segunda fase, decode, gera um novo token por vez. Cada passo de decode lê o embedding do token corrente, executa-o pela stack e, no sublayer de attention de cada layer, projeta o novo token em uma query, key e value. A nova key e o novo value são acrescentados ao KV-cache do layer. A query presta attention em todas as keys e values no cache até o passo corrente, inclusive. Após o FFN e o unembedding, o modelo emite uma distribuição de logits sobre o vocabulário, amostra o próximo token e o loop se repete.
Decode é fundamentalmente um trabalho diferente do prefill. Cada passo de decode é um único token movendo-se pela stack, mas ele precisa ler o KV-cache para todos os tokens anteriores em todos os layers. A intensidade aritmética — a razão entre operações de ponto flutuante e tráfego de memória — é baixa. O decode é memory-bandwidth-bound em aceleradores modernos: as leituras do KV-cache dominam, e os FLOPs ficam em grande parte ociosos [src_006]. Esse é o fato que motiva quase toda otimização de inferência na stack moderna — compressão de KV-cache, GQA / MQA / MLA, alocadores paged-attention, speculative decoding. (Paged-attention é o alocador de KV-cache introduzido pelo vLLM que divide o cache em páginas de tamanho fixo e usa tabelas de indireção, permitindo compartilhamento eficiente de memória entre requisições concorrentes.) O Capítulo 4 desenvolve em detalhes a análise de bandwidth.
O tamanho do KV-cache, recapitulado do Capítulo 4, é
onde \(L\) é o número de layers, \(h_{kv}\) o número de key/value heads, \(d_h\) a dimensão por head, e \(b\) os bytes por elemento armazenado (o \(2\) inicial conta tanto K quanto V).
🤔 Pause e pense
Pause antes de substituir. Dada a fórmula acima e os números do Llama-3 70B (\(L = 80\), \(h_{kv} = 8\), \(d_h = 128\), armazenamento fp16, \(b = 2\)): preveja o tamanho do KV-cache por token dentro de uma ordem de magnitude — são dezenas de KB, centenas de KB, ou megabytes? Depois confira contra a próxima equação.
Para o Llama-3 70B com \(L = 80\), \(h_{kv} = 8\), \(d_h = 128\), e \(b = 2\) (armazenamento fp16), isto é
ou aproximadamente \(320\) KiB por token de contexto. Em um comprimento de contexto de \(8{,}192\) isso é aproximadamente \(2.5\) GiB de KV-cache por sequência.
🎯 Intuição
Um modelo de 8B parâmetros em fp16 pesa cerca de \(16\) GiB. Em \(128{,}000\) tokens de contexto, o KV-cache por sequência para uma configuração Llama-3 70B GQA-8 é aproximadamente \(40\) GiB — mais do que o dobro da pegada de pesos de um modelo de 8B. Esse é o desfecho calibrado da fórmula acima: em contextos longos, o cache deixa de ser uma nota de rodapé e passa a ser o termo de memória dominante.
Nos comprimentos de contexto mais longos que o modelo posteriormente suporta (até \(128{,}000\) tokens após a extensão da base RoPE), o KV-cache excede os pesos de um modelo de 8B. Os números de configuração são de [src_030]; a fórmula e sua motivação foram desenvolvidas no Capítulo 4. Esse escalonamento linear em \(h_{kv}\) é a razão arquitetural para a existência do GQA: colapsar \(h\) key-value heads em \(h_{kv} = h/g\) heads dá uma redução imediata de fator \(g\) na memória de cache.
🔄 Recapitulação
Prompts de retrieval sobre o split prefill/decode do §5, a assimetria de intensidade aritmética e a fórmula de tamanho do KV-cache:
- Complete a fórmula. KV-cache bytes por token = \(2 \cdot \_\_\_ \cdot \_\_\_ \cdot \_\_\_ \cdot \_\_\_\). Nomeie o que cada fator conta.
- Explique por que o decode é memory-bandwidth-bound. Qual a razão entre quais duas quantidades é "baixa" no momento do decode, e por que reduzir essa razão motiva compressão de KV-cache em vez de kernels de matmul mais rápidos?
- Preveja o cache por sequência. Para um modelo hipotético com \(L = 32\), \(h_{kv} = 8\), \(d_h = 128\), armazenamento fp16, em \(32{,}768\) tokens de contexto — dentro de uma ordem de magnitude, qual é o KV-cache por sequência?
Speculative decoding¶
Decode memory-bandwidth-bound admite um truque inteligente de amortização. Speculative decoding usa um modelo draft pequeno para propor uma sequência de \(K\) tokens candidatos seguintes, e então executa o modelo target grande em um único forward pass paralelo sobre a sequência proposta. Esse pass produz a distribuição do modelo target em cada posição; o procedimento mantém o prefixo mais longo dos tokens propostos que o modelo target também teria produzido, e descarta o restante. O efeito líquido é que, quando as predições do modelo draft concordam com as do target, o modelo target emite múltiplos tokens por seu próprio forward pass [src_006].
O ganho é throughput. Cada token rejeitado custa um forward pass do modelo target que não produziu nova saída, mas o pass de verificação em si é barato em relação a \(K\) passos de decode separados porque é arithmetic-intensity-friendly: o target avalia \(K\) tokens em paralelo, e o KV-cache é lido uma vez para todo o batch de posições em vez de \(K\) vezes. O ganho líquido de throughput ocorre quando a taxa de aceitação do draft, multiplicada pela latência por token do draft, é menor do que a latência do target dividida por \(K\). Detalhes de implementação e a implementação de referência gpt-fast são adiados para o Apêndice B. O DeepSeek-V3 incorpora uma capacidade relacionada em seu modelo base na forma de multi-token prediction durante o treinamento — MTP, prevendo os próximos \(k\) tokens conjuntamente a partir de cada posição via cabeças auxiliares sobre o backbone compartilhado, em vez do próximo-1 autorregressivo padrão; o §8 retorna a MTP nos destaques do DeepSeek-V3 [src_031].
A história do over-training pós-Chinchilla¶
As scaling laws de Chinchilla, que o Capítulo 9 desenvolve, identificam uma alocação compute-ótima de dados e parâmetros: aproximadamente \(20\) tokens de treinamento por parâmetro. Por essa métrica, o Llama-3 8B treinado em \(15 \times 10^{12}\) tokens tem uma razão tokens-por-parâmetro próxima de \(1{,}875\) — quase duas ordens de magnitude além do ponto compute-ótimo [src_030]. O Llama-3 70B na mesma escala de dados de treinamento também está claramente além do Chinchilla-ótimo, embora por um fator menor.
Isso não é um erro. Chinchilla otimiza compute total de treinamento sob um orçamento fixo. Um laboratório de fronteira que precisa servir um modelo a usuários por meses ou anos paga compute de inferência também, e o compute de inferência é pago por token de saída gerada, em toda saída, para sempre. Um modelo menor treinado em mais tokens do que o Chinchilla recomenda tem pior eficiência de training-compute mas menor custo de inferência, e a balança pende fortemente em direção à inferência uma vez que o modelo seja implantado em escala. O relatório da manada Llama-3 faz esse argumento explicitamente quando justifica o regime de over-training [src_030]. O Capítulo 9 desenvolve a figura completa das scaling laws e quantifica o trade-off.
🔗 Conexão
A scaling law de Chinchilla e o regime de over-training pós-Chinchilla são derivados no Capítulo 9. Os números da fronteira DeepSeek-V4 / Llama-4 da subseção H3 do §3 acima (razões de esparsidade, comprimentos de contexto nativos, bases do RoPE em 1M) estão do mesmo lado over-training da linha, alguns anos depois.
💡 Resultado-chave
Quando o custo de inferência domina o custo total de vida do modelo, treinar um modelo menor em mais dados do que o Chinchilla recomenda — Llama-3 8B em 15T tokens, razão ≈ 1875 — é uma troca deliberada de eficiência de training-compute por economia de inference-compute.
Destaques do DeepSeek-V3¶
O DeepSeek-V3 é o modelo de fronteira mais arquiteturalmente distintivo do final de 2024, e vale tornar visível o que o torna diferente [src_031]. Três deltas importam.
O primeiro é Multi-head Latent Attention (MLA). Em vez de fazer cache de keys e values plenas por head, o MLA faz cache de uma representação latente de baixo posto que o sublayer de attention expande de volta em keys e values por head em tempo real. A dimensionalidade do vetor latente é substancialmente menor do que \(h_{kv} \cdot d_h\), então a memória de KV-cache por token diminui correspondentemente. O MLA é, em certo sentido, o próximo movimento ao longo do mesmo eixo de MHA → MQA → GQA: cada passo troca uma pequena concessão representacional por uma grande redução na memória de KV-cache [src_031]. O Capítulo 4 desenvolve o panorama de variantes de attention; o Capítulo 10 retoma o MLA no contexto da inferência MoE.
O segundo é Mixture-of-Experts com balanceamento de carga livre de perda auxiliar. A FFN do DeepSeek-V3 é substituída por uma stack de experts e um router que envia cada token para um subconjunto desses experts. Os \(671 \times 10^9\) parâmetros totais no modelo incluem todos os experts; apenas os \(37 \times 10^9\) parâmetros ativos por token participam de qualquer forward pass dado [src_031]. Designs MoE anteriores adicionavam um termo de perda auxiliar ao objetivo de treinamento para manter os experts uniformemente utilizados; o DeepSeek-V3 em vez disso usa um esquema de correção de viés no router que atinge balanço sem uma perda auxiliar. As mecânicas pertencem ao Capítulo 10.
O terceiro é a própria escala de treinamento. O DeepSeek-V3 foi pré-treinado em \(14.8 \times 10^{12}\) tokens usando aproximadamente \(2.788 \times 10^6\) H800 GPU-hours [src_031]. Esse número é um dos orçamentos de treinamento em escala de fronteira mais concretamente documentados na literatura aberta, e ele aterra a discussão do Capítulo 9 sobre eficiência efetiva de training-compute em escala MoE.
Resumo de fechamento¶
A arquitetura convergiu. Um LLM decoder-only de 2024-2025 é uma stack de blocos Transformer pre-RMSNorm com RoPE em Q/K, uma variante de attention agrupado para compressão de KV-cache e uma FFN SwiGLU. Os eixos de diferenciação remanescentes são a variante de attention (GQA na família Llama, MLA no DeepSeek-V3), a escolha denso-vs-MoE, o vocabulário e a cobertura do tokenizador, e a mistura de dados de treinamento. Componentes que este capítulo apenas nomeou de passagem — frequências base RoPE, kernels FlashAttention, a forma exata de pre-RMSNorm — foram desenvolvidos em detalhes nos Capítulos 2 a 4 [src_046].
A próxima parte do livro é sobre escala. O Capítulo 9 deriva as scaling laws de Chinchilla e percorre o regime de over-training pós-Chinchilla que a manada Llama-3 habita [src_030]; o Capítulo 10 desenvolve mixture-of-experts e o balanceamento livre de perda auxiliar do DeepSeek-V3 [src_031]. Após a escala vem o alinhamento: a Parte VI pega o backbone decoder pré-treinado produzido pelas receitas aqui e o converte em um sistema que segue instruções, é alinhado por preferências e é capaz de reasoning. O modelo pré-treinado que este capítulo monta é o substrato sobre o qual todo esse trabalho posterior acontece.
🔗 Conexão
Escala: Cap.9 scaling laws e Cap.10 mixture-of-experts. Alinhamento: a Parte VI do livro cobre SFT/RLHF, DPO e modelos de reasoning. O decoder pré-treinado que este capítulo monta é o substrato para tudo que segue.
🔄 Recapitulação
Prompts de retrieval em nível de capítulo sobre o conteúdo central (bloco do §2 + tabela do §3 + KV-cache do §5 + speculative decoding do §6 + over-training do §7):
- Complete a lista da convergência. Quais quatro componentes são compartilhados por toda coluna decoder moderna na tabela do §3?
- Complete o cálculo. Qual é o tamanho por token do KV-cache para o Llama-3 70B (em KiB), e por que esse número sobe acentuadamente em contextos longos?
- Explique por que o over-training (treinar um modelo menor em muito mais dados do que o Chinchilla recomenda) faz sentido econômico em escala de implantação.
- Compare o panorama no nível de bloco que você aprendeu no §2 com o panorama no nível de mistura entre layers que a subseção H3 do §3 (fronteira de abril de 2026) introduz. Qual nível está convergido entre fornecedores em abril de 2026, e qual nível é o espaço de design ativo?
References¶
- src_002 — Xiao, T. & Zhu, J. (2025). Foundations of Large Language Models. arXiv:2501.09223. https://arxiv.org/pdf/2501.09223
- src_006 — Hugging Face (2025). Smol Training Playbook. https://huggingface.co/spaces/HuggingFaceTB/smol-training-playbook
- src_016 — Warner, B., Chaffin, A., Clavié, B., Weller, O., Hallström, O., Taghadouini, S., Gallagher, A., Biswas, R., Ladhak, F., Aarsen, T., Cooper, N., Adams, G., Howard, J., & Poli, I. (2024). ModernBERT: Smarter, Better, Faster, Longer. arXiv:2412.13663. https://arxiv.org/pdf/2412.13663
- src_029 — Touvron, H., Martin, L., Stone, K., et al. (2023). Llama 2: Open Foundation and Fine-Tuned Chat Models. arXiv:2307.09288. https://arxiv.org/pdf/2307.09288
- src_030 — Grattafiori, A., et al. (2024). The Llama 3 Herd of Models. arXiv:2407.21783. https://arxiv.org/pdf/2407.21783
- src_031 — DeepSeek-AI (2024). DeepSeek-V3 Technical Report. arXiv:2412.19437. https://arxiv.org/pdf/2412.19437
- src_037 — Brown, T. B., Mann, B., Ryder, N., et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165. https://arxiv.org/pdf/2005.14165
- src_046 — Arora, S. & Chen, D. (2024). Princeton COS 597R: Deep Dive into LLMs (Fall 2024). https://princeton-cos597r.github.io/
- src_047 — Grigorov, D. (2026). Building Large Language Models from Scratch. Apress. https://doi.org/10.1007/979-8-8688-2297-1
- src_057 — Yang, A. and the Qwen Team (2025). Qwen3 Technical Report. arXiv:2505.09388. https://arxiv.org/pdf/2505.09388
- src_058 — Gemma Team / Google DeepMind (2025). Gemma 3 Technical Report. arXiv:2503.19786. https://arxiv.org/pdf/2503.19786
- src_059 — Meta AI (April 2025). The Llama 4 herd: The beginning of a new era of natively multimodal AI innovation. Release blog. https://ai.meta.com/blog/llama-4-multimodal-intelligence/
- src_060 — DeepSeek-AI (April 2026). DeepSeek-V4-Pro Model Card. https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro