Tensoria
Parlez-nous de votre projet : 07 82 80 51 40
Outils & Modèles Par

LoRA et QLoRA : le guide du fine-tuning de LLM

LoRA QLoRA fine-tuning LLM - guide technique pour adapter un grand modèle de langage sur GPU unique

LoRA et QLoRA ont rendu le fine-tuning de LLM accessible sur un seul GPU grand public. Un modèle 8B tient en moins de 10 Go de VRAM en QLoRA — une RTX 3090 ou un Google Colab T4 suffisent. Ce guide explique comment ces techniques fonctionnent, quels hyperparamètres régler, quels outils utiliser, et surtout les pièges qui font rater 80 % des premières tentatives.

Ce guide est le référentiel technique LoRA / QLoRA : le "comment" pour un lead technique ou un développeur qui veut comprendre les mécanismes avant de coder. Pour décider si le fine-tuning est adapté à votre cas d'usage PME, lisez d'abord notre guide de décision fine-tuning LLM en PME — on y couvre le "quand" et le "pourquoi".

Comment LoRA fonctionne : les matrices de rang faible

Un LLM comme Llama 3 8B contient environ 8 milliards de paramètres répartis dans des centaines de couches. Un full fine-tuning modifie l'intégralité de ces paramètres. C'est précis, mais ça exige plusieurs GPU A100 pendant des heures et des dizaines de Go de VRAM rien que pour stocker les gradients.

L'intuition de LoRA (Low-Rank Adaptation, introduit par Hu et al., arXiv 2106.09685) : les modifications apportées par le fine-tuning à une couche de poids W peuvent souvent être approximées par une matrice de rang faible. Plutôt que de mettre à jour W directement, LoRA apprend deux petites matrices A et B telles que ΔW ≈ BA. Si W est de dimension d×k, A est d×r et B est r×k, avec r (le rank) typiquement entre 4 et 64. Pour r=8 et d=k=4096, on passe de 16 millions de paramètres à entraîner à seulement 65 000.

En pratique :

  • Les poids originaux W sont gelés — ils ne changent pas.
  • Seules les matrices A et B sont entraînées.
  • Cela représente 0,1 à 1 % des paramètres totaux selon la configuration.
  • À l'inférence, on peut fusionner W + BA en une seule matrice sans overhead.

Résultat : 10 à 50 fois moins de mémoire GPU pour le stockage des gradients, des temps d'entraînement comparables à l'échelle de quelques heures sur un seul GPU, et des performances souvent très proches du full fine-tuning sur des tâches ciblées.

QLoRA : quantification 4 bits + adapters LoRA

LoRA résout le problème des gradients. Il reste un autre goulot d'étranglement : le modèle de base lui-même doit tenir en VRAM pendant l'entraînement. Llama 3 8B en fp16, c'est ~16 Go. En bf16, pareil. Avec les activations et les optimiseurs, vous dépassez facilement 40 Go.

QLoRA (Dettmers et al., arXiv 2305.14314) ajoute une étape : le modèle de base est chargé en 4 bits NF4 (NormalFloat 4, une quantification dédiée aux poids de LLM) via la librairie bitsandbytes. Les adapters LoRA, eux, restent en bf16 ou fp32. On dé-quantifie à la volée uniquement lors du forward pass, layer par layer.

Concrètement, un Llama 3 8B en QLoRA occupe environ 5 à 7 Go de VRAM pour le modèle, plus 2 à 3 Go pour les adapters, activations et optimiseur. Total : moins de 10 Go. Un Google Colab T4 16 Go ou une RTX 3090 24 Go suffisent.

La contrepartie : un entraînement 15 à 25 % plus lent que LoRA sans quantification, à cause des dé-quantifications successives. Et sur des modèles très petits (1–3B), le gain mémoire est moins significatif — LoRA classique peut suffire.

LoRA vs QLoRA vs full fine-tuning : le tableau récapitulatif

Méthode VRAM (modèle 8B) Vitesse Qualité Coût GPU cloud
Full fine-tuning > 80 Go (multi-GPU) Référence Maximale Élevé (plusieurs A100)
LoRA (bf16) ~20–30 Go −20–30 % Très proche full FT Modéré (1× A100 40 Go)
QLoRA (4 bits) ~8–10 Go −40–50 % Légèrement sous LoRA Faible (RTX 3090 / T4)

Pour la très grande majorité des cas d'usage PME (classification, extraction, adaptation de style), la différence de qualité entre QLoRA et full fine-tuning est négligeable sur des datasets ciblés de moins de 10 000 exemples. Le gain économique, lui, est réel.

