LoRA évite de mettre à jour tous les poids d’un modèle. La base reste gelée et de petites matrices de faible rang apprennent une correction. QLoRA charge en plus la base sous une forme quantifiée pendant l’entraînement. Ces méthodes réduisent fortement la mémoire, sans supprimer le besoin de bonnes données et d’une évaluation rigoureuse.
Comment fonctionne LoRA
Les adaptateurs sont insérés dans certains modules, souvent les projections linéaires de l’attention. Le rang contrôle leur capacité et le nombre de paramètres entraînables ; alpha ajuste l’échelle ; le dropout peut régulariser. PEFT permet de cibler des modules précis. Un mauvais ciblage peut produire peu d’apprentissage ou des artefacts.
Ce que QLoRA ajoute
La base quantifiée occupe moins de mémoire, tandis que les adaptateurs sont entraînés avec une précision adaptée. Une configuration de style QLoRA cible souvent toutes les couches linéaires. La quantification rend l’entraînement accessible sur moins de GPU, mais ajoute contraintes de compatibilité, précision numérique et parfois temps de calcul.
Choisir et mesurer
Commencez avec une base assez petite pour la tâche, un rang modeste et une expérience courte. Comparez à la base non adaptée sur un test séparé. Suivez perte, qualité métier, mémoire maximale, temps, régressions de sécurité et oubli de capacités générales. Une faible perte d’entraînement ne prouve pas une meilleure application.
Déployer les adaptateurs
Vous pouvez charger base et adaptateur séparément ou fusionner certains adaptateurs pour l’inférence. Versionnez ensemble base, révision, tokenizer, configuration PEFT et dataset. Plusieurs adaptateurs sur une même base économisent du stockage, mais exigent un routage et un cycle de validation clairs.
FAQ
QLoRA signifie-t-il modèle final quantifié ?
Pas nécessairement. Il décrit surtout l’entraînement d’adaptateurs sur une base quantifiée ; le format de déploiement reste un choix.
LoRA égale-t-il un fine-tuning complet ?
Non. Il apprend une correction contrainte, parfois suffisante et parfois moins adaptée.
Peut-on combiner plusieurs adaptateurs ?
Oui dans certains moteurs, mais leurs interactions doivent être testées.
Configuration QLoRA avec PEFT
~~~python import torch from transformers import AutoModelForCausalLM, BitsAndBytesConfig from peft import LoraConfig, prepare_model_for_kbit_training
quant = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.bfloat16, ) model = AutoModelForCausalLM.from_pretrained( model_id, quantization_config=quant, device_map="auto", ) model = prepare_model_for_kbit_training(model)
peft_config = LoraConfig( r=16, lora_alpha=32, lora_dropout=0.05, target_modules="all-linear", task_type="CAUSAL_LM", ) ~~~
Mesurez la mémoire réellement disponible et gardez une marge pour activations et optimizer. Comparez l’adapter à la baseline sur un jeu de test jamais vu. Sauvegardez modèle de base, révision, tokenizer, template de chat et configuration PEFT : l’adapter seul ne suffit pas pour reproduire le résultat.