Imaginez vouloir adapter un immense modèle de langage à une nouvelle tâche sans devoir réécrire ses milliards de paramètres : c'est exactement ce que permet LoRA (Low-Rank Adaptation). Plutôt que de modifier les poids d'origine, on gèle le modèle pré-entraîné et on lui greffe de petites matrices additionnelles, légères et entraînables. On affine ainsi seulement une infime fraction des paramètres.
L'idée mathématique
L'intuition centrale : la mise à jour des poids lors d'un fine-tuning possède un rang intrinsèque faible. On peut donc l'approximer par le produit de deux petites matrices. Si $W_0$ est une matrice de poids gelée, la version adaptée s'écrit :
$$W = W_0 + \Delta W = W_0 + B A$$
où $A \in \mathbb{R}^{r \times d}$ et $B \in \mathbb{R}^{d \times r}$, avec un rang $r \ll d$. Seules $A$ et $B$ sont entraînées. Pour $d = 4096$ et $r = 8$, le nombre de paramètres à apprendre chute de façon spectaculaire.
Pourquoi c'est décisif
- Mémoire réduite : on stocke quelques mégaoctets d'adaptateurs au lieu de dupliquer tout le modèle.
- Modularité : un même modèle de base peut héberger plusieurs adaptateurs, échangeables selon la tâche.
- Aucune latence ajoutée : une fois entraînées, $B$ et $A$ peuvent être fusionnées dans $W_0$.
| Approche | Paramètres entraînés | Coût mémoire |
|---|---|---|
| Fine-tuning complet | 100 % | Élevé |
| LoRA | souvent < 1 % | Faible |
Cette technique a popularisé l'idée d'un fine-tuning accessible, et sa variante QLoRA la combine avec la quantification pour adapter de très grands modèles sur un seul GPU grand public.
LoRA transforme l'adaptation des modèles géants d'un luxe industriel en une opération à la portée de presque tous.