Redes Neurais Artificiais e Deep Learning · Insper

Grandes Modelos de Linguagem

A distribuição, medida

Comece com uma pergunta

Um modelo é treinado só para prever o próximo token de texto da web.
Por que depois ele consegue traduzir, escrever código e conversar?

  • Comprimir texto bem exige modelar aquilo que produziu o texto.
  • Para prever a última palavra de um romance policial você precisa da trama.
  • Para prever a linha depois de def você precisa do contrato da função.
  • Previsão do próximo token é um objetivo de compressão e compressão nessa escala força estrutura.

Um objetivo

xt: o token na posição t · x<t: os tokens antes dele · pθ: a probabilidade que o modelo dá · T: tokens do texto · log natural, então a perda sai em nats

  • Auto-supervisionado: o rótulo de cada posição é o próximo token do mesmo texto — qualquer texto é dado de treino.
  • Divida por e tome a exponencial: a perplexidade . Perda média de 3 nats por token → , tão indeciso quanto sortear entre 20 tokens.

O modelo base não é o assistente. Ele continua documentos. Diante de uma pergunta, pode escrever mais três perguntas — uma boa continuação de um questionário.

Quão grande e com quanto texto

— FLOPs de treino a partir dos parâmetros e dos tokens : 2 por parâmetro e por token na ida, 4 na volta (o capítulo de Transformers).

modelo tokens / parâmetro =
GPT-3 (2020) 175B 0,3T 0,3T / 175B = 1,7
Chinchilla (2022) 70B 1,4T 1,4T / 70B = 20 — a regra ótima em compute
Llama 3 8B (2024) 8B 15T 15T / 8B ≈ 1 900
SmolLM2-135M (2025) — o modelo do laboratório 135M 2T 2T / 135M ≈ 15 000

M = 10⁶ · B = 10⁹ · T = 10¹²

Modelos implantados são treinados muito além do Chinchilla: cada token que eles servem custa ≈ FLOPs, pago para sempre.

Uma lei de escala, medida no laboratório

Pythia: modelos de todos os tamanhos treinados nos mesmos 300B de tokens, na mesma ordem. Perda no WikiText-2:

modelo sem embeddings perda (nats/token) queda
pythia-70m 18,9M 4,091
pythia-160m 85,1M (×4,5) 3,500 0,59
pythia-410m 302,3M (×3,6) 3,006 0,49
pythia-1b 805,7M (×2,7) 2,820 0,19
  • Ajuste de uma reta a contra : inclinação , isto é, . Cada degrau compra uma queda menor que a anterior: o formato de uma lei de potência.
  • Ao longo de : o pythia-70m para de melhorar depois de 67,1B / 18,9M ≈ 3 500 tokens por parâmetro (perda 4,06); com os 300B inteiros, 4,09. Dados ajudam até o tamanho virar o limite.

N sem embeddings (como em Kaplan et al.): as tabelas de embedding são consulta, não computação.

Tokenização: BPE em três fusões

BPE (byte-pair encoding): comece de bytes; funda o par adjacente mais frequente num símbolo novo; repita até o vocabulário ter 32k–256k entradas.

BPE treinado no corpus de brinquedo aaabdaaabac. A cada passo contam-se os pares de símbolos vizinhos, o par mais frequente vira um símbolo novo do vocabulário e cada ocorrência dele no texto é fundida, da esquerda para a direita. Três fusões, aa em Z, ab em Y e ZY em X, levam o texto de 11 símbolos para 5 e X representa aaab. VOCABULÁRIO TAMANHO DO TEXTO CONTAGEM DOS PARES

O que o modelo de fato lê

Quantos "r" há em strawberry?

  • SmolLM2: strawberry é um token; strawberry é st raw berry.
  • As letras não estão na entrada.

Como 12345 chega ao modelo?

  • GPT-2: 1234 → 12 34, 12345 → 123 45 — o mesmo dígito em pedaços diferentes.
  • SmolLM2, Llama 2, Qwen: um dígito por token.

Notação: o espaço no começo de strawberry faz parte do token. É outro token, com outro número, que strawberry sem espaço.

O preço do português

O mesmo parágrafo, em inglês e em português. Quantas vezes mais tokens o português custa?

tokenizador vocabulário EN PT PT / EN
GPT-2 50 257 93 168 1,81
SmolLM2 49 152 93 167 1,80
Qwen2.5 151 665 92 119 1,29
  • Fusões ajustadas em texto majoritariamente em inglês: mais latência, mais dinheiro, menos contexto por ideia.
  • Um tokenizador multilíngue reduz o imposto; não o elimina.

