Fine-TuningLLMsLoRATechnique

Comment fine-tuner un LLM sur votre jeu de données personnalisé

212AY Team·2026-05-01·18 min

Le fine-tuning adapte un LLM pré-entraîné pour exceller dans votre tâche spécifique. Ce guide vous accompagne dans le fine-tuning d'un modèle open-source avec LoRA.

Quand fine-tuner

Le fine-tuning est idéal quand :

  • Vous avez besoin d'un format de sortie cohérent
  • Votre domaine utilise un vocabulaire spécialisé
  • Vous voulez réduire la longueur et le coût des prompts
  • Vous construisez un produit spécialisé

Configuration

pip install transformers datasets accelerate peft bitsandbytes

Préparation des données

Formatez vos données en JSONL avec les champs « instruction » et « output » :

{"instruction": "Qu'est-ce que le prompt engineering ?", "output": "Le prompt engineering est la pratique qui consiste à concevoir des entrées pour guider les sorties des modèles d'IA."}
{"instruction": "Expliquez le RAG", "output": "Le RAG (Retrieval-Augmented Generation) combine les LLMs avec la récupération de connaissances externes."}

Chargement du modèle de base

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model

model_name = "microsoft/phi-2"  # ou tout modèle open-source

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token

Configuration de LoRA

lora_config = LoraConfig(
    r=8,  # rang
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)

model = get_peft_model(model, lora_config)
print(f"Paramètres entraînables : {model.num_parameters(only_trainable=True):,}")

Entraînement

from transformers import TrainingArguments, Trainer

training_args = TrainingArguments(
    output_dir="./phi2-finetuned",
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    learning_rate=2e-4,
    num_train_epochs=3,
    logging_steps=10,
    save_strategy="epoch",
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=dataset,
    tokenizer=tokenizer,
)

trainer.train()

Évaluation

Testez votre modèle fine-tuné sur un ensemble de validation :

  • Comparez les sorties avant et après le fine-tuning
  • Mesurez les métriques spécifiques à la tâche
  • Faites une évaluation humaine pour la qualité

Inférence

def generate_response(instruction):
    inputs = tokenizer(instruction, return_tensors="pt").to("cuda")
    outputs = model.generate(
        **inputs,
        max_new_tokens=200,
        temperature=0.7
    )
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

Déploiement en production

  • Exportez au format GGUF pour llama.cpp
  • Déployez avec vLLM pour la production
  • Utilisez Ollama pour le déploiement local
  • Surveillez la dérive et la dégradation de la qualité

Quand NE PAS fine-tuner

  • Si le prompt engineering résout votre problème
  • Si vous devez changer les comportements fréquemment
  • Si vous n'avez pas de données d'entraînement de haute qualité
  • Commencez par le RAG avant le fine-tuning

Notre programme « Build with LLMs » couvre le fine-tuning avec des projets pratiques.