Intelligence artificielle
UltraFastBERT : Modélisation de langage exponentiellement plus rapide

Les modèles de langage et l’intelligence artificielle générative, réputés pour leurs capacités, sont un sujet brûlant dans l’industrie de l’IA. Les chercheurs du monde entier améliorent leur efficacité et leurs capacités. Ces systèmes, généralement des modèles d’apprentissage automatique, sont pré-entraînés sur des données étiquetées extensives, en intégrant des réseaux de neurones pour l’auto-attention. Ils utilisent différentes couches – feedforward, récurrentes, intégrées et d’attention – pour traiter le texte d’entrée et produire des sorties pertinentes.
La plupart des couches feedforward des grands modèles de langage contiennent la majorité des paramètres. Les études montrent que ces modèles n’utilisent qu’une fraction des neurones disponibles pour le calcul de sortie pendant l’inférence.
Cet article présente UltraFastBERT, un cadre basé sur BERT qui correspond à l’efficacité des principaux modèles BERT, mais utilise seulement 0,3 % des neurones pendant l’inférence, soit 12 neurones sur 4095 dans chaque couche. Nous allons explorer l’architecture, la fonctionnalité et les résultats d’UltraFastBERT. Commençons.
UltraFastBERT : Une introduction à la modélisation de langage exponentiellement plus rapide
Traditionnellement, un modèle de langage utilise différents composants pour se doter de capacités de génération de contenu, notamment des couches feedforward, récurrentes, intégrées et d’attention. Ces composants sont responsables de l’apprentissage de la reconnaissance de modèles pendant l’entraînement et, finalement, de la génération de sorties précises sur la base des textes d’entrée. Chacun de ces composants a des paramètres, et dans les modèles de langage, la majorité de ces paramètres est détenue par les couches feedforward. Cependant, ces couches feedforward n’utilisent pas 100 % des neurones disponibles pour générer la sortie pour chaque entrée au moment de l’inférence, ce qui entraîne un gaspillage de ressources qui augmente la complexité, le temps de calcul et les coûts de calcul.
Au cœur du cadre UltraFastBERT, il s’agit d’une variante du cadre BERT, qui s’appuie sur ce concept et remplace les couches feedforward par des réseaux feedforward plus rapides dans son architecture, ce qui aboutit finalement au cadre UltraFastBERT utilisant seulement 0,3 % des neurones disponibles tout en fournissant des résultats comparables aux modèles BERT de taille et de processus d’entraînement similaires, en particulier pour les tâches en aval. En raison de ses mises en œuvre de conception, les couches intermédiaires dans le cadre UltraFastBERT sont exponentiellement plus rapides,
Étant donné un réseau feedforward rapide (FFF) et un réseau feedforward (FF), chacun avec n nombre de neurones, la complexité temporelle d’un passage avant dans un réseau feedforward est O(n) alors que la complexité temporelle est O(log2n) pour un réseau feedforward rapide, et la différence de complexité temporelle est principalement due au fait qu’un réseau feedforward rapide, les neurones sont organisés en un arbre binaire équilibré, et lorsque l’entrée est fournie, le réseau n’exécute qu’une branche de l’arbre de manière conditionnelle. De plus, la réalisation de l’inférence sur un réseau feedforward rapide aboutit à une multiplication matricielle conditionnelle (CMM), dans laquelle les lignes d’entrée font le point avec les colonnes de poids naturelles individuellement, et la sortie de l’opération de produit scalaire précédente détermine le poids des colonnes à poursuivre. Par conséquent, le réseau utilise tous les neurones uniquement pour quelques entrées, et aucune entrée n’a besoin de plus de quelques neurones pour être traitée par le réseau. Le produit scalaire CMM contraste avec la multiplication matricielle dense (DMM) qui calcule le produit scalaire de toutes les entrées avec toutes les colonnes de poids.
Pour résumer, UltraFastBERT est un cadre basé sur BERT qui fournit des résultats comparables aux modèles de langage BERT de pointe qui
- Utilise seulement 0,3 % des neurones disponibles pendant la phase d’inférence, et n’engage que 12 neurones sur un total de 4095 neurones pour chaque couche d’inférence.
- Fournit des performances solides comparables aux modèles BERT de pointe en mettant en œuvre des stratégies de fine-tuning sur les tâches en aval.
- Fournit une mise en œuvre native de la multiplication matricielle conditionnelle (CMM) qui constitue la base du réseau feedforward rapide, et aboutit finalement à une accélération de 78 fois des performances lorsqu’elle est comparée à la multiplication matricielle dense (DMM) native optimisée.
Réseaux de neurones feedforward
Un réseau de neurones feedforward est l’un des réseaux de neurones artificiels les plus simples qui déplace l’information uniquement dans le sens avant, des nœuds d’entrée aux nœuds de sortie via les nœuds cachés. L’un des principaux points forts d’un réseau feedforward rapide est qu’il n’y a pas de boucles ou de cycles dans de tels réseaux, et ils sont plus simples à construire par rapport aux RNN (Réseaux de neurones récurrents) et aux CNN (Réseaux de neurones convolutionnels). L’architecture d’un réseau feedforward rapide comprend trois composants, à savoir les couches d’entrée, les couches cachées et les couches de sortie, et chaque couche est composée d’unités appelées neurones, et chaque couche est interconnectée à l’autre à l’aide de poids.
Les neurones présents dans les couches d’entrée reçoivent les entrées et les transmettent à la couche suivante. Le nombre de neurones dans chaque couche d’entrée est déterminé par la dimension des données d’entrée. Ensuite, nous avons les couches cachées qui ne sont exposées ni à l’entrée ni à la sortie, et elles sont responsables des calculs nécessaires. Les neurones de chaque couche cachée prennent la somme pondérée des sorties données par la couche précédente, appliquent une fonction d’activation et transmettent le résultat à la couche suivante, et le processus se répète à plusieurs reprises. Enfin, nous avons la couche de sortie qui produit la sortie pour les entrées données. Chaque neurone de chaque couche d’un réseau feedforward rapide est interconnecté avec chaque neurone de la couche suivante, ce qui rend les réseaux de neurones feedforward rapides un réseau entièrement connecté. Les poids sont utilisés pour représenter la force de la connexion entre les neurones, et le réseau met à jour ces poids pour apprendre les modèles en mettant à jour les poids en fonction de l’erreur qui se produit dans la sortie.
Ensuite, il y a deux phases clés dans le fonctionnement d’un réseau feedforward rapide : la phase feedforward et la phase de rétropropagation.
Phase feedforward
Dans la phase feedforward, l’entrée est fournie au réseau, et elle se propage ensuite. Les couches cachées calculent la somme pondérée des entrées, et introduisent une non-linéarité dans le modèle en passant la somme des entrées à travers une fonction d’activation comme ReLu, Sigmoid et TanH. Le processus se répète à plusieurs reprises jusqu’à ce que les poids atteignent la couche de sortie, et le modèle fait une prédiction.
Phase de rétropropagation
Une fois que le modèle fait une prédiction, il calcule l’erreur entre la sortie générée et la sortie attendue. L’erreur est ensuite rétropropagée à travers le réseau, et le réseau utilise un algorithme d’optimisation de descente de gradient pour ajuster les poids dans une tentative de minimiser l’erreur.
UltraFastBERT : Architecture et fonctionnement du modèle
Le cadre UltraFastBERT est construit sur l’architecture crammedBERT, et le cadre UltraFastBERT utilise tous les composants de l’architecture crammedBERT, à l’exception de la nature des couches intermédiaires. Au lieu de cela, le cadre UltraFastBERT remplace l’encodeur de transformateur dans les réseaux feedforward contenus dans les couches intermédiaires de l’architecture crammedBERT par des réseaux feedforward rapides. Le cadre UltraFastBERT apporte les modifications suivantes aux réseaux feedforward d’origine.
- Le cadre élimine la différence entre les nœuds feuilles et les nœuds non-feuilles en utilisant la fonction d’activation GeLu à travers les nœuds et en équipant ces nœuds de poids de sortie et en supprimant les biais de sortie dans leur ensemble. Après cela, le cadre fixe la taille des feuilles à 1.
- Enfin, le cadre permet plusieurs arbres de réseaux feedforward rapides en parallèle en calculant conjointement les couches de sortie intermédiaires. Le cadre parvient à effectuer ce calcul en prenant la somme des arbres individuels, puis en présentant la somme comme la couche de sortie intermédiaire.
Ensuite, pendant l’entraînement, le cadre UltraFastBERT suit la procédure d’entraînement utilisée par l’architecture crammedBERT, qui comprend la désactivation de la suppression de dropout pendant l’entraînement préalable et l’utilisation de l’horaire d’apprentissage triangulaire à 1 cycle. Le modèle est ensuite affiné pour maximiser ses performances sur une large gamme de tâches, principalement du référentiel GLUE, pendant un total de 5 époques.
Inférence
L’inférence est une partie importante pour un réseau feedforward rapide, et ces réseaux feedforward rapides forment une grande partie des grands modèles de langage, et ils sont connus pour leur potentiel d’accélération exceptionnel. Pour comprendre ce potentiel d’accélération, prenons l’exemple de l’un des modèles de langage les plus avancés, le GPT-3, dans lequel les réseaux feedforward de chaque couche de transformateur sont composés de plus de 49 100 neurones. Si un réseau feedforward rapide (profondeur maximale de 15) pouvait remplacer le réseau feedforward d’origine, le réseau feedforward rapide introduit aurait plus de 65 000 neurones, mais il n’utiliserait que 16 de ces neurones pour l’inférence, ce qui équivaut à environ 0,03 % des neurones disponibles pour le GPT-3.
Algorithme et compatibilité
Le cadre UltraFastBERT utilise un algorithme de pseudocode récursif pour l’inférence rapide du feedforward, et l’algorithme est représenté dans l’image ci-dessous.

