top of page
< Back

LoRA et QLoRA

LoRA (Low-Rank Adaptation) permet d'adapter un LLM sans réentraîner tous ses paramètres : on gèle le modèle et on n'entraîne que de petites matrices ajoutées à côté. QLoRA pousse l'idée plus loin en compressant le modèle de base pour réduire encore la mémoire nécessaire.

Le problème du fine-tuning complet

Un LLM compte des milliards de paramètres. Les réentraîner tous demande plusieurs cartes graphiques haut de gamme, beaucoup de temps, et produit à chaque fois une copie complète du modèle à stocker. Pour un modèle de 65 milliards de paramètres, l'entraînement complet dépasse 780 Go de mémoire GPU, car les gradients et l'état de l'optimiseur s'ajoutent aux poids. Et en modifiant tous les poids, on risque de faire perdre au modèle des capacités acquises : c'est l'oubli catastrophique.


L'idée de LoRA

Les poids d'origine restent figés. À côté de certaines matrices du modèle, on ajoute deux petites matrices A et B dont le produit a la taille de la matrice d'origine, mais un rang très faible, par exemple 8 ou 16. Seules A et B sont entraînées. Pour une matrice de 4 096 × 4 096, soit environ 16,8 millions de poids, deux matrices de rang 8 n'en ajoutent qu'environ 65 000 : moins de 0,5 %.

Conséquences : l'entraînement demande beaucoup moins de mémoire, et l'adaptateur obtenu est très léger par rapport au modèle. On peut en garder plusieurs, un par tâche ou par client, et les charger sur le même modèle de base.


QLoRA

QLoRA ajoute une étape : le modèle de base, toujours gelé, est chargé en 4 bits (voir la quantification), ce qui divise sa taille en mémoire par environ quatre par rapport à 16 bits. Les adaptateurs LoRA sont entraînés par-dessus. On peut ainsi affiner des modèles de plusieurs milliards de paramètres sur une seule carte graphique : le même modèle de 65 milliards de paramètres passe sous 48 Go de mémoire, sans perte notable de performance selon l'article de 2023 qui a introduit la méthode.


En pratique

  • En Python, ces techniques s'appuient sur des bibliothèques comme transformers et peft de Hugging Face.
  • La qualité des données compte plus que leur quantité : quelques centaines à quelques milliers d'exemples propres valent mieux qu'un gros volume bruité.
  • Gardez un jeu de test à part pour vérifier que le modèle progresse sur votre tâche sans se dégrader ailleurs.
bottom of page