QLoRA charge le modèle de base en 4 bits et entraîne de petits adaptateurs LoRA. Cette méthode réduit la mémoire, mais ne dispense ni d’un dataset propre ni d’une évaluation face au modèle de base.
Prérequis
Utilisez un modèle dont la licence autorise votre usage, un GPU CUDA et une version de PyTorch compatible.
~~~bash pip install -U transformers datasets peft trl accelerate bitsandbytes ~~~
Préparer les exemples
Chaque ligne doit contenir une conversation cohérente avec le format de chat du modèle :
~~~json {"messages":[{"role":"user","content":"Classe ce ticket : paiement refusé"},{"role":"assistant","content":"billing"}]} ~~~
Séparez train et test par client ou document source pour éviter les fuites. Supprimez données personnelles, doublons et exemples contradictoires.
Charger en 4 bits
~~~python import torch from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
model_id = 'votre-modele-llama-autorise' quant = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type='nf4', bnb_4bit_compute_dtype=torch.bfloat16, bnb_4bit_use_double_quant=True, )
tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, quantization_config=quant, device_map='auto', ) ~~~
Configurer LoRA
~~~python from peft import LoraConfig
lora = LoraConfig( r=16, lora_alpha=32, lora_dropout=0.05, target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj'], task_type='CAUSAL_LM', ) ~~~
Les noms de modules varient selon l’architecture. Inspectez le modèle et utilisez la documentation correspondant à sa version.
Entraîner
Avec SFTTrainer de TRL, fournissez modèle, dataset formaté, configuration PEFT et arguments d’entraînement. Commencez par peu de pas, petit batch avec accumulation, séquence courte et checkpoint fréquent. Journalisez loss, débit, mémoire et version exacte des données.
Évaluer avant de fusionner
Comparez base et adaptateur sur le jeu de test : exactitude métier, format, refus, régressions générales et latence. Une loss plus basse ne prouve pas une meilleure application. Faites aussi une revue humaine en aveugle.
Sauvegardez d’abord les adaptateurs, beaucoup plus petits que le modèle complet. Ne fusionnez les poids que si le format de déploiement l’exige.
Production
Conservez modèle de base, commit, tokenizer, template de chat, configuration LoRA, seed et dataset. Analysez les licences de tous les jeux de données. Ajoutez une model card décrivant limites et évaluations.
FAQ
QLoRA ajoute-t-il des connaissances fiables ?
Il adapte surtout le comportement et les régularités des données. Pour des connaissances changeantes et sourcées, préférez souvent un RAG.
Pourquoi le modèle répète-t-il les réponses ?
Vérifiez format de chat, token de fin, surapprentissage et répétition excessive dans le dataset.