blackdark
IA appliquéefine-tuningLLMLoRAQLoRApersonnalité IAPython

Fine-tuning de LLM pour créer des personnalités d'IA : tutoriel en Python (2026)

Guide pratique du fine-tuning de LLM pour donner une voix propre à un modèle : ce que c'est et quand ça vaut le coup face au RAG, le processus pas à pas avec LoRA/QLoRA, le format du dataset, le code en Python avec Unsloth, le coût réel et les erreurs classiques.

Par BlackdarkMis à jour le 10 min de lecture

Tu demandes à ChatGPT d'écrire « avec ta voix » et il te sort trois paragraphes génériques. Tu lui colles un prompt de 800 mots avec des exemples et des règles, et dès la quatrième réponse il en a oublié la moitié. Le problème, ce n'est pas que le modèle soit mauvais. C'est que tu demandes à la forme quelque chose qui se règle dans les poids.

C'est ça, le fine-tuning : arrêter d'expliquer au modèle comment parler à chaque prompt et le lui apprendre une bonne fois, en l'entraînant avec des exemples de ton style jusqu'à ce que la voix lui vienne par défaut. C'est l'outil qu'il faut pour construire une personnalité d'IA propre. Et en 2026, tu n'as plus besoin d'un cluster ni d'un master : ça tient sur un seul GPU. On va monter ça sans fumée.

Attention

Avant d'aller plus loin : si tu n'as pas pressé jusqu'au bout le prompt engineering et le RAG, il est presque certain que tu n'as pas encore besoin de fine-tuning. Le bon ordre, c'est prompting → RAG → fine-tuning. Ce guide est pour le moment où les deux premiers ne suffisent plus, pas pour les sauter.

Qu'est-ce que le fine-tuning (et quand OUI et quand NON)

Un modèle de base comme Llama ou Qwen arrive déjà pré-entraîné avec la moitié d'internet. Le fine-tuning ne part pas de zéro : il prend ce modèle et continue de l'entraîner avec tes exemples pour l'orienter vers un comportement précis. Ce n'est pas de la magie, c'est de l'ajustement de poids.

L'idée clé que presque personne ne te dit clairement : le fine-tuning est pour la FORME, pas pour les données. Il sert à changer comment ça sonne, comment la sortie est structurée et quel vocabulaire est utilisé. Il ne sert pas à lui injecter une information qui change chaque semaine — ça se glisse dans une faille de connaissance que le fine-tuning couvre mal.

Les modèles de pointe de 2026 continuent d'échouer sur trois choses que le fine-tuning règle à la racine :

  • Schéma de sortie exact : qu'il renvoie toujours le même JSON, le même format, sans dévier.
  • Vocabulaire de domaine étroit : le jargon de ton secteur, tes termes, tes conventions.
  • Voix de marque : ce ton précis qui, à coups de prompts, se dilue de réponse en réponse.

Ce troisième point est justement le cœur de la création d'une personnalité d'IA. Une voix cohérente ne tient pas à force de prompts de plus en plus longs ; elle s'entraîne une fois et elle reste.

Quand ça vaut le coup :

  • Tu as une tâche stable avec une sortie prévisible (un ton, un format).
  • Tu as testé le prompting et le RAG et le modèle a plafonné.
  • Tu as (ou peux réunir) plus de 500 bons exemples cohérents.

Quand NON :

  • Tu as besoin que le modèle connaisse des faits précis et à jour → c'est le RAG.
  • Ton cas change tout le temps → réentraîner chaque semaine ne passe pas à l'échelle.
  • Tu n'as pas encore testé à fond un bon prompt → commence par là, c'est gratuit et réversible.

Le processus de fine-tuning, d'un coup d'œil

Avant le code, la carte. Voici les six étapes que tu parcourras toujours, quel que soit l'outil :

