Comprendre LoRA et QLoRA

LoRA (Low-Rank Adaptation) est une technique qui fine-tune uniquement un petit sous-ensemble de paramètres supplémentaires plutôt que l'intégralité du modèle, réduisant drastiquement la mémoire et le temps d'entraînement. Au lieu de modifier les poids originaux, LoRA ajoute des matrices de faible rang en parallèle de certaines couches d'attention. QLoRA combine LoRA avec la quantisation 4-bit du modèle de base, permettant de fine-tuner un modèle 7B sur seulement 6-8 Go de VRAM. Ces adaptateurs LoRA sont de petits fichiers (quelques centaines de Mo) qui se combinent avec le modèle de base pour produire le modèle fine-tuné.

Préparer son dataset d'entraînement

La qualité du dataset est le facteur déterminant du résultat : 1000 exemples de haute qualité valent mieux que 100 000 exemples médiocres. Pour un assistant domain-specific, constituez des paires instruction/réponse représentatives de votre usage. Le format Alpaca (instruction, input, output) ou le format ShareGPT (conversations multi-tours) sont les plus courants. Assurez-vous que vos données sont propres, diversifiées et représentatives : évitez la répétition excessive d'un même type d'exemple. Un dataset de 500 à 5000 exemples bien formatés est généralement suffisant pour un fine-tuning d'instruction.

Choisir le bon outil d'entraînement

Unsloth est devenu la référence pour le fine-tuning local : il accélère l'entraînement de 2 à 5 fois par rapport à HuggingFace Transformers standard tout en réduisant la consommation mémoire. Axolotl est une alternative plus configurable avec support de nombreux formats de données. Pour les débutants, Google Colab avec un GPU T4 gratuit est parfait pour expérimenter avec Unsloth avant d'investir dans du matériel. En local, une RTX 3090 ou RTX 4090 (24 Go) permet de fine-tuner confortablement des modèles 7B et 13B.

Paramètres clés de l'entraînement

Le learning rate est le paramètre le plus sensible : 2e-4 est un bon point de départ pour LoRA, à diviser par 2-3 si le loss oscille trop. Le rang LoRA (r) contrôle la capacité d'adaptation : r=8 pour des ajustements fins, r=64 pour des changements importants de comportement. Le nombre d'epochs doit être limité (1-3) pour éviter l'overfitting : surveillez le loss de validation. Le batch size effectif (batch_size × gradient_accumulation_steps) devrait être de 32-128 pour une convergence stable. Sauvegardez des checkpoints réguliers pour pouvoir revenir en arrière.

Merger et utiliser le LoRA adapter

Après l'entraînement, l'adapter LoRA peut être utilisé directement avec le modèle de base (chargement séparé) ou fusionné (merged) en un seul modèle. La fusion produit un modèle standard qui peut être quantisé en GGUF pour une utilisation avec llama.cpp ou Ollama. La conversion GGUF se fait avec le script `convert_hf_to_gguf.py` de llama.cpp, suivi de `llama-quantize` pour la quantisation. Le modèle fine-tuné fusionné peut ensuite être importé dans Ollama via un Modelfile pour une utilisation locale fluide.

Évaluer et itérer

L'évaluation d'un modèle fine-tuné se fait d'abord qualitativement : testez sur des exemples représentatifs et comparez avec le modèle de base. Mesurez le taux de réponses 'dans le style attendu' sur un ensemble de test séparé. Les benchmarks académiques peuvent dégrader légèrement après fine-tuning (catastrophic forgetting partiel) : c'est acceptable si votre tâche cible s'améliore. Si les résultats sont décevants, augmentez la quantité ou la qualité des données plutôt que de modifier les hyperparamètres en premier. Documentez chaque expérience avec les paramètres utilisés pour pouvoir reproduire les succès.

Étapes pratiques

  1. Préparer le dataset

    Créez ou convertissez votre dataset au format Alpaca JSON.

    {step.code}
  2. Installer Unsloth

    Installez Unsloth et ses dépendances dans un environnement virtuel.

    {step.code}
  3. Configurer et lancer l'entraînement

    Chargez le modèle en 4-bit et configurez LoRA avec Unsloth.

    {step.code}
  4. Sauvegarder et merger le LoRA

    Fusionnez l'adapter LoRA avec le modèle de base.

    {step.code}
  5. Importer dans Ollama

    Créez un Modelfile pour importer votre modèle fine-tuné dans Ollama.

    {step.code}