¿Qué operaciones se ejecutan dentro de una capa del decodificador de un transformer?

Traducción automática

Este artículo se tradujo automáticamente a partir de la versión original en inglés.

Una capa del decodificador de un transformer actualiza las representaciones de los tokens mediante atención y una red feed-forward. La atención combina información de los tokens visibles. La red feed-forward transforma la representación de cada token por separado. La normalización y las sumas residuales ayudan a repetir el cálculo a lo largo de muchas capas.

Sigue una capa de tipo Llama

Un decodificador habitual con normalización previa ejecuta esta secuencia:

  1. Normaliza la representación de entrada.
  2. Proyecta consultas, claves y valores y aplica atención causal.
  3. Proyecta el resultado de la atención y lo suma a la entrada original.
  4. Normaliza esa representación actualizada.
  5. Ejecuta la red feed-forward y suma su salida.

Las sumas residuales conservan una ruta de entrada a través de cada subbloque. RMSNorm reescala las representaciones sin restar la media como hace LayerNorm. Los modelos difieren en la posición de la normalización, el tipo de atención, la activación y los términos de sesgo; esta secuencia describe un bloque de tipo Llama, no todos los transformers.

El artículo sobre el Transformer define la atención como una combinación de valores ponderada mediante softmax. La máscara causal permite que una posición atienda a sí misma y a las posiciones anteriores. Las proyecciones de múltiples cabezas permiten que distintos subespacios aprendidos contribuyan al resultado, sin asignar una función lingüística fija a cada cabeza.

Cuenta las proyecciones reales

La configuración de Llama 3 8B de Meta tiene una dimensión oculta de 4,096, una dimensión feed-forward de 14,336, 32 cabezas de consulta, ocho cabezas KV y una dimensión por cabeza de 128.

Grupo de proyeccionesCálculo de parámetrosCantidad por capa
Consultas y salida de atención2 × 4,096²33,554,432
Claves y valores2 × 4,096 × (8 × 128)8,388,608
Matrices feed-forward de SwiGLU3 × 4,096 × 14,336176,160,768

SwiGLU utiliza dos proyecciones de entrada, combina un resultado activado elemento a elemento con el otro y aplica una proyección de salida. GLU Variants Improve Transformer define esta formulación.

Las matrices feed-forward representan aproximadamente el 81% de estos pesos de proyección. Eso no equivale al 81% del tiempo total de ejecución ni de todo el modelo: también importan los embeddings, la cabeza de salida del vocabulario, la normalización, el cálculo de atención y el tráfico de memoria.

Al estimar los parámetros, utiliza la anchura exacta de la FFN y el número de cabezas KV. La aproximación genérica 12 × layers × hidden_dimension² presupone un bloque convencional diferente y omite detalles importantes de GQA/SwiGLU.

Guía de ingeniería: arquitectura transformer incluye el diagrama de la capa y la estimación de parámetros.