Comment créer des modèles Transformers économes en mémoire avec xFormers à l’aide de séquences compactées, de GQA, d’ALiBi, de SwiGLU et de l’attention causale

Voici une information qui pourrait bien avoir un impact durable sur le secteur.

Comment créer des modèles Transformers économes en mémoire avec xFormers à l’aide de séquences compactées, de GQA, d’ALiBi, de SwiGLU et de l’attention causale

Dans ce tutoriel, nous mettons en œuvre xFormers : une boîte à outils pratique permettant de créer des modèles Transformer rapides et économes en mémoire sur les GPU. Nous commençons par valider l’efficacité en mémoire du mécanisme d’attention par rapport à une implémentation standard, puis nous comparons leur vitesse et leur consommation de mémoire pour différentes longueurs de séquences. Nous examinons ensuite le masquage causal, les séquences compactes à longueur variable, l’attention par requêtes groupées et les biais positionnels ALiBi personnalisés. Enfin, nous combinons ces techniques au sein d’un système de type GPT entraînable qui utilise l’attention xFormers, des couches de propagation directe SwiGLU et un apprentissage automatique en précision mixte.

Nous installons et importons les xFormers, vérifions la disponibilité des GPU et examinons les noyaux d’attention pris en charge par l’environnement. Nous définissons des fonctions d’aide permettant de mesurer le temps d’exécution CUDA et la consommation maximale de mémoire. Nous comparons ensuite l’attention économe en mémoire à l’attention standard afin de confirmer que les deux produisent des résultats très proches les uns des autres.

En complément, nous évaluons les performances de l’attention « naïve » et de l’attention xFormers sur des séquences de plus en plus longues, à l’aide de passes avant et arrière. Nous comparons leurs temps d’exécution et leur consommation maximale de mémoire GPU afin d’observer comment xFormers évite une essor quadratique de la mémoire. Nous appliquons également un masque triangulaire inférieur implicite et vérifions l’attention causale par rapport à l’implémentation de référence.

Nous concaténons des séquences de longueur variable et utilisons BlockDiagonalMask pour empêcher l’attention de franchir les limites des séquences sans remplissage. Nous récupérons les sorties individuelles et mettons également en œuvre une attention causale groupée pour les charges de travail de type décodeur. Nous présentons ensuite l’attention à requêtes groupées, dans laquelle de multiples têtes de requête partagent un nombre réduit de têtes clé-valeur afin de réduire les besoins en cache KV.

À relever, nous construisons un tenseur ALiBi sur mesure qui applique une pénalité de position linéaire différente à chaque tête d’attention. Nous combinons ce biais additif avec un masque causal afin que les tokens ne s’intéressent qu’aux positions précédentes valides. Nous transmettons le biais de ce fait obtenu directement à l’attention xFormers et vérifions la forme de sa sortie.

Nous construisons un Transformer compact de type GPT en utilisant l’attention « causal xFormers », des connexions résiduelles, une normalisation et des couches de propagation directe SwiGLU. Nous entraînons le modèle avec une précision mixte automatique sur une tâche synthétique de prédiction du token suivant, dont le nombre de tokens augmente modulo la taille du vocabulaire. Nous surveillons sa perte et sa précision afin de confirmer que ce Transformer, entièrement optimisé en termes de mémoire, apprend correctement de bout en bout.

Le chapitre n’est pas clos, loin de là.

À découvrir aussi :


Selon l’information initialement publiée par MarkTechPost : MarkTechPost