Um espaço no final

"The capital of France is" contra "The capital of France is␣". O que acontece com a probabilidade de Paris?

  • Sem o espaço: P( Paris) = 0,0938. Com ele: P(Paris) = 0,000022 — razão 0,0938 / 0,0000218 ≈ 4 303× menor.
  • No texto de treino o espaço vem colado à próxima palavra. Um espaço solto no final está fora da distribuição e o modelo aposta em dígitos.
  • E mesmo sem o espaço o modelo base prefere the (0,262): ele continua texto, não responde.

Pós-treino: de continuação a assistente

  1. SFT (fine-tuning supervisionado) sobre demonstrações — ensina o formato de ser um assistente.
  2. Otimização de preferências (RLHF — RL com feedback humano — com PPO, ou DPO) — qual de duas respostas é melhor, algo que demonstrações não dizem.
  3. RL a partir de um verificador (RLVR, RL com recompensas verificáveis) — acertar, quando "acertar" é checável.

O RLHF treina um modelo de recompensa nas comparações feitas por pessoas e otimiza contra ele com PPO (proximal policy optimization) · o DPO (direct preference optimization) treina direto nas comparações, sem modelo de recompensa

O pipeline é o do capítulo de Transfer Learning, visto do lado do modelo. O passo 3 é o que mudou mais recentemente.

Base contra instruct, medido

O instruct lê a pergunta dentro de um template de chat (<|im_start|>, <|im_end|>: tokens especiais que abrem e fecham cada turno):

<|im_start|>system
You are a helpful AI assistant ...<|im_end|>
<|im_start|>user
What is the capital of France?<|im_end|>
<|im_start|>assistant
  • Base: The capital of France is Paris., depois a pergunta de novo, depois a resposta de novo — uma página de perguntas frequentes que não para.
  • Instruct: The capital of France is Paris. e o token de fim de turno.
  • Entropia do próximo token, média ao longo da resposta, cinco perguntas: 3,14 bits (base, como sortear entre tokens) → 1,21 bits (instruct, ).
  • O pós-treino ensina um formato e estreita a distribuição.

Compute na inferência: o segundo eixo de escala

Até 2024, um modelo melhor era um modelo maior. Então: mantenha o modelo fixo e gaste mais compute na inferência.

  • Escreva uma cadeia longa de raciocínio.
  • Amostre várias tentativas; cheque-as; escolha uma.
  • Com os mesmos FLOPs, isso pode vencer um modelo muitas vezes maior em problemas que o pequeno resolve ao menos às vezes (Snell et al., 2025).

Um modelo resolve um problema 25% das vezes. Com 16 tentativas, com que frequência alguma acerta?

Essa frequência tem nome: pass@k, a chance de pelo menos uma de k tentativas acertar (aqui k = 16).

Simulador · pass@k, voto e verificadores

O verificador define o teto

Sem verificador, o limite é o pass@k , a chance de alguma das tentativas acertar, em que é a chance de uma tentativa acertar: .

Com um verificador que aceita uma resposta certa com probabilidade e uma errada com , a chance de escolher uma certa, quando , é

  • , verificador fraco (, ): 0,43 — não importa quantas amostras.
  • : 1. Isso é código (rode os testes) e matemática (cheque a resposta) — onde os modelos de raciocínio melhoraram primeiro.

Como os modelos aprenderam a raciocinar

GRPO (DeepSeekMath, 2024): amostre um grupo de tentativas, recompense as que passam, normalize dentro do grupo — sem rede de valor.

ri: a nota do verificador para a tentativa i · Âi: a vantagem, quanto empurrar a tentativa i para cima ou para baixo. Ex.: G = 4, r = (1, 0, 0, 1) → média 0,5, desvio 0,5 → Â = (+1, −1, −1, +1).

  • R1-Zero: nenhuma cadeia de raciocínio fornecida. As cadeias cresceram porque cadeias longas passavam mais; surgiram voltar atrás e conferir o trabalho.
  • O R1 publicado acrescentou antes alguns exemplos resolvidos — pela legibilidade.

Reward hacking: otimizar contra o verificador, não contra a correção. O verificador precisa de avaliação adversarial própria.