Ici, B représente la taille du lot, H représente la largeur des couches d’entrée et M représente les colonnes. Une autre cause majeure de préoccupation avec l’utilisation d’une approche de multiplication matricielle conditionnelle est de savoir si elle rend les réseaux feedforward rapides incompatibles avec le processus déjà en cours pour la multiplication matricielle dense et les cadres d’apprentissage automatique existants. Heureusement, l’utilisation de la CMM n’affecte pas les performances ou introduit une incompatibilité, bien qu’elle augmente la complexité de mise en cache.
Il est essentiel de noter que dans le cadre d’un réseau feedforward rapide, la multiplication matricielle dense à thread unique repose sur l’exécution des instructions MAC (multiplication et accumulation), et en conséquence, le remplacement de la DMM par l’approche CMM bénéficiera aux processeurs, car moins d’instructions MAC sont nécessaires pour calculer la sortie de la couche par élément. Par conséquent, bien que la conditionnalité soit généralement associée au branchement, le « branchement neuronal » agit comme une addition à l’offset de mémoire des pointeurs pertinents dans le cadre. Par conséquent, dans le cadre UltraFastBERT, la prédiction de branchement d’instruction n’est jamais pleinement engagée pour faciliter la conditionnalité de la CMM, et ne charge que les colonnes pertinentes de la matrice de poids individuellement. De plus, dans la mesure où le cadre effectue des produits scalaires ligne-colonne, le traitement parallèle vectoriel SIMD (single instruction, multiple data) est toujours une bonne option pour accélérer les mises en œuvre de l’inférence pour les appareils spécifiques.
UltraFastBERT : performances et résultats
Nous allons discuter des performances du cadre UltraFastBERT pour les tâches de fine-tuning ainsi que pour les tâches d’inférence pour analyser la façon dont le cadre se comporte par rapport aux modèles de langage de pointe.
Résultats de fine-tuning
Le graphique suivant montre les performances de différents modèles sur les ensembles de données de test GLUE-dev. Ici, N représente le nombre de neurones disponibles pour les cadres pendant l’entraînement, « Avg » représente le score moyen de toutes les tâches.

