Perplexite (LLM Metric)
iaDéfinition
La Perplexite (Perplexity, PPL) est la metrique d'evaluation fondamentale des modeles de langage, mesurant a quel point le modele est 'surpris' ou 'incertain' en lisant un texte. Mathematiquement, la perplexite est l'exponentielle de l'entropie croisee moyenne par token : PPL = exp(-1/N * sum(log P(t_i | t_1,...,t_{i-1}))). Un modele parfait aurait une perplexite de 1 (certitude totale), un modele aleatoire aurait une perplexite de |V| (taille du vocabulaire). L'interpretation : une perplexite de 20 signifie qu'en moyenne, le modele est aussi incertain que s'il devait choisir uniformement parmi 20 tokens a chaque position. Une perplexite de 5 indique un modele tres confiant. Sur WikiText-103 (texte anglais de reference), GPT-2 Small obtient une perplexite de ~29, GPT-2 Large ~19, et les modeles modernes (LLaMA 3.1) obtiennent ~5-8. La perplexite comme outil de comparison : elle est utilisee pour comparer des tokenizers (un tokenizer plus efficace donnera une perplexite plus basse pour le meme modele), des architectures (perplexite sur le validation set pendant l'entrainement comme signal de progression), et des tailles de modele (la 'Scaling Law' de Kaplan et al. montre que la perplexite decroit predictiblement avec le nombre de parametres et les FLOPs d'entrainement). Les limitations de la perplexite : (1) Sensible au tokenizer — comparer la perplexite entre deux modeles avec des tokenizers differents est trompeur, (2) Pas correle aux capacites des taches — un modele peut avoir une faible perplexite sur WikiText mais echouer sur des taches de raisonnement, (3) Sensible au domaine — la perplexite d'un modele medical sera elevee sur du texte de cuisine. La perplexite reste utile pour : le suivi de la progression de l'entrainement (learning curves), la detection d'overfitting (perplexite training << validation), l'evaluation de la qualite des datasets de fine-tuning, et la detection de textes OOD (out-of-distribution — les attaques par injection de prompt ont souvent une perplexite elevee).
Calcul perplexite avec Hugging Face
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import math
model_id = 'meta-llama/Meta-Llama-3.1-8B'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16).cuda()
def compute_perplexity(text, stride=512):
tokens = tokenizer(text, return_tensors='pt').input_ids.cuda()
nlls = []
for i in range(0, tokens.shape[1] - 1, stride):
input_ids = tokens[:, max(0, i - stride):i + stride]
target_ids = input_ids.clone()
target_ids[:, :stride] = -100 # Ignore le contexte precedent
with torch.no_grad():
loss = model(input_ids, labels=target_ids).loss
nlls.append(loss)
return math.exp(sum(nlls) / len(nlls))
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h