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:

  1. Normaliza a representação de entrada.
  2. Projeta consultas, chaves e valores e aplica atenção causal.
  3. Projeta o resultado da atenção e soma-o à entrada original.
  4. Normaliza essa representação atualizada.
  5. 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çõesCálculo dos parâmetrosQuantidade por camada
Consultas e saída da atenção2 × 4,096²33,554,432
Chaves e valores2 × 4,096 × (8 × 128)8,388,608
Matrizes feed-forward de SwiGLU3 × 4,096 × 14,336176,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.