Skip to main content
QLoRA reprend l’idée de LoRA, mais l’applique à partir d’un modèle déjà quantifié. Le bénéfice principal est clair : réduire encore la mémoire nécessaire pendant le fine-tuning. Si LoRA passe déjà sur votre machine, commencez par là. Si la mémoire devient le facteur bloquant, QLoRA est souvent l’étape suivante.

L’idée à retenir

Avec QLoRA :
  • le modèle de base reste quantifié
  • les adaptateurs LoRA sont entraînés par-dessus
  • vous gardez un coût mémoire plus bas qu’avec un modèle non quantifié
Cela en fait une option pratique pour des machines plus limitées ou pour tester plus vite plusieurs expériences.

Deux façons de démarrer

Option 1 : convertir d’abord un modèle

mlx_lm.convert \
  --hf-path microsoft/Phi-3-mini-4k-instruct \
  -q \
  --q-bits 4 \
  --mlx-path ./mlx_model
Puis lancer le fine-tuning :
mlx_lm.lora \
  --model ./mlx_model \
  --train \
  --data ./data \
  --adapter-path ./adapters \
  --iters 200

Option 2 : partir directement d’un modèle déjà quantifié

mlx_lm.lora \
  --model mlx-community/Mistral-7B-Instruct-v0.3-4bit \
  --train \
  --data ./data \
  --adapter-path ./adapters \
  --iters 200
Si le modèle existe déjà dans mlx-community, cette deuxième option est souvent la plus simple.

Quand QLoRA vaut le coup

QLoRA est utile si :
  • un modèle non quantifié est trop lourd pour votre machine
  • vous voulez tester plusieurs expériences à moindre coût
  • vous privilégiez le pragmatisme à la pureté du pipeline
QLoRA n’est pas obligatoire si LoRA simple fonctionne déjà bien et que votre budget mémoire est confortable.

Réglages de départ raisonnables

Voici une base prudente :
mlx_lm.lora \
  --model mlx-community/Phi-3.5-mini-instruct-4bit \
  --train \
  --data ./data \
  --adapter-path ./adapters \
  --iters 150 \
  --batch-size 1 \
  --lora-layers 4
Ensuite, augmentez progressivement :
  • le nombre d’itérations
  • le nombre de couches LoRA
  • la taille du modèle

Après l’entraînement

Testez d’abord les adaptateurs :
mlx_lm.generate \
  --model mlx-community/Phi-3.5-mini-instruct-4bit \
  --adapter-path ./adapters \
  --prompt "Réponds de façon très concise."
Puis fusionnez si vous avez besoin d’un seul dossier modèle :
mlx_lm.fuse \
  --model mlx-community/Phi-3.5-mini-instruct-4bit \
  --adapter-path ./adapters \
  --save-path ./my-qlora-model

Ce qu’il faut surveiller

  • les erreurs mémoire
  • la stabilité de la validation
  • la différence réelle entre le modèle de base et le modèle adapté
Si le comportement ne change presque pas, le problème vient souvent plus du dataset que de la méthode.