Pipeline de fine-tuning d'une personnalité d'IA

  1. Rassembler les données

    Tu réunis de vrais exemples de ta voix : paires question-réponse, messages, textes à toi. C'est ici que le résultat se gagne ou se perd.

  2. Formater le dataset

    Tu convertis ces exemples en JSONL avec une structure de chat (system / user / assistant). C'est le format standard que comprennent tous les outils.

  3. Choisir la méthode (LoRA)

    Tu décides comment entraîner. Pour presque tout le monde : QLoRA, qui quantise le modèle et entraîne un adaptateur léger sur un seul GPU.

  4. Entraîner

    Tu lances l'entraînement sur un modèle de base (Llama, Qwen). Tu touches moins de 1 % des poids ; ça dure en général de quelques minutes à quelques heures.

  5. Évaluer

    Tu testes le modèle avec des cas qui N'ÉTAIENT PAS dans le dataset. Ça sonne comme toi ? Ça garde le format ? Sinon, tu ajustes les données ou les hyperparamètres.

  6. Déployer

    Tu fusionnes l'adaptateur, tu exportes en GGUF et tu le fais tourner en local avec Ollama, ou tu le sers via une API. Ta personnalité vit désormais dans les poids.

Remarque que l'entraînement n'est qu'une étape sur six, et même pas la plus importante. Les étapes 1 et 2 — les données — décident 80 % du résultat. On le répétera jusqu'à l'ennui.

Pas à pas avec du code (Python + Unsloth)

On va utiliser Unsloth, qui en 2026 est la voie la plus rapide pour entraîner sur un seul GPU : ses kernels optimisés réduisent l'usage mémoire jusqu'à 74 % et accélèrent l'entraînement de 2 à 5 fois par rapport à Hugging Face Transformers brut. Ça marche sur le GPU gratuit de Google Colab. Si tu préfères des pipelines pilotés par config en YAML sans écrire de Python, Axolotl fait la même chose avec un fichier de configuration ; et en dessous, les deux s'appuient sur l'écosystème Hugging Face.

1. Installer l'environnement

Installation · Unsloth + dépendances
pip install unsloth
pip install --no-deps trl peft accelerate bitsandbytes

2. Charger le modèle de base en 4 bits (QLoRA)

On charge un petit modèle de base quantisé en 4 bits pour qu'il tienne dans peu de VRAM, et on lui branche les adaptateurs LoRA.

Charger le modèle + adaptateurs LoRA
from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
  model_name = "unsloth/Meta-Llama-3.1-8B-Instruct",
  max_seq_length = 2048,
  load_in_4bit = True,   # QLoRA : quantise le base en 4 bits
)

model = FastLanguageModel.get_peft_model(
  model,
  r = 16,                # rang de l'adaptateur LoRA (8-64 est courant)
  lora_alpha = 16,
  target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
                    "gate_proj", "up_proj", "down_proj"],
)

3. Entraîner

Avec le dataset déjà formaté (on le voit dans la section suivante), l'entraînement est standard. Peu d'époques : avec des données propres, 1 à 3 passes suffisent et sur-entraîner est un risque bien réel.

Entraînement SFT
from trl import SFTTrainer
from transformers import TrainingArguments

trainer = SFTTrainer(
  model = model,
  tokenizer = tokenizer,
  train_dataset = dataset,         # ton JSONL formaté
  dataset_text_field = "text",
  max_seq_length = 2048,
  args = TrainingArguments(
      per_device_train_batch_size = 2,
      gradient_accumulation_steps = 4,
      num_train_epochs = 2,
      learning_rate = 2e-4,
      output_dir = "outputs",
  ),
)

trainer.train()

4. Inférer et exporter

Tu testes la personnalité tout juste entraînée et, si elle convainc, tu l'exportes en GGUF pour la faire tourner en local avec Ollama.

Tester + exporter en GGUF
FastLanguageModel.for_inference(model)
inputs = tokenizer(["Que penses-tu du hype autour de l'IA ?"], return_tensors="pt").to("cuda")
print(tokenizer.decode(model.generate(**inputs, max_new_tokens=128)[0]))

# Exporter pour Ollama / llama.cpp
model.save_pretrained_gguf("ma-personnalite", tokenizer, quantization_method="q4_k_m")

Les données : le dataset qui définit ta personnalité

C'est ici que se trouve le vrai travail. Le format standard de 2026 pour le fine-tuning supervisé (SFT) est le JSONL avec un tableau messages façon ChatML : chaque ligne est une conversation. Ça marche directement dans Unsloth, Axolotl et TRL sans conversions bizarres.