Comme on peut le voir clairement, le cadre UltraFastBERT, qui a été formé sur l’A6000 GPU pendant plus de 24 heures, parvient à conserver environ 96 % des performances prédictives sur les tâches en aval de GLUE par rapport au cadre BERT d’origine. De plus, on peut voir que l’augmentation de la profondeur des réseaux feedforward rapides entraîne une baisse des performances des cadres, bien que la majorité de la dégradation des performances n’apparaisse que pour la tâche CoLa. Si la tâche CoLa est temporairement ignorée, le cadre UltraFastBERT retourne un score de performance prédictive d’environ 98,6 %.
Résultats d’inférence
Dans cette section, nous allons comparer les performances de différents réseaux feedforward ou réseaux feedforward rapides sur les mises en œuvre d’inférence, et ces mises en œuvre sont réparties sur trois niveaux.
- Au niveau 1, la mise en œuvre est construite à l’aide de routines de niveau 1 BLAS, à savoir le produit scalaire vecteur et les produits scalaires vectoriels.
- Au niveau 2, les mises en œuvre utilisent des routines de niveau 2 BLAS, à savoir le produit scalaire vectoriel batché et les produits scalaires matrice-vecteur batchés.
- Au niveau 3, les mises en œuvre utilisent l’approche de multiplication matricielle matrice-matrice non batchée de niveau 3 BLAS, et bien que ce soit la mise en œuvre la plus rapide disponible pour les réseaux feedforward, de telles mises en œuvre ne sont pas disponibles pour les réseaux feedforward rapides, car la bibliothèque ne prend pas en charge la parcimonie vectorielle de la multiplication matricielle conditionnelle.
En outre, le cadre UltraFastBERT déploie des mises en œuvre GPU en utilisant soit des noyaux CUDA personnalisés, soit des noyaux PyTorch.

