Skip to main content
LoRA est souvent la première technique à essayer quand vous voulez adapter un LLM localement. L’idée est simple : vous n’entraînez pas tout le modèle. Vous ajoutez un petit nombre de paramètres entraînables qui modifient son comportement. Pour un développeur moyen, c’est l’approche la plus réaliste pour commencer un fine-tuning sur Mac.

Pourquoi LoRA est utile

LoRA permet de :
  • réduire la mémoire nécessaire
  • raccourcir le temps d’entraînement
  • garder le modèle de base intact
  • partager seulement les adaptateurs si besoin
Concrètement, vous conservez le modèle d’origine et vous ajoutez des adaptateurs que vous pouvez charger ou fusionner plus tard.

Étape 1 : préparer l’environnement

python -m venv .venv
source .venv/bin/activate
pip install -U mlx-lm pandas huggingface_hub "huggingface_hub[cli]"

Étape 2 : préparer le dataset

Créez au minimum :
data/
├── train.jsonl
└── valid.jsonl
Si vous partez de zéro, lisez d’abord Préparer vos données.

Étape 3 : lancer un premier entraînement

mlx_lm.lora \
  --model mlx-community/Phi-3.5-mini-instruct-4bit \
  --train \
  --data ./data \
  --adapter-path ./adapters \
  --iters 200 \
  --batch-size 1 \
  --lora-layers 8
Ce premier run sert à valider le pipeline, pas à chercher la configuration parfaite.
Commencez avec un modèle compact et un petit nombre d’itérations. Vous apprendrez plus vite qu’en lançant tout de suite un entraînement long sur un gros modèle.

Les paramètres qui comptent vraiment au début

ParamètreÀ retenir
--modelChoisissez un modèle que votre machine peut charger facilement
--dataDossier contenant train.jsonl et idéalement valid.jsonl
--itersCommencez bas, puis augmentez si les résultats le justifient
--batch-sizeRéduisez-le si la mémoire pose problème
--lora-layersPlus il est élevé, plus le coût monte
--adapter-pathDossier où seront écrits les adaptateurs

Étape 4 : tester les adaptateurs

Une fois l’entraînement terminé, testez le modèle avec les adaptateurs :
mlx_lm.generate \
  --model mlx-community/Phi-3.5-mini-instruct-4bit \
  --adapter-path ./adapters \
  --prompt "Explique LoRA à un développeur Swift."
Comparez ensuite avec le modèle de base. La bonne question n’est pas “est-ce que la sortie est impressionnante ?”, mais plutôt “est-ce que le comportement s’est rapproché de mon besoin ?”

Étape 5 : fusionner si nécessaire

Si vous voulez obtenir un artefact unique plutôt qu’un modèle + des adaptateurs séparés :
mlx_lm.fuse \
  --model mlx-community/Phi-3.5-mini-instruct-4bit \
  --adapter-path ./adapters \
  --save-path ./my-finetuned-model
Vous pouvez ensuite utiliser ce dossier comme un modèle local classique.

Comment lire les résultats pendant l’entraînement

Surveillez surtout :
  • la train loss
  • la val loss
  • la stabilité générale de l’entraînement
Si la perte d’entraînement baisse mais que la validation se dégrade, vous êtes probablement en train de suradapter le modèle à vos données.

Bonnes pratiques simples

  • commencez avec un modèle petit ou moyen
  • testez votre dataset avant tout entraînement long
  • gardez une validation séparée
  • comparez toujours le modèle de base et le modèle adapté
  • ne changez pas dix paramètres à la fois

Quand passer à QLoRA

Passez à QLoRA si :
  • la mémoire devient votre contrainte principale
  • vous voulez fine-tuner directement un modèle quantifié
  • vous devez rester sur une machine plus limitée