— 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ÁRIOTAMANHO DO TEXTOCONTAGEM DOS PARES
O que o modelo de fato lê
Quantos "r" há em strawberry?
SmolLM2: strawberry é um token; strawberry é strawberry.
As letras não estão na entrada.
Como 12345 chega ao modelo?
GPT-2: 1234 → 1234, 12345 → 12345 — 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
SFT (fine-tuning supervisionado) sobre demonstrações — ensina o formato de ser um assistente.
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.
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 , é
: 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 DIRETASORTEADOcalculadolido do cacheainda não geradoESTE EXEMPLO · m = 4, n = 6passagens diretas6posições calculadascache depois do passo 6POSIÇÕES NO LABORATÓRIOtokens 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.CONTEXTOThe capital of France israscunho (pequeno) · qalvo (grande) · pmantém com prob. min(1, p/q)u, um sorteio uniformemantidosSAÍ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.
tokenização e o preço do português
a distribuição do próximo token e um espaço
temperatura, top-k e top-p à mão; o laço guloso
perplexidade e bits por caractere
o cache de KV: tamanho e ganho
base contra instruct
uma lei de escala no Pythia, ao longo de e de
configurações de decodificação registradas: repetição contra perda
Prever o próximo token é compressão; comprimir bem exige modelar a fonte.
A perda é uma lei de potência em e ; modelos implantados são treinados muito além do Chinchilla.
A tokenização é ajustada, não neutra: letras, dígitos e o português a 1,8× os tokens.
Um modelo base continua; o pós-treino acrescenta o formato e estreita a distribuição.
pass@k é um limite superior; a taxa de falso positivo do verificador define o teto.
MoE: memória pelos parâmetros totais, computação pelos ativos; o difícil é o balanceamento.
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.