Dans le paysage technologique actuel, qui évolue rapidement, les grands modèles d'IA sont à l'origine de percées dans divers domaines. Cependant, l'adaptation de ces modèles à des tâches ou à des ensembles de données spécifiques peut s'avérer une tâche exigeante en termes de calcul et de ressources. C'est là qu'intervient LoRA (Low Rank Adaptation), une technique de réglage fin révolutionnaire et efficace qui exploite la puissance de ces modèles avancés pour des tâches et des ensembles de données personnalisés, sans solliciter les ressources ni engendrer de coûts excessifs.
La LoRA a pris d'assaut la communauté de l'IA au cours des derniers mois (Fig 1). Dans cet article de blog, nous allons nous pencher sur les raisons de cette ascension fulgurante. Nous explorerons les principes qui sous-tendent la LoRA, son efficacité dans divers domaines et l'impact qu'elle a sur la communauté open-source.
Que vous soyez un aficionado de l'IA, un ingénieur cherchant à capitaliser sur les grands modèles pour votre défi commercial spécifique, rejoignez-nous dans ce voyage captivant pour découvrir comment LoRA transforme l'étape de mise au point dans le processus d'analyse des modèles de base (FMOps). FMOps (Foundation Model Ops) pour les grands modèles d'IA.
Avant de plonger dans LoRA, passons en revue quelques concepts fondamentaux de l'algèbre linéaire. Si vous êtes à l'aise avec les bases de l'algèbre linéaire (en particulier le rang des matrices), n'hésitez pas à passer outre les mathématiques ci-dessous.
Le rang d'une matrice est la dimension de l'espace vectoriel généré par ses colonnes, qui est donné par le nombre de colonnes linéairement indépendantes. linéairement indépendantes linéairement indépendantes dans une matrice donnée. On peut prouver que le nombre de colonnes indépendantes (appelé rang de colonne) est toujours égal au nombre de lignes indépendantes (appelé rang de ligne). Ainsi, pour une matrice A avec m lignes et n colonnes (représentées par Aₘₙ),
En fonction de son rang, une matrice peut être classée en deux catégories.
Matrice A Aₘₙ est appelée matrice de plein rang si rank(A) = min(m, n). La matrice ci-dessous est un exemple de matrice de plein rang.
The opposite of a full rank matrix is rank deficient i.e. rank(A) < min(m, n). The rank-deficient matrix shown below has a rank of 1, as the columns (or rows) of the matrix are not linearly independent of one another.
Low-Rank Matrix: A rank-deficient matrix Aₘₙ is called a low-rank matrix if its rank is significantly lower (no fixed threshold) than the minimum number of rows and columns. Mathematically, rank(A) << min(m, n).
1. Comme indiqué précédemment, le rang d'une matrice est limité par le minimum de son nombre de lignes et de colonnes.
2. Matrices données A et B avec rang(A) = m et rang(A) = nalors
Une compréhension intuitive du rang des matrices : Dans le cadre de ce blog, le rang d'une matrice peut être perçu comme les dimensions de l'espace des caractéristiques qu'elle représente. Dans ce contexte, une matrice de faible rang d'une certaine taille encapsule moins de caractéristiques (ou un espace de caractéristiques de dimension inférieure) qu'une matrice de rang complet de même dimension.
Décomposition des rangs ou factorisation d'une matrice Aₘₙ est la factorisation de A de la forme A = CₘᵣFᵣₙ où rang(A) = r. On peut prouver que toute matrice (finie) a une décomposition de rang(preuve). Des techniques telles que la SVD (Singular Value Decomposition) peuvent être utilisées pour construire une telle décomposition.
Nous avons ainsi couvert les concepts de base nécessaires. Plongeons dans LoRA et explorons la manière dont il exploite ces principes dans le contexte de l'affinage de grands modèles d'IA.
LoRA est une technique efficace de réglage fin proposée par les chercheurs de Microsoft pour adapter les grands modèles à des tâches et à des ensembles de données spécifiques. Bien que l'article utilise GPT-3 comme cas de test et se concentre sur les modèles de langage et les tâches de NLP, cette technique est tout à fait généralisable, comme nous le verrons ci-dessous. Elle peut être appliquée à divers modèles dans de multiples contextes.
De nombreux travaux antérieurs ont montré que les grands modèles sur-paramétrés résident dans une dimension intrinsèque faible. L'idée principale de LoRA est que le changement de poids pendant l'adaptation du modèle a également un rang/dimension intrinsèque faible. Concrètement, si Wₙₖ représente les poids d'une seule couche et ΔWₙₖ représente le changement de poids pendant l'adaptation du modèle, les auteurs proposent que ΔWₙₖ est une matrice de faible rang, c'est-à-dire
Les grands modèles sont entraînés à capturer la représentation générale de leur domaine (langage pour les LLM, audio + langage pour des modèles comme Whisper, et vision pour les modèles de génération d'images). Ces modèles capturent une variété de caractéristiques qui leur permettent d'être utilisés pour diverses tâches avec une précision raisonnable. Cependant, lors de l'adaptation d'un tel modèle à une tâche ou à un ensemble de données spécifiques, seules quelques caractéristiques doivent être mises en évidence ou réapprises. Cela signifie que la matrice de mise à jour (ΔW) peut être une matrice de faible rang.
The technique constrains the rank of the update matrix ΔW using its rank decomposition. It represents ΔWₙₖ as the product of 2 low-rank matrices Bₙᵣ and Aᵣₖ where r << min(n, k). This implies that the forward pass of the layer, originally Wx, is modified to Wx + BAx (as shown in the figure below). A random Gaussian initialization is used for A and B is initially to 0, so BA=0 at the start of training. The update BA is additionally scaled with a factor α/r.
Toutefois, l'inconvénient est qu'une fois que les poids sont fusionnés pour supprimer le temps d'inférence supplémentaire, la facilité de changement de tâche disparaît. En outre, il n'est pas simple de regrouper les entrées de différentes tâches avec des A et des B différents en une seule passe avant. On gagne un peu et on perd un peu, n'est-ce pas ?
Après avoir discuté du fonctionnement de la technique et de ses avantages éventuels, examinons maintenant son efficacité. Dans cet article, les auteurs évaluent les performances de LoRA (en utilisant RobBert, GPT2 et GPT3) par rapport à un réglage fin complet et à d'autres techniques efficaces en termes de paramètres et de calcul. Ils constatent que LoRA surpasse généralement les autres techniques efficaces de réglage fin par une marge significative tout en offrant des performances comparables ou supérieures à celles du réglage fin complet. Pour plus de détails sur leur analyse, les lecteurs intéressés peuvent se référer à l'article.
Afin d'explorer plus avant son efficacité, nous avons mené des expériences supplémentaires dans divers domaines et tâches. Dans les sous-sections suivantes, nous examinons les résultats de ces expériences, qui mettent en évidence la polyvalence et la robustesse de la méthode LoRA.
Whisper est un système ASR qui a été entraîné sur un large corpus de données. Il s'agit d'une famille de modèles, chacun de taille variable. Le plus petit modèle (Whisper-Tiny) contient 39 millions de paramètres tandis que le plus grand modèle (Whisper-Large-v2 ) contient 1,5 milliard de paramètres. Le plus grand modèle peut effectuer une reconnaissance automatique de la parole (ASR) multilingue. Cependant, ses performances peuvent être améliorées pour une langue particulière en l'affinant avec des données de cette langue.
Dans cette expérience, nous affinons le modèle en utilisant le sous-ensemble de langue néerlandaise du Common Voice Dataset. Nous affinons le grand modèle (avec et sans LoRA) normalement et dans un régime à faible volume de données. Le réglage fin du modèle en utilisant LoRA avec r=32 (où r est le rang de la matrice de mise à jour) réduit le nombre de paramètres réglables à 15,7 millions, ce qui représente 1 % des paramètres du modèle entier.
Nous affinons Whisper-Large-v2 avec et sans LoRA sur une heure d'audio provenant du sous-ensemble néerlandais de Common Voice. Les résultats de l'évaluation sont présentés dans le tableau ci-dessous.
We see that the performance of the model finetuned using LoRA is similar to the performance of the fully finetuned model. However, as mentioned previously, LoRA allows us to accomplish this in a much shorter time by tuning a minuscule number of parameters (for size, the LoRA checkpoint is only 60MB). Using LoRA (and 8bit optimization), the training took ~4 hours and cost < $5on an Nvidia T4 on Google Cloud.
Dans ce cas, nous avons affiné le même modèle avec l'ensemble du sous-ensemble néerlandais de Common Voice (~40 heures). Les résultats de l'évaluation sont présentés dans le tableau ci-dessous.
We see that the performance of the large model finetuned with LoRA (for 5000 steps) is comparable to the performance of the fully finetuned large and medium models. However, using LoRA (and 8bit optimization), the finetuning took ~10 hours and cost < $10 on an Nvidia T4 on Google Cloud.
Nous avons exploré le monde de Whisper et ses performances lorsqu'il est ajusté avec des ensembles de données de différentes tailles dans un autre article de blog. Vous pouvez le trouver ici!
LLaMA est un grand modèle de langage publié par les chercheurs de Meta. Comme Whisper, il s'agit d'une famille de modèles de taille variable (7B étant le plus petit et 65B le plus grand).
Nous avons affiné le modèle à 7B paramètres sur une tâche de résumé de dialogue en utilisant l'ensemble de données Samsum et nous avons utilisé ROUGE pour évaluer le modèle affiné. Pour tester l'efficacité de LoRA à des rangs faibles, le rang de la matrice de mise à jour a été limité à 4, c'est-à-dire r=4. Cela signifie que le nombre de paramètres ajustables était de 2 millions, ce qui représente seulement 0,03 % du nombre total de paramètres du modèle.
Le tableau ci-dessous montre qu'il surpasse un modèle Flan-T5-Base entièrement optimisé (250 millions de paramètres). De plus, l'utilisation d'un rang bas et d'une optimisation sur 8 bits nous permet d'affiner un modèle aussi important sur un seul Nvidia-T4 !
Note: Il ne s'agit pas d'une comparaison équitable entre les modèles. LLaMA-7B est un modèle de fondation beaucoup plus grand que Flan-T5-Base et est donc probablement capable d'une meilleure performance de zéro-coup pour de nombreuses tâches. Cependant, cette comparaison vise à démontrer que pour les grands modèles de base, l'utilisation d'un rang très bas (et donc peu de temps de calcul et de mise au point) suffit.
Les résultats de l'article et de nos expériences démontrent l'efficacité de LoRA. LoRA fournit une méthode efficace en termes de calcul et de paramètres pour affiner les modèles de fondations sans baisse significative des performances, ce qui permet d'économiser du temps et de l'argent !
Voyons maintenant comment LoRA est utilisé dans la communauté des logiciels libres. Avec l'explosion récente des modèles d'IA génératifs et de grandes fondations, la communauté des logiciels libres a accueilli LoRA à bras ouverts en raison de sa capacité à permettre aux praticiens disposant de peu de ressources d'adapter les grands modèles. Ici, LoRA est principalement utilisé à deux fins : Instruct-tuning LLMs et Finetuning Diffusion models.
Avec le lancement de ChatGPT et de techniques telles que Self-Instruct, la communauté OSS a régulièrement travaillé sur l'adaptation de grands modèles de langage pour qu'ils puissent suivre des instructions.
L'idée de base est simple. Créer un ensemble de données d'instructions et de réponses (en utilisant la curation manuelle ou ChatGPT) et utiliser LoRA pour affiner un grand modèle de langage pré-entraîné à l'aide de cet ensemble de données. Cette méthode produit des modèles qui sont raisonnablement aptes à suivre des instructions et à répondre à des questions comme des humains. Les lecteurs intéressés peuvent consulter des modèles tels que Alpaca-LoRA et Vicuna.
Avant le lancement de ChatGPT et d'autres LLM comme LLaMA, LoRA était principalement utilisé pour régler la diffusion stable afin d'adapter le style des images générées. Les poids LoRA peuvent ensuite être utilisés et partagés de manière prête à l'emploi, en les remplaçant lorsqu'un style de génération d'images différent est nécessaire.
Comme nous l'avons vu précédemment, le principal attrait de cette technique réside dans l'efficacité de ses paramètres et de ses calculs. Un témoignage de la popularité de cette méthode dans la communauté de l'IA générative est l'existence de la bibliothèque Lora où les gens peuvent partager leurs fichiers Lora!
En résumé : LoRA a deux applications principales. La première est d'affiner les grands modèles avec peu de calcul, et la seconde est d'adapter les grands modèles dans un régime de faibles données. Les résultats de l'article, nos expériences et l'adoption généralisée par la communauté de l'IA open-source démontrent sa valeur dans l'environnement actuel de l'IA basée sur les modèles de base.
Il démocratise l'IA, en permettant aux individus et aux organisations d'utiliser et d'ajuster les modèles de grandes fondations sans se ruiner, en veillant à ce que la capacité d'adapter ces modèles ne soit pas seulement entre les mains d'un petit nombre !