Les hyperparamètres qui comptent vraiment

LoRA introduit ses propres hyperparamètres en plus des hyperparamètres classiques d'entraînement. Voici ceux qui ont le plus d'impact.

Rank (r) et alpha

Le rank r contrôle la capacité des matrices d'adaptation : plus r est élevé, plus les matrices sont expressives, mais plus elles consomment de mémoire et risquent l'overfitting. Pour débuter :

  • Tâches simples (adaptation de style, format de sortie) : r=4 ou r=8
  • Tâches moyennement complexes (classification multi-classes, extraction d'entités) : r=16
  • Tâches complexes avec beaucoup de données : r=32 à r=64

L'alpha est un facteur d'échelle : les deltas LoRA sont multipliés par alpha/r. La pratique courante est de fixer alpha = 2 × r (donc alpha=16 pour r=8). En pratique, modifier alpha a souvent moins d'effet que modifier le learning rate.

Target modules

LoRA n'est pas appliqué à toutes les couches. Par défaut, on cible les couches d'attention (query, key, value, output projection). Inclure aussi les couches MLP (gate_proj, up_proj, down_proj) améliore souvent la qualité sur des tâches de génération complexe, au prix de 40 à 60 % de VRAM supplémentaire.

Avec PEFT, PEFT détecte automatiquement les bon noms de modules selon l'architecture. Avec Unsloth, c'est configuré automatiquement et optimisé par modèle.

Learning rate

LoRA supporte des learning rates plus élevés que le full fine-tuning parce que le nombre de paramètres entraînés est bien plus petit. Point de départ classique : 2e-4 avec un scheduler cosine et un warmup de 5–10 % des steps. Un learning rate trop élevé (> 1e-3) produit souvent un modèle qui répète les réponses ou perd ses capacités de base — c'est du catastrophic forgetting partiel.

Chat template : le piège n°1

Chaque modèle moderne a son propre chat template : Llama utilise <|start_header_id|>, Mistral utilise [INST], Gemma a le sien. Formater votre dataset en ignorant ce template produit un modèle entraîné sur du texte mal structuré — il apprend mal, répond de façon incohérente, et les résultats sont décevants même avec un bon dataset.

Soyons honnêtes : c'est la cause n°1 des premiers fine-tunings ratés qu'on voit. La correction prend deux lignes de code (tokenizer.apply_chat_template()), mais encore faut-il savoir qu'elle est nécessaire.

Les outils : Unsloth, PEFT, TRL, bitsandbytes, Axolotl

L'écosystème s'est standardisé autour de cinq outils complémentaires. Les connaître — et savoir lequel utiliser selon le contexte — fait gagner beaucoup de temps.

PEFT (HuggingFace)

PEFT est la librairie de référence HuggingFace pour le fine-tuning efficace. Elle implémente LoRA, QLoRA, IA3, Prefix Tuning, et d'autres méthodes. S'intègre nativement avec Transformers et Datasets. C'est le socle sur lequel s'appuient la plupart des autres outils. À utiliser directement quand vous voulez le contrôle maximal sur votre pipeline.

TRL / SFTTrainer

TRL (Transformer Reinforcement Learning) de HuggingFace fournit le SFTTrainer (Supervised Fine-Tuning Trainer), qui encapsule les boilerplates d'entraînement LoRA. Il gère automatiquement le chat template si vous lui passez les bons paramètres (dataset_text_field ou formatting_func). C'est l'option la plus rapide pour un premier fine-tuning supervisé.

Unsloth

Unsloth est la librairie la plus optimisée pour l'entraînement LoRA/QLoRA en termes de vitesse et de mémoire. Elle réérit les kernels d'attention en Triton pour réduire la VRAM de 30 à 40 % et accélérer l'entraînement de 2× par rapport à PEFT standard. Supporte les modèles Llama, Mistral, Gemma, Phi, Qwen. Excellent choix pour les runs sur GPU consumer (RTX série, T4, L4). La limite : moins flexible pour les architectures exotiques ou les modifications avancées du pipeline.

bitsandbytes

La librairie derrière la quantification NF4 de QLoRA. Elle implémente les opérations matricielles en 8 bits et 4 bits avec des kernels CUDA optimisés. Pas à utiliser directement en général — PEFT et Unsloth l'intègrent via le paramètre load_in_4bit=True ou la config BitsAndBytesConfig.

Axolotl

Axolotl est un framework de configuration YAML qui orchestre PEFT + TRL pour les fine-tunings complexes. Très utilisé pour les runs reproductibles en équipe ou les pipelines multi-datasets. Courbe d'apprentissage plus haute que TRL direct, mais idéal pour standardiser des entraînements récurrents.

VRAM réelle par taille de modèle

Les chiffres ci-dessous sont des estimations constatées en pratique avec QLoRA (NF4) + Unsloth, batch size 2, séquences de 2048 tokens. Les marges varient selon les target modules et la longueur des séquences.

Modèle VRAM QLoRA (estimée) GPU compatible Vitesse relative
3B (Phi-3 Mini, Gemma 3B) ~4–5 Go RTX 3060 12 Go, T4 Très rapide
7–8B (Mistral 7B, Llama 3 8B) ~8–10 Go RTX 3090, A10, T4 16 Go Rapide
13B (Llama 2 13B) ~14–16 Go RTX 4090 24 Go, A10 Modéré
70B (Llama 3 70B) ~40–45 Go 2× A100 40 Go, A100 80 Go Lent

Pour la majorité des cas d'usage PME, les modèles 7–8B offrent le meilleur rapport qualité/coût d'entraînement. Un run de fine-tuning sur Mistral 7B avec 2 000 exemples prend environ 30 à 90 minutes sur une RTX 3090 — moins de 5 € de cloud GPU à la demande.

Pour aller plus loin sur le déploiement après fine-tuning (quantification GGUF, infrastructure GPU, coûts d'inférence), consultez notre guide de déploiement LLM en production et notre guide sur la quantification GGUF et INT4.

Pièges fréquents et comment les éviter

Voici ce qui fait rater la plupart des premières tentatives de fine-tuning LoRA/QLoRA. C'est un constat terrain, pas une liste théorique.

1. Ignorer le chat template natif

Déjà mentionné, mais ça mérite d'être répété. Chaque modèle attend ses tokens de conversation dans un format précis. Formater votre dataset en texte brut sans respecter ce template, c'est entraîner le modèle sur une entrée qu'il n'a jamais vue pendant son pré-entraînement. Le résultat : un modèle confus, qui hallucine ou répète les tokens du template dans ses réponses.

Correction : utilisez tokenizer.apply_chat_template(messages, tokenize=False) pour formater chaque exemple avant l'entraînement. Avec Unsloth, le paramètre chat_template gère ça automatiquement selon le modèle détecté.

2. Rank trop élevé par rapport au volume de données

Un rank r=64 avec 300 exemples d'entraînement, c'est une invitation à l'overfitting. Le modèle mémorise les exemples au lieu d'apprendre des patterns généralisables. Symptôme classique : les métriques sur le training set sont excellentes, celles sur le validation set stagnent ou se dégradent.

Règle simple : commencez bas (r=8 ou r=16), évaluez sur un validation set dédié, montez si les métriques le justifient.

3. Pas de dataset de validation séparé

Sans dataset de validation (un échantillon du dataset que le modèle ne voit jamais pendant l'entraînement), il est impossible de détecter l'overfitting et de choisir le bon checkpoint. C'est pourtant ce qu'on voit sur la moitié des premiers runs. Réservez 10 à 15 % de vos données pour la validation.

4. Fusionner les adapters trop tôt

La fusion (model.merge_and_unload()) produit un modèle standard plus rapide à l'inférence, mais elle est irréversible. Si vous fusionnez avant d'avoir validé les performances en production, vous perdez la possibilité de revenir au modèle de base ou de changer d'adapter. En pratique : gardez les adapters séparés pendant la phase d'évaluation, fusionnez uniquement pour le déploiement final validé.

5. Négliger la préparation du dataset

Un dataset bruité ou mal annoté produit un modèle instable, quelle que soit la qualité de l'entraînement. Des exemples contradictoires (même entrée, sorties différentes) apprennent au modèle à être incohérent. Des exemples trop courts ou trop longs par rapport à la tâche cible biaiser les distributions. Lisez notre guide sur la préparation de dataset pour le fine-tuning avant de vous lancer.

Quel pipeline choisir selon votre contexte

Il n'y a pas de réponse universelle. Voici notre grille de décision pratique selon le contexte :

Situation Stack recommandée
Premier fine-tuning, GPU consumer ou Colab Unsloth + SFTTrainer
Contrôle maximal sur le pipeline, équipe ML PEFT + TRL + bitsandbytes
Runs reproductibles, configuration YAML, CI/CD Axolotl
Modèle 70B, infrastructure multi-GPU PEFT + DeepSpeed ZeRO-3 ou FSDP
Fine-tuning Mistral spécifiquement Mistral Forge (managé) ou Unsloth local

Pour une comparaison approfondie de ces librairies (benchmarks vitesse, VRAM, facilité d'usage, cas limites), consultez notre article dédié : les meilleures librairies de fine-tuning LLM. Et si vous vous demandez spécifiquement comment fine-tuner Mistral sur vos données métier, ce guide Mistral couvre le processus de A à Z.

Pour les projets où la maîtrise de l'infrastructure et du processus est critique, notre service d'expert en fine-tuning LLM et NLP accompagne le cadrage, la préparation du dataset, l'entraînement et le déploiement.

Pour aller plus loin

Vous hésitez encore ?

Discutons de votre projet de fine-tuning. 30 minutes pour valider l'approche technique et le dimensionnement.

Réserver un échange

En résumé : LoRA et QLoRA en cinq points

LoRA entraîne des matrices de rang faible (0,1–1 % des paramètres) sur les couches d'attention, sans toucher les poids originaux. QLoRA ajoute une quantification 4 bits du modèle de base, ce qui fait tenir un 8B en moins de 10 Go de VRAM.

Les hyperparamètres qui comptent : le rank r (commencez à r=8, montez si les données le justifient), l'alpha (typiquement 2×r), les target modules (attention key/value au minimum), et le learning rate (2e-4 est un bon point de départ).

Les outils : PEFT et TRL pour le contrôle, Unsloth pour la performance sur GPU consumer, Axolotl pour les pipelines reproductibles.

Le piège le plus coûteux reste le chat template : ignorez-le et vos résultats seront mauvais quel que soit le reste. C'est deux lignes de code, vérifiez-les en premier.

Et avant tout — si vous n'avez pas encore déterminé si le fine-tuning est la bonne approche pour votre cas, commencez par là. Un fine-tuning LoRA parfait sur le mauvais problème reste un investissement raté.

Passer à l'action

Vous voulez appliquer ça dans votre entreprise ?

En quelques minutes, identifiez les cas d'usage IA les plus rentables pour votre métier. Sans engagement, et sans jargon.

Demander un devis

Articles liés

Outils & Modèles

Top SLM 2026 : les meilleurs petits modèles de langage

Comparatif des meilleurs SLM 2026 : Ministral, Phi-4-mini, Qwen2.5, Gemma 3, SmolLM2, Llama 3.2. Tailles, licences, VRAM, cas d'usage et RGPD pour les PME.

Lire l'article
Outils & Modèles

SLM vs LLM : quel modèle d'IA choisir en PME

SLM vs LLM : comparatif décisionnel complet. Coûts, latence, VRAM, souveraineté, cas d'usage. Quand le petit modèle gagne — et quand le LLM reste indispensable.

Lire l'article
Outils & Modèles

SLM : le guide des Small Language Models en entreprise

Small language model entreprise : définition, panorama des SLM (Phi-4, Mistral, Qwen, Gemma), comparatif coût/VRAM vs LLM, quand un SLM suffit et comment le spécialiser avec LoRA.

Lire l'article
Outils & Modèles

SLM on-device : l'IA générative en local et en edge

SLM on-device : faire tourner un modèle IA en local sur poste ou edge sans cloud. Outils (Ollama, llama.cpp), modèles 1B–8B, matériel requis, limites.

Lire l'article
Outils & Modèles

Router SLM/LLM : l'architecture hybride qui réduit les coûts

Architecture hybride SLM/LLM : comment router chaque requête vers le bon modèle pour diviser vos coûts d'inférence par 5 à 10. Outils, tableau €, pièges à éviter.

Lire l'article
Outils & Modèles

Quantization de LLM : faire tourner un modèle sur petit GPU

Quantization LLM : comment passer d'un modèle 7B de 14 Go en fp16 à 4 Go en int4 avec GGUF, GPTQ ou AWQ, sans sacrifier la qualité. Guide pratique 2026.

Lire l'article
Anas Rabhi, ingénieur IA et data scientist, fondateur de Tensoria
Anas Rabhi Ingénieur IA, fondateur de Tensoria ianas.fr

Je suis ingénieur IA et data scientist, fondateur de Tensoria. Depuis plus de 6 ans, j'accompagne les entreprises dans l'exploitation concrète de l'IA pour leur métier : assistants internes basés sur RAG, agents IA en production, automatisations sur mesure, traitement intelligent de documents. J'interviens du cadrage initial à la mise en production, sur stacks LLM modernes (Mistral, Claude, GPT) et infrastructures souveraines quand la confidentialité l'exige.