Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Perplexite (LLM Metric)

ia

Dé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

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis