"Data visualization empowers users to" → 6 tokens:
Data · visualization · em · powers · users · to
" the", "the" e " The" são 3 tokens diferentes.A mesma frase em português: quantos tokens por palavra?
gato = g + ato, cachorro = 4 pedaços.Logits do prompt: (1, 6, 50257) = (frases, posições, vocabulário) — uma distribuição por posição. GPT-2, medido:
| depois de… | palpite | próximo certo | p(certo) | |
|---|---|---|---|---|
Data |
. |
visualization |
11,91 | |
Data visualization |
\n |
em |
11,86 | |
Data visualization em |
powers |
powers |
0,423 | 0,86 |
…empowers |
you |
users |
0,109 | 2,22 |
…empowers users |
to |
to |
0,847 | 0,17 |
…users to |
visualize |
? | — | — |
x: o fluxo residual, n × d (um vetor por token) · Norm: LayerNorm no GPT-2 · h: o fluxo depois da atenção
Nenhuma subcamada substitui o vetor: cada uma soma uma correção. O MLP guarda a maior parte do conhecimento. Entra
Bloco 0 do GPT-2 small, o prompt de 6 tokens. Preencha antes de virar o slide.
| etapa | forma |
|---|---|
| ? | |
| Q, K, V por head | ? |
| ? | |
| ? | |
| camada oculta do MLP | ? |
| ? |
12 heads, cada uma com
MLP do GPT-2:
Responda em (heads ×) tokens × números.
| etapa | forma | de onde vem |
|---|---|---|
6 × 768 |
||
| Q, K, V por head | 12 × 6 × 64 |
|
12 × 6 × 6 |
por head, |
|
6 × 768 |
||
| camada oculta do MLP | 6 × 3072 |
|
6 × 768 |
3072 → 768 e soma com |
O bloco 0 do GPT-2 só com @, uma máscara, um softmax, LayerNorm e GELU — com os pesos do próprio modelo:
| comparado com a biblioteca | diferença máxima |
|---|---|
saída do bloco 0, 6 × 768 |
|
pesos de atenção, 12 × 6 × 6 |
|
logits depois dos 12 blocos + norm final + wteᵀ |
wte: a tabela de embedding de tokens, 50.257 × 768; transposta, ela é a camada de saída (768 → 50.257).
Arredondamento de float32, nada mais: as duas equações de "Dentro de um bloco" são o modelo.
O brinquedo (d = 4, um bloco, V = 12), último token de "o gato subiu no":
␣telhado = | token | ||
|---|---|---|
␣telhado |
2,491 | 0,395 |
␣muro |
1,463 | 0,141 |
␣sofá |
0,999 | 0,089 |
␣chão |
0,970 | 0,086 |
␣gato |
0,634 | 0,062 |
| outros 7 | 0,227 |
Cada linha prevê o seu próximo token: p(alvo) = 0,500; 0,444; 0,274; 0,311; 0,395 → média de −ln p = 0,979 nats (uniforme: ln 12 = 2,485). Sem atenção a última linha diz ␣gato 0,455, ␣telhado 0,143.
GPT-2 small, um bloco, medido (
| parte | conta | parâmetros |
|---|---|---|
| atenção: |
2.362.368 | |
| MLP: 768 → 3072 → 768 | 4.722.432 | |
| duas LayerNorms (ganho e viés) | 3.072 | |
| o bloco | a soma | 7.087.872 · MLP 66,6% |
Zere a saída de todas as subcamadas de atenção e mantenha os MLPs. Em que a previsão se baseia agora?
the:…cat… climbed onto the |
…cash… walked to the |
|
|---|---|---|
| com atenção | roof 0,083 · bed 0,059 |
bank 0,092 · front 0,028 |
| sem atenção | same 0,047 · first 0,019 |
same 0,047 · first 0,019 |
the e o seu índice (9). Perda média no parágrafo de 72 tokens do laboratório: 3,96 → 5,71 nats.144 heads (12 blocos × 12), pontuadas em três funções — GPT-2 small, medido:
| função | melhor head (bloco.head) | peso |
|---|---|---|
| olhar o token anterior | 4.11 | 1,00 |
| olhar o primeiro token ("sumidouro") | 5.1 | 0,99 — 64 de 144 heads põem > metade ali |
| indução: "da última vez que vi isto, o que veio depois?" | 5.5 | 0,95 |
4.11 = bloco 4, head 11, contando do 0 · peso = atenção média que a head põe no alvo (0 a 1)
O GPT-2 small rodando no seu navegador, cada etapa desenhada para o texto que você digitar — poloclub.github.io/transformer-explainer (Cho et al., 2024).
A primeira visita baixa cerca de 660 MB de pesos; o capítulo tem um roteiro passo a passo das sete etapas.
| peça | 2017 | GPT-2 (2019) | 2026 |
|---|---|---|---|
| posição da norma | depois da soma (pós-LN) | antes da subcamada (pré-LN) | pré-LN |
| normalizador | LayerNorm | LayerNorm | RMSNorm |
| MLP | ReLU, 2 matrizes, |
GELU, 2 matrizes, |
SwiGLU, 3 matrizes, |
| atenção | MHA | MHA | GQA — cache de KV 4× menor (8 heads de K/V para 32 de Q) |
| posição | senoidal, na entrada | aprendida, na entrada | RoPE, em Q e K |
| viés | em toda parte | em toda parte | nenhum |
O mecanismo não mudou; a engenharia em volta dele, sim. O GPT-2 — o modelo do Explainer e do laboratório — já tinha a primeira linha. RoPE: rotary position embedding — Q e K giram por um ângulo proporcional à posição, então o escore entre eles depende da distância entre os tokens.
Aplique a norm final e a camada de saída ao fluxo depois de cada bloco ("logit lens"). Resposta final: visualize. Posição 1 = o mais provável dos 50.257.
| lido depois do bloco | embedding | 3 | 6 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|
posição de visualize |
8532 | 381 | 62 | 12 | 2 | 1 | 1 | 1 |
| sua probabilidade | 0,000 | 0,000 | 0,002 | 0,012 | 0,285 | 0,919 | 0,941 | 0,158 |
A RMSNorm mantém o reescalonamento e abandona a centragem.
Uma redução em vez de duas, sem custo mensurável de qualidade.
O SwiGLU — um ramo abre a passagem do outro:
Swish(u) = u·σ(u), σ: a sigmoide · ⊙: produto elemento a elemento
| família | atenção | treinada por | em 2026 |
|---|---|---|---|
| só encoder — BERT | bidirecional | tokens mascarados | embeddings, busca, rerankers; não gera |
| encoder–decoder — T5, BART | as duas + cruzada | sequência a sequência | onde os dois lados diferem: fala (Whisper), texto em imagens |
| só decoder — GPT, Llama, Claude | causal | próximo token | venceu — todo modelo de linguagem de fronteira |
O só-decoder vê menos contexto por token. Por que venceu?
O BERT treina com [MASK], um token que nunca aparece na inferência. Prever o próximo token não tem esse buraco: o treino é a produção.
zi: o logit do token i (a saída do modelo antes do softmax) · T: a temperatura
GPT-2, depois de …empowers users to:
p( visualize) |
tokens p/ 90% | |
|---|---|---|
| 0,2 | 0,976 | 1 |
| 0,5 | 0,656 | 6 |
| 0,8 | 0,294 | 97 |
| 1,0 | 0,158 | 294 |
| 2,0 | 0,013 | 5.956 |
tokens p/ 90%: quantos dos mais prováveis somam 0,9
| prompt | o mais provável (top-1) | top-p 0,9 mantém |
|---|---|---|
…44th President of the United |
States 0,998 |
1 token |
Once upon a time, there was a |
man 0,044 |
3.651 tokens |
␣telhado |
␣muro |
␣sofá |
|
|---|---|---|---|
| 0,5 | 0,761 | 0,097 | 0,039 |
| 1 | 0,395 | 0,141 | 0,089 |
| 2 | 0,208 | 0,124 | 0,098 |
␣telhado 0,737, ␣muro 0,263␣telhado, ␣sofá| passo | ids de entrada | próximo | |
|---|---|---|---|
| 1 | [0, 2, 4, 5, 1] | ␣telhado |
0,395 |
| 2 | … + 6 | . |
0,538 |
| 3 | … + 10 | <|endoftext|> |
0,401 |
o ␣gato ␣sub iu ␣no ␣telhado . → "o gato subiu no telhado."O orçamento é o compute
Chinchilla: 70B (
| modelo | tokens / parâmetro, |
|||
|---|---|---|---|---|
| GPT-3 (2020) — vá maior | 175B | 0,3T | 1,7 | |
| Chinchilla (2022) — juntos | 70B | 1,4T | 20 | |
| Llama 3 8B (2024) — sobretreine | 8B | 15T | 1875 ≈ 1900 |
O produto real do Transformer não é uma escolha de projeto: é que a perda cai de forma previsível com parâmetros, dados e compute.
Notebook no Colab, ~2 h, GPT-2 small em CPU. Cada seção termina num checkpoint com valor de verificação.
Roteiro: (1) o caminho completo, do texto ao próximo token, num GPT-2 de verdade; (2) dentro de um bloco: conversar e depois pensar; (3) Transformer Explainer; (4) as seis coisas que mudaram desde 2017; (5) qual família venceu; (6) escolhendo o próximo token; (7) escala. Fecha com o laboratório no Colab.
Deixe a turma responder "a próxima palavra" primeiro e então corrija: uma distribuição. Escolher é uma etapa separada, com controles próprios, no fim da aula.
No laboratório (seção 4) a função bloco_a_mao imprime exatamente estas seis formas.
A bloco_a_mao do laboratório com uma head, 3 tokens, d = 4 e pesos escolhidos à mão. Avance com Avançar e leia a legenda: a fórmula com os números do token 3 (linha 3 de A = 0,107; 0,787; 0,107; y31 = 1,651). Depois os casos: "linha 2 × 10" (o u não muda, só o residual carrega o tamanho), "só o último token muda" (as linhas 1 e 2 não se mexem: máscara causal), "sem atenção" (h = x, cada linha sozinha).
As páginas do capítulo levam o brinquedo do texto até aqui, com cada número conferível. O GPT-2 faz as mesmas três contas com d = 768 e V = 50.257. A W_U dele é a wte transposta; o brinquedo tem a sua.
Dez minutos em aula ou como tarefa antes do laboratório. O roteiro na página liga cada etapa a uma seção do capítulo. O GPT-2 é um bloco de 2019: o próximo slide mostra que partes já são modernas.
Comece do padrão (2026). Mude todos os controles para a primeira opção e marque os vieses: o artigo de 2017. Veja a linha do residual ficar cinza com o pós-LN e a divisão dos parâmetros: dois terços de MLP com MHA, três quartos com GQA.
O guloso escreve ␣telhado sempre. A amostragem às vezes escreve ␣sofá: uma frase boa que o modelo também considerou. O token de fim de texto é o jeito de o modelo parar sozinho.
Padrão: T = 0,7, top-p 0,9, u = 0,5 → ␣telhado; a última linha roda de novo e prevê "." (0,538). Depois: guloso (u não importa), quente T = 2 (a cauda cresce), top-k 2; mova u para 0,8 → ␣sofá.
Ache o mínimo da curva em 1e23: cerca de 20 tokens por parâmetro. Depois marque "precificar a inferência também" e arraste os tokens a servir de 1e10 a 1e15: o modelo mais barato encolhe e é treinado em muito mais tokens do que o Chinchilla diria.