Quelles opérations s'exécutent dans une couche de décodeur transformer ?

Traduction automatique

Cet article a été traduit automatiquement depuis la version originale en anglais.

Une couche de décodeur transformer met à jour les représentations des tokens au moyen de l’attention et d’un réseau feed-forward. L’attention combine les informations des tokens visibles. Le réseau feed-forward transforme séparément la représentation de chaque token. La normalisation et les additions résiduelles facilitent la répétition du calcul à travers de nombreuses couches.

Suivre une couche de type Llama

Un décodeur courant avec normalisation préalable exécute cette séquence :

  1. Normaliser la représentation d’entrée.
  2. Projeter les requêtes, les clés et les valeurs, puis appliquer l’attention causale.
  3. Projeter le résultat de l’attention et l’ajouter à l’entrée d’origine.
  4. Normaliser cette représentation mise à jour.
  5. Exécuter le réseau feed-forward et ajouter sa sortie.

Les additions résiduelles conservent un chemin pour l’entrée à travers chaque sous-bloc. RMSNorm remet les représentations à l’échelle sans soustraire la moyenne comme le fait LayerNorm. Les modèles diffèrent par l’emplacement de la normalisation, le type d’attention, l’activation et les termes de biais ; cette séquence décrit un bloc de type Llama, et non tous les transformers.

L’article sur le Transformer définit l’attention comme une combinaison de valeurs pondérée par softmax. Le masquage causal permet à une position de prendre en compte sa propre position et les positions précédentes. Les projections multi-têtes permettent à différents sous-espaces appris de contribuer au résultat, sans attribuer un rôle linguistique fixe à chaque tête.

Compter les projections réelles

La configuration Llama 3 8B de Meta possède une dimension cachée de 4,096, une dimension feed-forward de 14,336, 32 têtes de requête, huit têtes KV et une dimension par tête de 128.

Groupe de projectionsCalcul des paramètresNombre par couche
Requêtes et sortie de l’attention2 × 4,096²33,554,432
Clés et valeurs2 × 4,096 × (8 × 128)8,388,608
Matrices feed-forward de SwiGLU3 × 4,096 × 14,336176,160,768

SwiGLU utilise deux projections d’entrée, combine un résultat activé avec l’autre élément par élément, puis applique une projection de sortie. GLU Variants Improve Transformer définit cette formulation.

Les matrices feed-forward représentent environ 81% de ces poids de projection. Cela ne correspond pas à 81% du temps d’exécution total ni du modèle entier : les embeddings, la tête de sortie du vocabulaire, la normalisation, le calcul de l’attention et les transferts mémoire comptent également.

Pour estimer les paramètres, utilisez la largeur exacte du FFN et le nombre de têtes KV. L’approximation générique 12 × layers × hidden_dimension² suppose un autre bloc conventionnel et omet des détails importants de GQA/SwiGLU.

Guide d’ingénierie : architecture transformer contient le schéma de la couche et l’estimation des paramètres.