Le tableau ci-dessus compare les performances du cadre UltraFastBERT avec ses prédécesseurs, les cadres basés sur BERT, en termes de couches feedforward et de couches feedforward rapides, où chaque colonne contient les accélérations relatives de mise en œuvre d’inférence rapide du feedforward sur le feedforward lorsqu’ils utilisent les mêmes primitives de routines linéaires algébriques.
Cependant, il est important de noter que les accélérations signalées dans le tableau ci-dessus sont destinées à des « comparaisons équitables », c’est-à-dire que les deux mises en œuvre de feedforward rapide et de feedforward utilisent les mêmes opérations primitives de routine linéaire algébrique. De plus, aux niveaux 1 et 2, les mises en œuvre des réseaux feedforward rapides sont capables d’effectuer l’inférence 48 fois et 78 fois plus rapidement que la mise en œuvre de feedforward la plus rapide, respectivement.
Pensées finales
Dans cet article, nous avons discuté d’UltraFastBERT, une variante du cadre BERT, qui s’appuie sur le concept que les couches feedforward n’utilisent pas 100 % des neurones disponibles pour générer la sortie pour chaque entrée au moment de l’inférence, ce qui entraîne un gaspillage de ressources qui augmente la complexité, le temps de calcul et les coûts de calcul, et remplace les couches feedforward par des réseaux feedforward plus rapides dans son architecture, ce qui aboutit finalement au cadre UltraFastBERT utilisant seulement 0,3 % des neurones disponibles tout en fournissant des résultats comparables aux modèles BERT de taille et de processus d’entraînement similaires, en particulier pour les tâches en aval.
En raison de ses mises en œuvre de conception, les couches intermédiaires dans le cadre UltraFastBERT sont exponentiellement plus rapides. De plus, les performances solides fournies par le cadre UltraFastBERT constituent une preuve que les modèles de langage peuvent fournir de solides performances en engageant seulement une fraction de leurs paramètres pour les inférences individuelles, car le cadre UltraFastBERT n’utilise que 0,3 % des neurones disponibles pendant l’inférence et parvient tout de même à atteindre une accélération de 78 fois sur les temps d’inférence.








