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

mm
LoRA : Low-Rank Adaptation of Large Language Models

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 peut atteindre 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 les modèles à des tâches ou des domaines spécifiques. Les méthodes traditionnelles de gestion des LLM, telles que la fine-tuning de tous les paramètres, présentent un coût computationnel et financier important, ce qui constitue un obstacle significatif à leur adoption généralisée dans les applications du monde réel.

Dans un article précédent, nous avons examiné la fine-tuning des grands modèles de langage (LLM) pour les adapter à des exigences spécifiques. Nous avons exploré diverses méthodes de fine-tuning, telles que la fine-tuning basée sur les instructions, la fine-tuning pour une tâche unique et la 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 des transformateurs, la colonne vertébrale des LLM, et les défis posés par les exigences computationnelles et de mémoire pour gérer un grand nombre de paramètres pendant la fine-tuning.

Paramètres dans les LLM

https://huggingface.co/blog/hf-bitsandbytes-integration

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, la fine-tuning de tels modèles géants et open source sur des systèmes standard est irréalisable sans techniques d’optimisation spécialisées.

Voici où entre en jeu la méthode d’adaptation de rang faible (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 se plonger dans les complexités de la ré-formation de l’ensemble du modèle. Contrairement à la fine-tuning traditionnelle, où chaque paramètre est susceptible de changer, LoRA adopte une approche plus intelligente. Elle fige les poids du modèle pré-entraîné et introduit des matrices de décomposition de rang dans chaque couche de l’architecture des transformateurs. Cette approche réduit considérablement le nombre de paramètres entraînables, garantissant un processus d’adaptation plus efficace.

L’évolution des stratégies de fine-tuning des LLM

En regardant le parcours du fine-tuning des LLM, on peut identifier plusieurs stratégies employées par les praticiens au fil des ans. Initialement, l’accent a été mis sur la 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 répondre à une tâche spécifique. 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é a été la fine-tuning de sous-ensembles, une version plus restreinte de sa prédécesseure. Ici, seul un sous-ensemble des paramètres du modèle est fine-tuné, réduisant ainsi les coûts computationnels dans une certaine mesure. Malgré ses mérites, la 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, la fine-tuning complète est apparue 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, déterminé par le nombre de lignes ou de colonnes uniques qu’elle possède.

  • Matrice de rang plein : son rang correspond au plus petit nombre entre ses lignes et ses colonnes.
  • Matrice de rang faible : avec un rang nettement inférieur à la fois à son nombre de lignes et de colonnes, elle capture moins de caractéristiques.

Maintenant, les grands modèles ont une compréhension large de leur domaine, comme le langage dans les modèles de langage. Mais, la fine-tuning 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. Elle suggère que la matrice qui montre 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 plus petites. Ainsi, au lieu de modifier l’ensemble de la matrice de poids, elle ne modifie qu’une partie de celle-ci, rendant le processus 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. Dans l’architecture des transformateurs, certaines matrices de poids sont liées au mécanisme d’auto-attention, notamment Wq, Wk, Wv et Wo, ainsi que deux autres dans le module du perceptron multi-couche (MLP).

Architecture des transformateurs

Architecture des transformateurs

 

Têtes d'attention des transformateurs

Têtes d’attention des transformateurs

Explication mathématique derrière LoRA

Décomposons les mathématiques derrière LoRA :

  1. Matrice de poids pré-entraînée :
    • Elle commence avec une matrice de poids pré-entraînée de dimensions . Cela signifie que la matrice a lignes et colonnes.
  2. Décomposition de rang faible :
    • Au lieu de modifier directement l’ensemble de la matrice , qui peut être coûteuse en termes de calcul, la méthode propose une approche de décomposition de rang faible.
    • L’update à peut être représentée comme le produit de deux matrices : et .
      • a des dimensions
      • a des dimensions
    • Le point clé ici est que le rang est nettement inférieur à la fois à et , ce qui permet une représentation plus efficace en termes de calcul.
  3. Entraînement :
    • Pendant le processus d’entraînement, reste inchangé. C’est ce qu’on appelle « geler » les poids.
    • D’un autre côté, et sont les paramètres entraînables. Cela signifie que, pendant l’entraînement, des ajustements sont apportés aux matrices et pour améliorer les performances du modèle.
  4. Multiplication et addition :
    • Les deux et la mise à jour (qui est le produit de et ) sont multipliés par la même entrée (notée ).
    • Les sorties de ces multiplications sont ensuite additionnées.
    • Ce processus est résumé dans l’équation : Ici, représente la sortie finale après application des mises à jour à l’entrée .

En résumé, cette méthode permet une mise à jour plus efficace d’une grande matrice de poids en représentant les mises à jour à l’aide d’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.

LoRA

LoRA

Initialisation et mise à l’échelle :

Lors de l’entraînement des modèles, la façon dont on initialise 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 et :

  1. Initialisation des matrices et :
    • Matrice : 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 : Cette matrice est initialisée avec des zéros. En faisant cela, la mise à jour commence comme zéro au début de l’entraînement. Cela garantit qu’il n’y a pas de changement abrupt dans le comportement du modèle au début, permettant ainsi au modèle de s’adapter progressivement à mesure que apprend des valeurs appropriées pendant l’entraînement.
  2. Mise à l’échelle de la sortie de :
    • Après avoir calculé la mise à jour , sa sortie est mise à l’échelle par un facteur de 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 change. Par exemple, si vous décidez d’augmenter le rang pour plus de précision (au détriment de la puissance de calcul), la mise à l’échelle garantit 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 adapter les 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 souligné dans l’article avec GPT-3 175B comme exemple. Avoir des instances individuelles de modèles fine-tunés avec 175B de paramètres chacun est très coûteux. Mais, avec LoRA, les paramètres entraînables diminuent de 10 000 fois, et l’utilisation de la mémoire GPU est réduite à un tiers.

Impact de LoRA sur le fine-tuning de GPT-3

Impact de LoRA sur le fine-tuning de GPT-3

La méthodologie LoRA ne représente pas seulement un grand pas en avant pour rendre les LLM plus accessibles, mais souligne également le potentiel de 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 plus efficace, LoRA est en mesure de jouer un rôle crucial 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, elle nécessite toujours une carte graphique puissante pour charger le modèle en vue de l’entraînement. C’est là que QLoRA, ou LoRA quantifiée, intervient, en combinant LoRA avec la quantification pour une approche plus intelligente.

Quantification

Quantification

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 de base derrière QLoRA. La quantification fait référence au processus de mappage des valeurs continues et infinies à un ensemble plus petit de valeurs discrètes et finies. Dans le contexte des LLM, cela fait référence au processus de conversion des poids du modèle d’un type de données de haute précision vers un type de données de plus faible précision.

Quantification dans les LLM

Quantification dans les LLM

Voici une explication plus simple de QLoRA :

  1. 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.
  2. 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 de fine-tuning efficace en termes de paramètres (PEFT) de Hugging Face, simplifiant ainsi 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’ensemble d’outils essentiel pour le fine-tuning d’un modèle pré-entraîné sélectionné, permettant ainsi la génération de descriptions de produits persuasives et cohérentes lorsqu’elles sont promptées avec des instructions d’attributs spécifiques.

Post fine-tuning à partir 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ètres énorme. Nous avons plongé dans 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 les modèles pré-entraînés sans les ré-entraîner entièrement, réduisant ainsi les paramètres entraînables et rendant le processus d’adaptation plus rentable.

Nous avons également brièvement abordé la LoRA quantifiée (QLoRA), qui combine LoRA et la quantification pour réduire 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 ainsi l’adoption et le déploiement plus large des LLM dans une gamme de scénarios du monde réel.

Matrice

Matrice

Ces stratégies sont conçues pour équilibrer la capacité à rendre les LLM adaptables à des tâches spécifiques et à garantir que les processus de fine-tuning et de déploiement ne soient pas excessivement exigeants en termes de calcul et de ressources de stockage.

J'ai passé les cinq dernières années à plonger dans le monde fascinant de l'apprentissage automatique et du deep learning. Ma passion et mon expertise m'ont conduit à contribuer à plus de 50 projets de génie logiciel divers, avec un focus particulier sur l'IA/ML. Ma curiosité continue m'a également attiré vers le traitement automatique des langues, un domaine que je suis impatient d'explorer plus en profondeur.