Mixture of Experts: mais parâmetros, mesmo custo

  • Troque cada MLP por muitos especialistas e um roteador que ativa deles por token .
  • : o especialista (um MLP) · : os pesos do roteador · : a probabilidade que ele dá a cada especialista · Top-: os índices dos maiores.
  • O MLP guarda cerca de dois terços dos parâmetros de um bloco ( de , o capítulo de Transformers): é ali que está a alavanca.

DeepSeek-V3: 671B de parâmetros, 37B ativos por token. Pelo que você paga em memória? E em computação?

Simulador · roteamento e carga

O difícil é o balanceamento

  • Roteamento é um laço de realimentação positiva: um especialista que recebe mais tokens treina mais rápido e é mais escolhido. Sem um termo de balanceamento, o roteador colapsa.
  • Correção: uma perda auxiliar — ou, no DeepSeek-V3, um viés por especialista ajustado até as cargas se igualarem, sem segundo objetivo.
  • Granularidade fina: top-8 de 256 dá combinações (os jeitos de escolher 8 de 256); top-2 de 8 dá .
  • Um especialista compartilhado, sempre ligado, guarda o conhecimento comum para os roteados se especializarem.

Você paga memória pelos parâmetros totais e computação pelos ativos: boa troca num datacenter, ruim num laptop.

O modelo te dá uma distribuição

Top-k com é uma boa regra para qualquer prompt?

prompt (SmolLM2-135M) token do topo núcleo de 90% os 40 do topo cobrem
"The Eiffel Tower is located in the city of" Paris 0,881 3 tokens 97%
"My favourite food is" a 0,045 1 550 tokens 33%

top-k: mantém os k mais prováveis · núcleo de 90% (top-p, p = 0,9): o menor conjunto de tokens cuja probabilidade soma 0,9 · min-p: os tokens acima de uma fração da probabilidade do maior

  • mantém 40 − 3 = 37 tokens de lixo no primeiro caso e joga fora a maioria das boas respostas no segundo (os 40 cobrem só 33% da massa).
  • top-p e min-p se adaptam ao formato da distribuição; top-k, não.

Simulador · temperatura e truncamento

Simulador · o próximo token, linha a linha

logits · linha t = depois do token t (edite)

O guloso entra em laço, medido

A decodificação gulosa sempre escolhe o token mais provável. O que pode dar errado em 100 tokens?

  • "The best way to learn deep learning is" → "…You need to understand the problem domain and the problem you are trying to solve." três vezes seguidas
  • 4-gramas repetidos (a fração das sequências de 4 tokens que já tinham aparecido antes no texto): 42% no guloso contra 11% amostrando (temperatura τ = 0,7, top-p = 0,9; média de 5 amostras).
  • Depois que uma frase aparece, repeti-la é a continuação mais provável: o laço se alimenta sozinho.
  • Padrões: fatos, código e ferramentas com τ = 0–0,2; prosa com 0,7–1,0 e top-p 0,9 ou min-p 0,05.

Serviço: decodificar é limitado por memória

  • O prefill lê o prompt inteiro numa passagem paralela: limitado por aritmética.
  • A decodificação faz um token por passagem e cada passagem lê todos os pesos da memória.

Um modelo de 8B em 16 bits numa GPU que lê 3,35 TB/s (uma H100). Qual a decodificação mais rápida possível para uma conversa só?

  • Pesos: 8·10⁹ × 2 bytes = 16 GB, lidos inteiros a cada token.
  • 16 GB / 3,35 TB/s ≈ 4,8 ms por token → no máximo 1 / 4,8 ms ≈ 200 tokens/s, quaisquer que sejam os FLOPs.
  • O batching divide uma leitura dos pesos entre muitas requisições.

O cache de KV: quanto ele ocupa

Chaves e valores de tokens passados nunca mudam: calcule uma vez, guarde. Números por token:

2: uma chave e um valor · L: camadas · hkv: cabeças de K/V (com GQA, menos que as de consulta) · dhead: a dimensão de cada cabeça

  • SmolLM2-135M (; 9 cabeças de consulta dividem de K/V; ): números × 4 bytes (float32) = 46 080 bytes por token. Mil tokens: 43,9 MiB.
  • Llama 3 8B (, , , bf16): bytes = 128 KiB por token → 16 GiB num contexto de 128k: o tamanho dos próprios pesos, por conversa.

Diagrama · prefill, decodificação e o cache

