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.