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 de shape 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:
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 , e , 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 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 , , e 12 heads, cada head comum tem largura 64. As pontuações têm shape . Depois da mistura, o tensor volta a e concatena para . 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 em implementações convencionais. Ativações da FFN escalam com . 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
Conclua o teach-back e acerte o quiz para finalizar a aula.
Fontes
- Ashish Vaswani et al. (2017). Attention Is All You Need.