Intelligence artificielle
LoRa, QLoRA et QA-LoRA : une adaptabilité efficace dans les grands modèles de langage grâce à la factorisation de matrice de rang faible

Les grands modèles de langage (LLM) ont créé une niche unique, offrant des capacités sans précédent pour comprendre et générer du texte similaire à celui des humains. La puissance des LLM peut être attribuée à leur taille énorme, qui compte souvent des milliards de paramètres. Même si cette échelle contribue à leurs performances, elle pose également des défis, en particulier lorsqu’il s’agit d’adapter le modèle à des tâches ou des domaines spécifiques. Les méthodes conventionnelles de gestion des LLM, telles que le fine-tuning de tous les paramètres, présentent un coût computationnel et financier élevé, ce qui constitue un obstacle important à leur adoption généralisée dans les applications du monde réel.
Dans un article précédent, nous avons exploré le fine-tuning des grands modèles de langage (LLM) pour les adapter à des exigences spécifiques. Nous avons examiné diverses méthodes de fine-tuning, telles que le fine-tuning basé sur les instructions, le fine-tuning pour une tâche unique et le fine-tuning efficace en termes de paramètres (PEFT), chacune avec sa propre approche pour optimiser les LLM pour des tâches distinctes. Au cœur de la discussion se trouvait l’architecture du transformateur, la colonne vertébrale des LLM, et les défis posés par les exigences computationnelles et de mémoire liées à la gestion d’un grand nombre de paramètres pendant le fine-tuning.
L’image ci-dessus représente l’échelle de différents grands modèles de langage, classés par leur nombre de paramètres. Notamment : PaLM, BLOOM, etc.
Cette année, il y a eu des avancées qui ont conduit à des modèles encore plus grands. Cependant, l’accord de tels modèles géants et open-source sur des systèmes standard est peu réalisable sans techniques d’optimisation spécialisées.
Entrez Low-Rank Adaptation (LoRA) introduite par Microsoft dans cet article, visant à atténuer ces défis et à rendre les LLM plus accessibles et adaptables.
L’essence de LoRA réside dans son approche de l’adaptation du modèle sans s’engager dans les complexités de la ré-formation de l’ensemble du modèle. Contrairement au fine-tuning traditionnel, où chaque paramètre est susceptible de changer, LoRA adopte une voie plus intelligente. Il fige les poids du modèle pré-entraîné et introduit des matrices de décomposition de rang dans chaque couche de l’architecture du transformateur. Cette approche réduit considérablement le nombre de paramètres formables, assurant un processus d’adaptation plus efficace.
L’évolution des stratégies d’accord des LLM
En réfléchissant au parcours de l’accord des LLM, on peut identifier plusieurs stratégies employées par les praticiens au fil des ans. Initialement, l’accent était mis sur le fine-tuning des modèles pré-entraînés, une stratégie qui implique une modification complète des paramètres du modèle pour s’adapter à la tâche spécifique en question. Cependant, à mesure que les modèles ont grandi en taille et en complexité, les exigences computationnelles de cette approche ont également augmenté.
La prochaine stratégie qui a gagné en popularité était le fine-tuning de sous-ensembles, une version plus restreinte de son prédécesseur. Ici, seul un sous-ensemble des paramètres du modèle est affiné, réduisant ainsi les coûts computationnels dans une certaine mesure. Malgré ses mérites, le fine-tuning de sous-ensembles n’a pas pu suivre le rythme de croissance de la taille des LLM.
Alors que les praticiens ont cherché à explorer des voies plus efficaces, le fine-tuning complet est apparu comme une approche rigoureuse mais gratifiante.
Introduction à LoRA
Le rang d’une matrice nous donne un aperçu des dimensions créées par ses colonnes, étant déterminé par le nombre de lignes ou de colonnes uniques qu’il possède.
- Matrice de rang plein : Son rang correspond au plus petit nombre entre ses lignes ou ses colonnes.
- Matrice de rang faible : Avec un rang nettement plus petit que ses comptes de lignes et de colonnes, elle capture moins de caractéristiques.
Maintenant, les grands modèles saisissent une compréhension large de leur domaine, comme le langage dans les modèles de langage. Mais, l’accord de ces modèles pour des tâches spécifiques nécessite souvent de mettre en évidence une petite partie de ces compréhensions. C’est là que LoRA brille. Il suggère que la matrice présentant ces ajustements de poids peut être une matrice de rang faible, capturant ainsi moins de caractéristiques.
LoRA limite intelligemment le rang de cette matrice de mise à jour en la décomposant en deux matrices de rang plus petit. Ainsi, au lieu de modifier l’ensemble de la matrice de poids, il ne modifie qu’une partie de celle-ci, rendant la tâche de fine-tuning plus efficace.
Application de LoRA aux transformateurs
LoRA aide à minimiser la charge d’entraînement dans les réseaux de neurones en se concentrant sur des matrices de poids spécifiques. Sous l’architecture du transformateur, certaines matrices de poids sont liées au mécanisme d’auto-attention, à savoir Wq, Wk, Wv et Wo, ainsi que deux autres dans le module du perceptron multi-couche (MLP).
Explication mathématique derrière LoRA
Décomposons les mathématiques derrière LoRA :
- Matrice de poids pré-entraînée W0 :
- Il commence avec une matrice de poids pré-entraînée W0 de dimensions d×k. Cela signifie que la matrice a d lignes et k colonnes.
- Décomposition de rang faible :
- Au lieu de mettre à jour directement l’ensemble de la matrice W0, ce qui peut être coûteux en termes de calcul, la méthode propose une approche de décomposition de rang faible.
- La mise à jour ΔW de W0 peut être représentée comme un produit de deux matrices : B et A.
- B a des dimensions d×r
- A a des dimensions r×k
- Le point clé ici est que le rang r est beaucoup plus petit que d et k, ce qui permet une représentation plus efficace en termes de calcul.
- Entraînement :
- Pendant le processus d’entraînement, W0 reste inchangé. C’est ce qu’on appelle « geler » les poids.
- D’un autre côté, A et B sont les paramètres formables. Cela signifie que, pendant l’entraînement, des ajustements sont apportés aux matrices A et B pour améliorer les performances du modèle.
- Multiplication et addition :
- Les deux W0 et la mise à jour ΔW (qui est le produit de B et A) sont multipliés par la même entrée (notée x).
- Les sorties de ces multiplications sont ensuite additionnées.
- Ce processus est résumé dans l’équation : h=W0x+ΔWx=W0x+BAx. Ici, h représente la sortie finale après application des mises à jour à l’entrée x.
En résumé, cette méthode permet une mise à jour plus efficace d’une grande matrice de poids en utilisant une décomposition de rang faible, ce qui peut être bénéfique en termes d’efficacité computationnelle et d’utilisation de la mémoire.
Initialisation et mise à l’échelle :
Lors de l’entraînement de modèles, la façon dont nous initialisons les paramètres peut avoir un impact significatif sur l’efficacité et l’efficience du processus d’apprentissage. Dans le contexte de notre mise à jour de la matrice de poids à l’aide de A et B :
- Initialisation des matrices A et B :
- Matrice A : Cette matrice est initialisée avec des valeurs gaussiennes aléatoires, également connues sous le nom de distribution normale. Le raisonnement derrière l’utilisation d’une initialisation gaussienne est de briser la symétrie : les neurones différents dans la même couche apprendront des caractéristiques différentes lorsqu’ils ont des poids initiaux différents.
- Matrice B : Cette matrice est initialisée avec des zéros. En faisant cela, la mise à jour ΔW=BA commence comme zéro au début de l’entraînement. Cela assure qu’il n’y a pas de changement abrupt dans le comportement du modèle au début, permettant au modèle de s’adapter progressivement à mesure que B apprend des valeurs appropriées pendant l’entraînement.
- Mise à l’échelle de la sortie de ΔW :
- Après avoir calculé la mise à jour ΔW, sa sortie est mise à l’échelle par un facteur de rα où α est une constante. En mettant à l’échelle, la grandeur des mises à jour est contrôlée.
- La mise à l’échelle est particulièrement cruciale lorsque le rang r change. Par exemple, si vous décidez d’augmenter le rang pour plus de précision (au prix de la computation), la mise à l’échelle assure que vous n’avez pas besoin d’ajuster de nombreux autres hyperparamètres dans le processus. Cela fournit un niveau de stabilité au modèle.
Impact pratique de LoRA
LoRA a démontré son potentiel pour accorder des LLM à des styles artistiques spécifiques de manière efficace par des personnes de la communauté de l’IA. Cela a été particulièrement mis en évidence dans l’adaptation d’un modèle pour imiter le style artistique de Greg Rutkowski.
Comme mis en évidence dans l’article avec GPT-3 175B comme exemple. Avoir des instances individuelles de modèles affinés avec 175B de paramètres chacun est très coûteux. Mais, avec LoRA, les paramètres formables diminuent de 10 000 fois, et l’utilisation de la mémoire GPU est réduite à un tiers.
La méthodologie LoRA ne représente pas seulement un progrès significatif pour rendre les LLM plus accessibles, mais souligne également le potentiel pour combler le fossé entre les avancées théoriques et les applications pratiques dans le domaine de l’IA. En atténuant les obstacles computationnels et en favorisant un processus d’adaptation de modèle plus efficace, LoRA est en position pour jouer un rôle pivot dans l’adoption et le déploiement plus large des LLM dans des scénarios du monde réel.
QLoRA (Quantifié)
Alors que LoRA est un changement de jeu dans la réduction des besoins de stockage, il exige toujours une carte graphique puissante pour charger le modèle pour l’entraînement. C’est là que QLoRA, ou Quantized LoRA, intervient, en combinant LoRA avec la quantification pour une approche plus intelligente.
Normalement, les paramètres de poids sont stockés dans un format 32 bits (FP32), ce qui signifie que chaque élément de la matrice occupe 32 bits d’espace. Imaginez si nous pouvions compresser les mêmes informations en seulement 8 ou même 4 bits. C’est l’idée fondamentale derrière QLoRA. La quantification fait référence au processus de mappage de valeurs continues infinies à un ensemble plus petit de valeurs discrètes finies. Dans le contexte des LLM, il s’agit du processus de conversion des poids du modèle d’un type de données à plus haute précision vers un type de données à plus basse précision.
Voici une explication plus simple de QLoRA :
- Quantification initiale : Tout d’abord, le grand modèle de langage (LLM) est quantifié à 4 bits, réduisant ainsi considérablement l’empreinte mémoire.
- Entraînement LoRA : Ensuite, l’entraînement LoRA est effectué, mais dans la précision standard de 32 bits (FP32).
Maintenant, vous vous demandez peut-être pourquoi revenir à 32 bits pour l’entraînement après avoir réduit à 4 bits ? Eh bien, pour entraîner efficacement les adaptateurs LoRA en FP32, les poids du modèle doivent également revenir à FP32. Ce va-et-vient est effectué de manière intelligente et progressive pour éviter de surcharger la mémoire de la carte graphique.
LoRA trouve son application pratique dans la bibliothèque Parameter Efficient Fine-Tuning (PEFT) de Hugging Face, simplifiant son utilisation. Pour ceux qui souhaitent utiliser QLoRA, il est accessible via une combinaison des bibliothèques bitsandbytes et PEFT. De plus, la bibliothèque Transformer Reinforcement Learning (TRL) de HuggingFace facilite le fine-tuning supervisé avec une prise en charge intégrée de LoRA. Ensemble, ces trois bibliothèques fournissent l’outil essentiel pour affiner un modèle pré-entraîné sélectionné, permettant la génération de descriptions de produits persuasives et cohérentes lorsqu’elles sont promptées avec des instructions d’attributs spécifiques.
Après le fine-tuning de QLoRA, les poids doivent revenir à un format de haute précision, ce qui peut entraîner une perte de précision et manque d’optimisation pour accélérer le processus.
Une solution proposée consiste à regrouper la matrice de poids en segments plus petits et à appliquer la quantification et l’adaptation de rang faible à chaque groupe individuellement. Une nouvelle méthode, nommée QA-LoRA, tente de combiner les avantages de la quantification et de l’adaptation de rang faible tout en gardant le processus efficace et le modèle efficace pour les tâches souhaitées.
Conclusion
Dans cet article, nous avons abordé les défis posés par leur taille de paramètre énorme. Nous avons exploré les pratiques de fine-tuning traditionnelles et leurs exigences computationnelles et financières associées. L’essence de LoRA réside dans sa capacité à modifier des modèles pré-entraînés sans les ré-entraîner entièrement, réduisant ainsi les paramètres formables et rendant le processus d’adaptation plus rentable.
Nous avons également abordé brièvement Quantized LoRA (QLoRA), un mélange de LoRA et de quantification qui réduit l’empreinte mémoire du modèle tout en conservant la précision essentielle pour l’entraînement. Avec ces techniques avancées, les praticiens sont maintenant équipés d’une bibliothèque robuste, facilitant l’adoption et le déploiement plus faciles des LLM dans une gamme de scénarios du monde réel.
Ces stratégies sont conçues pour équilibrer la rendant des LLM adaptables pour des tâches spécifiques et en assurer que les processus de fine-tuning et de déploiement ne soient pas excessivement exigeants en termes de ressources de calcul et de stockage.


















