Que operações são executadas numa camada do descodificador de um transformer?
Tradução automática
Este artigo foi traduzido automaticamente a partir da versão original em inglês.
Uma camada do descodificador de um transformer atualiza as representações dos tokens através de atenção e de uma rede feed-forward. A atenção combina informação dos tokens visíveis. A rede feed-forward transforma a representação de cada token separadamente. A normalização e as somas residuais apoiam a repetição do cálculo ao longo de muitas camadas.
Siga uma camada do tipo Llama
Um descodificador comum com normalização prévia executa esta sequência:
- Normaliza a representação de entrada.
- Projeta consultas, chaves e valores e aplica atenção causal.
- Projeta o resultado da atenção e soma-o à entrada original.
- Normaliza essa representação atualizada.
- Executa a rede feed-forward e soma a sua saída.
As somas residuais preservam um percurso de entrada através de cada sub-bloco. RMSNorm altera a escala das representações sem subtrair a média como faz LayerNorm. Os modelos diferem na posição da normalização, no tipo de atenção, na ativação e nos termos de viés; esta sequência descreve um bloco do tipo Llama, e não todos os transformers.
O artigo sobre o Transformer define a atenção como uma combinação de valores ponderada por softmax. A máscara causal permite que uma posição atenda a si própria e às posições anteriores. As projeções com múltiplas cabeças permitem que diferentes subespaços aprendidos contribuam para o resultado, sem atribuir uma função linguística fixa a cada cabeça.
Conte as projeções reais
A configuração de Llama 3 8B da Meta tem uma dimensão oculta de 4,096, uma dimensão feed-forward de 14,336, 32 cabeças de consulta, oito cabeças KV e uma dimensão por cabeça de 128.
| Grupo de projeções | Cálculo dos parâmetros | Quantidade por camada |
|---|---|---|
| Consultas e saída da atenção | 2 × 4,096² | 33,554,432 |
| Chaves e valores | 2 × 4,096 × (8 × 128) | 8,388,608 |
| Matrizes feed-forward de SwiGLU | 3 × 4,096 × 14,336 | 176,160,768 |
SwiGLU usa duas projeções de entrada, combina um resultado ativado com o outro elemento a elemento e aplica uma projeção de saída. GLU Variants Improve Transformer define esta formulação.
As matrizes feed-forward representam aproximadamente 81% destes pesos de projeção. Isso não corresponde a 81% do tempo total de execução nem de todo o modelo: os embeddings, a cabeça de saída do vocabulário, a normalização, o cálculo da atenção e o tráfego de memória também contam.
Ao estimar os parâmetros, use a largura exata da FFN e o número de cabeças KV. A aproximação genérica 12 × layers × hidden_dimension² pressupõe um bloco convencional diferente e omite detalhes importantes de GQA/SwiGLU.
Guia de engenharia: arquitetura transformer inclui o diagrama da camada e a estimativa dos parâmetros.