Format du dataset · une ligne par exemple (JSONL)
{"messages": [
{"role": "system", "content": "Tu es Blackdark : direct, pratique, anti-fumée. Aucun remplissage."},
{"role": "user", "content": "Ça vaut le coup de payer ChatGPT Plus ?"},
{"role": "assistant", "content": "Ça dépend de combien tu l'utilises vraiment. Si tu ouvres l'app deux fois par semaine, non. Si tu t'en sers tous les jours pour bosser, les 20 par mois sont amortis dès le premier jour. Ce qui ne vaut rien, c'est de payer au cas où."}
]}

Les règles qui comptent vraiment dans le dataset :

  • Cohérence de voix : chaque réponse assistant doit sonner comme la personnalité que tu vises. Un seul exemple hors ton salit l'apprentissage.
  • Le system fixe le personnage : utilise-le à l'identique dans tous les exemples. C'est l'ancre de l'identité.
  • Qualité > quantité : pour le ton et le style, 500 à 2 000 exemples soignés rendent plus que 50 000 bruités. En dessous d'environ 100 lignes, n'essaie même pas.
  • Variété des situations : couvre différents types de question pour que la voix tienne au-delà des exemples vus.

Astuce

Astuce pour réunir des données vite sans inventer des milliers de lignes à la main : prends tes vrais textes (posts, réponses, messages) et utilise-les comme réponses assistant, en générant les questions user avec un gros modèle. Ensuite, tu relis à la main chaque paire. La relecture humaine n'est pas optionnelle : c'est là que se forge la personnalité.

Coût et outils, sans surprises

La bonne nouvelle : pour un modèle de 7-8 B avec QLoRA, le calcul est quasi gratuit. Il tient dans environ 8 Go de VRAM, tu entraînes donc sur le GPU gratuit de Colab ou tu loues un GPU dans le cloud pour quelques heures. La vraie dépense n'est pas dans l'entraînement, elle est dans la préparation du dataset : c'est là que passe le temps.

Les trois outils qui dominent en 2026 :

  • Unsloth — l'option si tu vises un seul GPU et que la vitesse t'importe. Kernels optimisés, moins de mémoire, plus rapide. Celui qu'on a utilisé ici.
  • Axolotl — des pipelines définis dans un YAML. Tu choisis le modèle, le dataset, la méthode et les hyperparamètres dans un fichier et tu lances d'une seule commande, sans écrire de Python. Idéal pour des processus reproductibles.
  • Hugging Face (Transformers + PEFT + TRL) — la base sur laquelle les deux précédents s'appuient. Plus de contrôle, plus de friction.

Sur la méthode : LoRA n'entraîne que 0,1 à 1 % des paramètres avec une qualité proche d'un réentraînement complet du modèle. QLoRA ajoute une quantisation en 4 bits et atteint autour de 90 % de la qualité d'un fine-tuning complet, à un coût matériel bien moindre. Pour créer une personnalité à la maison, QLoRA est le point idéal.

Erreurs classiques qui ruinent le résultat

  • Vouloir injecter des données par le fine-tuning. L'erreur n° 1. Si tu as besoin que le modèle connaisse des faits à jour, c'est du RAG, pas du fine-tuning. Mélanger les deux concepts mène à des modèles qui hallucinent avec aplomb.
  • Dataset sale ou incohérent. Exemples hors ton, formats inconstants, réponses médiocres. Le modèle apprend exactement ce que tu lui donnes, défauts inclus.
  • Sur-entraîner. Trop d'époques et le modèle mémorise le dataset au lieu de généraliser ta voix. Commence par 1 à 3 passes et mesure.
  • Ne pas évaluer avec des cas neufs. Si tu ne testes qu'avec des exemples présents dans l'entraînement, tu te mens à toi-même. Évalue avec des questions que le modèle n'a jamais vues.
  • Sauter le prompting et le RAG. Si tu n'as pas épuisé ce qui est bon marché et réversible, tu résous par le fine-tuning quelque chose qu'un bon prompt réglait en cinq minutes.

Avantages

  • Tu veux une VOIX ou un style cohérent que les prompts n'arrivent pas à tenir.
  • Tu as besoin d'un format de sortie exact et reproductible (toujours le même schéma).
  • Tu travailles avec un vocabulaire de domaine que le modèle de base ne maîtrise pas.
  • Le comportement est stable et ne change pas chaque semaine.
  • Tu veux baisser la latence et le coût par requête face à des prompts géants.