Geração de 6 tokens depois do prompt de 4 tokens Once upon a time, uma passagem direta por passo. Cada linha é um passo: a entrada é o prompt mais os tokens já sorteados e o passo termina sorteando o próximo token, que entra na entrada da linha seguinte. Sem cache, cada passo recalcula a sequência inteira, 39 posições no total; com cache de KV, o passo 1 é o prefill dos 4 tokens do prompt e cada passo seguinte calcula só o token mais novo, 9 posições no total, lendo do cache as chaves e os valores anteriores. As 6 passagens continuam sequenciais nos dois casos. ENTRADA DE CADA PASSAGEM DIRETA SORTEADO calculado lido do cache ainda não gerado ESTE EXEMPLO · m = 4, n = 6 passagens diretas6 posições calculadas cache depois do passo 6 POSIÇÕES NO LABORATÓRIO tokens novos nsemcom

O cache de KV: o que ele compra

Prompt "Once upon a time": tokens. Para tokens novos, com cache: ; sem: — contra . Os tokens gerados são idênticos.

tokens novos tokens processados (com / sem) tempo com cache sem ganho
50 53 / 1 425 (27×) 0,8 s 1,8 s 2,3×
100 103 / 5 350 (52×) 1,6 s 4,7 s 3,0×
200 203 / 20 700 (102×) 3,2 s 13,2 s 4,1×
400 403 / 81 400 (202×) 6,7 s 43,1 s 6,4×

Mais dois jeitos de ler menos bytes

Quantização

  • Pesos em 8 ou 4 bits em vez de 16.
  • Menos bytes por token → decodificação mais rápida: o 8B em 4 bits tem 8·10⁹ × 0,5 byte = 4 GB e o teto sobe de ~200 para ~800 tokens/s.
  • Em geral uma pequena perda de qualidade.

Decodificação especulativa

  • Um modelo rascunho pequeno propõe 5 tokens.
  • O grande confere os 5 numa única passagem — o mesmo tráfego de memória que conferir um.
  • Ficam, da esquerda para a direita, enquanto passam; o primeiro rejeitado é trocado pelo modelo grande: a mesma distribuição de saída (próximo slide).
  • 2–3× mais rápido (Leviathan et al., 2023).

Diagrama · uma rodada de decodificação especulativa

Uma rodada de decodificação especulativa depois do contexto The capital of France is. Um modelo rascunho pequeno propõe cinco tokens com probabilidades q; o modelo grande pontua todos numa única passagem direta e devolve as próprias probabilidades p. Cada token do rascunho é mantido com probabilidade min(1, p sobre q), da esquerda para a direita: Paris, o ponto final e It ficam; has é rejeitado e trocado por is, sorteado pelo modelo grande; o último rascunho é descartado. Uma passagem do modelo grande rende quatro tokens. CONTEXTO The capital of France is rascunho (pequeno) · q alvo (grande) · p mantém com prob. min(1, p/q) u, um sorteio uniforme mantidos SAÍDA

Emergência, com honestidade

Meça soma de 3 dígitos por casamento exato em modelos de vários tamanhos. Por que a curva pode parecer um penhasco?

  • Casamento exato é um limiar: todos os dígitos certos ou zero. A log-probabilidade por token da resposta certa melhora suavemente (Schaeffer et al., 2023).
  • O que sobrevive: a melhora é suave na perda e abrupta na utilidade — 40% de casamento exato pode ser inutilizável, 85% é um produto.
  • Se sua métrica é um limiar, seu progresso vai parecer um penhasco.

De onde as falhas vêm

falha de onde vem
Alucinação Corrigir só por acurácia recompensa chutar em vez de "não sei" (Kalai et al., 2025)
Contexto não é memória A recuperação afunda no meio de contextos longos (Liu et al., 2024)
Injeção de prompt Instruções nos dados parecem instruções; sem correção robusta — privilégio mínimo, confirmação humana
Apodrecimento das avaliações Benchmarks públicos vazam para o treino; prefira avaliações privadas, recentes e pareadas

De chat para agentes

Um agente roda um laço: leia o objetivo, chame uma ferramenta, leia o resultado, decida, repita, pare.

Cada passo de um agente é 95% confiável. Quão confiável é uma tarefa de dez passos?

  • 0,60. Erros se acumulam.
  • Agentes que funcionam são feitos de passos checáveis e reexecutáveis, não de uma inferência longa.
  • A janela de contexto é um orçamento: cada resultado de ferramenta disputa espaço com o objetivo.

Laboratório · a distribuição, medida

