Essencial

O bloco completo, montado

Um bloco decoder alterna comunicação causal normalizada e transformação não linear, somando ambas ao mesmo residual stream.

Atualizada em

1

Conceito

As peças agora formam uma interface repetida. Um bloco Transformer decoder-only, pre-norm, recebe um tensor xx de shape B×T×dmodelB\times T\times d_{model} e devolve o mesmo shape. Por dentro, ele expande, divide em heads e forma matrizes quadradas, mas a fronteira permanece estável para dezenas ou centenas de blocos se empilharem.

Conceitualmente, são duas equações:

x1=x+Attention(Norm(x)),x_1=x+\operatorname{Attention}(\operatorname{Norm}(x)), x2=x1+FFN(Norm(x1)).x_2=x_1+\operatorname{FFN}(\operatorname{Norm}(x_1)).

Dropout ou residual scaling podem aparecer nos branches. Arquiteturas post-norm movem a normalização para depois de cada soma. A interface continua sendo estado existente mais atualização aprendida.

Abra o branch de attention. Features normalizadas viram QQ, KK e VV, mudam de shape para heads e são comparadas por scaled dot products. A máscara causal remove arestas futuras. Softmax converte cada linha de query em pesos que misturam values. As heads são concatenadas, a projeção recupera dmodeld_{model} e o resultado é escrito no residual stream.

Abra a FFN. O stream atualizado é normalizado, expandido, transformado por activation ou gate e projetado de volta. A operação é compartilhada entre posições, mas não troca informação entre elas. Ela reconhece e transforma combinações de features trazidas pelo stream.

A alternância é o coração da arquitetura. Attention faz token mixing: cada posição recebe informação de outras posições permitidas. A FFN faz channel mixing: cada posição recombina suas próprias features de forma não linear. Repetir o par permite compor rotas e transformações. Uma camada inicial recolhe uma pista sintática local; uma FFN a codifica; outra head leva essa feature para longe.

Embeddings ficam antes da pilha. Token IDs viram vetores, e o modelo fornece posição por embedding absoluto, RoPE, relative bias ou outro esquema. Uma normalização final costuma fechar a pilha. O language-model head mapeia cada posição a logits do vocabulário. Weight tying pode reutilizar a matriz de embeddings nessa projeção.

Rastrear shapes evita erros. Com B=8B=8, T=512T=512, dmodel=768d_{model}=768 e 12 heads, cada head comum tem largura 64. As pontuações têm shape 8×12×512×5128\times12\times512\times512. Depois da mistura, o tensor volta a 8×12×512×648\times12\times512\times64 e concatena para 8×512×7688\times512\times768. A FFN expande o último eixo, mas precisa voltar antes da soma.

Memória não segue só parâmetros. A matriz de attention e intermediários de backward escalam com T2T^2 em implementações convencionais. Ativações da FFN escalam com TdffT d_{ff}. Treinamento guarda ou recompõe dados para gradientes; decode armazena keys e values. O mesmo bloco pressiona hardware de formas distintas em pretraining, prefill e decode.

Uma anatomia útil preserva propriedade e causalidade: o residual stream é central; normalização o lê; attention e FFN são branches que devolvem updates. Desenhar como se o stream atravessasse attention e perdesse o estado anterior esconde a razão do aprendizado residual.

O bloco montado é compacto. Seu poder vem da largura, profundidade, dados e composição repetida, não de uma lista longa de operações. Entender a interface permite ler implementações reais sem confundir kernels fundidos ou nomes diferentes com matemática diferente.

2

Como explicar para uma criança de cinco anos

Um pacote segue numa esteira por duas estações. Na comunicação, funcionários leem o manifesto normalizado e recuperam notas permitidas de pacotes anteriores; as notas são somadas sem descartar o conteúdo. Na oficina, outro manifesto normalizado alimenta ferramentas largas, e o resultado também é somado. Um bloco é esse módulo de duas estações; profundidade é repeti-lo com novos funcionários e ferramentas.

3

Ensine de volta

Percorra um tensor por um bloco decoder pre-norm, indicando shapes, máscaras, somas residuais e a diferença entre mistura de tokens e de features.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Salvo somente neste dispositivo.

Ver uma resposta-modelo

Um tensor B×T×d_model é normalizado e projetado em Q, K e V multi-head. Causal attention mistura posições permitidas, as heads são concatenadas e projetadas, e a atualização é somada ao stream. Outra normalização alimenta uma FFN larga que mistura canais independentemente por posição, volta a d_model e soma outra atualização. Após cada branch, o shape retorna a B×T×d_model para empilhar blocos.

4

Teste seu entendimento

1. Qual subcamada mistura posições num decoder block?
Resposta e explicação

Causal self-attention — Attention combina values de posições permitidas; a FFN comum age independentemente por posição.

2. Por que cada branch volta a d_model?
Resposta e explicação

Para somar sua atualização ao residual stream — A soma residual exige shapes iguais, e uma largura estável permite empilhar blocos com a mesma interface.

Conclua o teach-back e acerte o quiz para finalizar a aula.

Fontes

  1. Ashish Vaswani et al. (2017). Attention Is All You Need.