Inconvénients

  • Tu as besoin que le modèle connaisse des faits précis et à jour → utilise le RAG.
  • Tu n'as pas encore testé un bon prompt système → commence par le prompting, c'est gratuit.
  • Ton cas change constamment → réentraîner ne passe pas à l'échelle, plutôt le RAG.
  • Tu n'as pas et ne peux pas réunir des centaines de bons exemples → il manque des données.
  • Tu ne le veux que pour un test ponctuel → le montage ne se rentabilise pas.

Pour qui est le fine-tuning ?

Ce n'est pas pour tout le monde, et c'est très bien ainsi.

Ça t'intéresse si : tu construis un produit ou un agent avec une personnalité de marque propre et tu as besoin que la voix soit identique à chaque réponse ; tu as un format de sortie que le modèle de base ne respecte pas du premier coup ; tu travailles dans un domaine au jargon propre ; ou tu veux réduire le coût par requête face à d'énormes prompts que tu répètes mille fois par jour.

Ça ne t'intéresse pas si : ton problème est de connaissance et non de forme (là, c'est le RAG qui commande) ; tu n'as pas encore pressé un bon prompt système ; ou ton cas est si ponctuel que monter le pipeline coûte plus que le bénéfice.

La question honnête n'est pas « est-ce que je fais du fine-tuning ? », mais « ce qui me fait défaut, c'est la forme ou les données ? ». Si c'est la forme — le ton, la voix, le format —, le fine-tuning est le bon outil et, avec QLoRA et un dataset propre, il est à la portée d'un seul GPU. Si ce sont les données, épargne-toi l'entraînement et monte un RAG. Et si tu ne le sais pas encore, reviens au prompt : la réponse était presque toujours là.

FAQ

C'est continuer d'entraîner un modèle déjà pré-entraîné avec tes propres exemples pour qu'il adopte un comportement précis : un ton, un format de sortie ou un vocabulaire de domaine. Il ne part pas de zéro ; il ajuste les poids d'un modèle de base comme Llama ou Qwen pour l'orienter vers ton cas. En 2026, l'usage courant n'est pas de réentraîner tout le modèle, mais d'ajouter un adaptateur léger (LoRA) par-dessus.

Règle pratique : fine-tuning pour la forme (style, voix, format), RAG pour les données (informations qui changent ou qui sont les tiennes). Si tu veux que le modèle SONNE d'une certaine manière, fine-tuning. Si tu veux qu'il SACHE des choses précises et à jour, RAG. Pour une personnalité d'IA dotée de connaissances propres, on combine normalement les deux : fine-tuning pour la voix, RAG pour les faits.

Moins que tu ne crois, mais de qualité. Pour fixer le ton et le style, entre 500 et 2 000 exemples soigneusement choisis rendent souvent plus que 50 000 bruités. La qualité prime sur la quantité : des exemples cohérents, dans ta vraie voix, avec le format que tu veux en sortie. En dessous d'environ 100 lignes, le modèle bouge à peine.

LoRA insère de petites matrices (des adaptateurs) dans le modèle et n'entraîne que 0,1 à 1 % des paramètres, avec une qualité proche d'un réentraînement complet mais à une fraction du coût GPU. QLoRA va plus loin : il quantise le modèle de base en 4 bits pour qu'il tienne dans moins de VRAM, ce qui permet d'ajuster de gros modèles sur une seule carte. C'est ce qui rend le fine-tuning maison viable.

Pour un modèle de 7-8 B avec QLoRA, le coût est faible : il tient dans environ 8 Go de VRAM, tu peux donc l'entraîner sur le GPU gratuit de Google Colab ou louer un GPU dans le cloud pour quelques heures. La vraie dépense n'est pas dans le calcul, mais dans la préparation d'un dataset propre : c'est là que passe le temps et là que se joue le résultat.

Partager
Newsletter

Recevez les prochains guides par e-mail

Des idées et ressources sur l'IA et le marketing, sans remplissage. Ce qui marche et comment l'appliquer.

Des idées et des ressources, sans spam. Désabonne-toi quand tu veux.

Ce guide vous est utile ?

S'abonner