Notebook no Colab, ~2 h, CPU (uma T4 só acelera a seção 7). Cada seção termina num checkpoint com valor de verificação.

  1. tokenização e o preço do português
  2. a distribuição do próximo token e um espaço
  3. temperatura, top-k e top-p à mão; o laço guloso
  4. perplexidade e bits por caractere
  1. o cache de KV: tamanho e ganho
  2. base contra instruct
  3. uma lei de escala no Pythia, ao longo de e de
  4. configurações de decodificação registradas: repetição contra perda

abrir no Colab →

Pontos principais

  1. Prever o próximo token é compressão; comprimir bem exige modelar a fonte.
  2. A perda é uma lei de potência em e ; modelos implantados são treinados muito além do Chinchilla.
  3. A tokenização é ajustada, não neutra: letras, dígitos e o português a 1,8× os tokens.
  4. Um modelo base continua; o pós-treino acrescenta o formato e estreita a distribuição.
  5. pass@k é um limite superior; a taxa de falso positivo do verificador define o teto.
  6. MoE: memória pelos parâmetros totais, computação pelos ativos; o difícil é o balanceamento.
  7. Decodificar é um algoritmo separado e limitado por memória: cache de KV, batching, quantização, especulação.

Roteiro: (1) pré-treino — o objetivo, a escala, a tokenização; (2) pós-treino — base contra instruct; (3) compute na inferência e verificadores; (4) MoE; (5) amostragem e serviço; (6) emergência, falhas, agentes. Fecha com o laboratório no Colab, cujos números aparecem ao longo do deck.

Cinco passos: contar os pares (aa 4, sobrepostos dentro de aaa); aa → Z, 11 → 9 símbolos (a fusão não se sobrepõe); recontar, Za e ab empatam com 2, o exemplo fica com ab → Y, 7 símbolos; ZY → X = aaab, XdXac, 5 símbolos; fim, cada par uma vez. Passe o mouse sobre um par para ver as ocorrências. O vocabulário ganhou X = aaab: um algoritmo de compressão ajustado a um corpus e por isso não neutro.

Resposta: 1 − 0,75^16 ≈ 99% para um problema só; no benchmark do painel, com dificuldade desigual, cerca de 80%. Depois arraste o verificador para fraco e veja a curva verde parar; o voto majoritário satura perto de 40%.

Resposta: memória para os 671B, computação para 37B. Depois mude o roteamento para "sem balanceamento": o roteador colapsa e dezenas de especialistas viram peso morto que continua armazenado.

A temperatura divide os logits: nunca remove um token. Leve-a a 2 sem truncamento e veja "banana" ganhar massa; depois ponha min-p 0,1 e veja-a sumir enquanto o prompt confiante quase não se mexe.

Os mesmos logits, usados duas vezes. As linhas 2–3 são o treino: −log do token que veio, média, exp: perplexidade 2,01, contra 5 de um chute uniforme; nenhuma configuração de amostragem a muda. As linhas 4–10 são o deformar do laboratório na última linha e um sorteio: com τ = 0,7 e top-p 0,9 só "gato" e "bola" sobrevivem. Depois os casos: guloso (sempre "gato", seja qual for o u: o laço do próximo slide), quente (u = 0,25 sorteia "perseguiu", p = 0,057: a cauda), top-k 2. A última linha antecipa os slides do cache de KV: 403 contra 81 400.

Comece sem cache: cada passo recalcula a sequência inteira, 4 + 5 + ... + 9 = 39 posições para 6 tokens novos. Clique em "Com cache de KV": o passo 1 é o prefill (os 4 tokens do prompt numa passagem paralela), os passos 2-6 decodificam um token cada, lendo as chaves e os valores do cache: 9 posições. Continuam 6 passagens sequenciais. A tabela é a contagem do laboratório de 50 a 400 tokens novos. Passe o mouse sobre um passo para ver os números dele.

Segundos medidos numa CPU no laboratório; os seus vão ser outros, o formato não.

Seis passos: o modelo grande sozinho faz 1 token por passagem; o rascunho escreve 5 com probabilidades q; uma passagem grande dá p em 6 posições; cada um é mantido com probabilidade min(1, p/q): Paris (p >= q), "." (0,80, u = 0,41), "It" (0,90, u = 0,12); "has" 0,24 com u = 0,66 é rejeitado e trocado por "is", sorteado de max(0, p - q); o último rascunho é descartado. 4 tokens por uma passagem grande e a distribuição de saída é exatamente a do modelo grande. Números ilustrativos.