> ## Documentation Index
> Fetch the complete documentation index at: https://docsmlx.otterly.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# QLoRA — fine-tuning quantifié

> Adapter un modèle quantifié avec moins de mémoire grâce à QLoRA

**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

```bash theme={null}
mlx_lm.convert \
  --hf-path microsoft/Phi-3-mini-4k-instruct \
  -q \
  --q-bits 4 \
  --mlx-path ./mlx_model
```

Puis lancer le fine-tuning :

```bash theme={null}
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é

```bash theme={null}
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 :

```bash theme={null}
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 :

```bash theme={null}
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 :

```bash theme={null}
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.

***

<CardGroup cols={2}>
  <Card title="Guide LoRA" icon="dumbbell" href="/mlx/fine-tuning/lora-guide">
    Revoir le flux de base.
  </Card>

  <Card title="Préparer vos données" icon="database" href="/mlx/fine-tuning/dataset-preparation">
    Améliorer ce qui compte le plus pour la qualité finale.
  </Card>
</CardGroup>
