La bibliothèque evaluate

Introduction aux LLM avec Python

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

La bibliothèque evaluate

import evaluate

accuracy = evaluate.load("accuracy")
print(accuracy.description)
L'accuracy est la proportion de prédictions
correctes parmi tous les cas traités.
Elle se calcule ainsi :
Accuracy = (TP + TN) / (TP + TN + FP + FN)
Où :
TP : Vrai positif
TN : Vrai négatif
FP : Faux positif
FN : Faux négatif

 

  • Métrique : évaluer la performance selon la vérité terrain

 

  • Comparaison : comparer deux modèles

 

  • Mesure : éclairer les propriétés de l'ensemble de données
Introduction aux LLM avec Python

L'attribut Features

print(accuracy.features)
{'predictions': Value(dtype='int32', id=None),
 'references': Value(dtype='int32', id=None)}

Examiner les intrants requis par une métrique

  • 'predictions' : sorties du modèle
  • 'references' : vérité terrain
  • .features : indique le type pris en charge pour les étiquettes, p. ex. 'int32' ou 'float32'
f1 = evaluate.load("f1")
print(f1.features)
{'predictions': Value(dtype='int32', id=None),
 'references': Value(dtype='int32', id=None)}
pearson_corr = evaluate.load("pearsonr")
print(pearson_corr.features)
{'predictions': Value(dtype='float32', id=None),
'references': Value(dtype='float32', id=None)}
Introduction aux LLM avec Python

Tâches et mesures pour LLM

 

Mesures d'évaluation pour les tâches linguistiques

Introduction aux LLM avec Python

Tâches et mesures pour LLM

 

Mesures d'évaluation pour les tâches linguistiques

Introduction aux LLM avec Python

Mesures de classification

accuracy = evaluate.load("accuracy")
precision = evaluate.load("precision")
recall = evaluate.load("recall")
f1 = evaluate.load("f1")
from transformers import pipeline

classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)

predictions = classifier(evaluation_text)

predicted_labels = [1 if pred["label"] == "POSITIVE" else 0 for pred in predictions]
Introduction aux LLM avec Python

Résultats des métriques

real_labels = [0,1,0,1,1]
predicted_labels = [0,0,0,1,1]

print(accuracy.compute(references=real_labels, predictions=predicted_labels))
print(precision.compute(references=real_labels, predictions=predicted_labels))
print(recall.compute(references=real_labels, predictions=predicted_labels))
print(f1.compute(references=real_labels, predictions=predicted_labels))
{'accuracy': 0.8}
{'precision': 1.0}
{'recall': 0.6666666666666666}
{'f1': 0.8}
Introduction aux LLM avec Python

Évaluer notre modèle ajusté finement

# Charger le modèle et le tokenizer enregistrés avec 
# .from_pretrained("my_finetuned_files")


new_data = ["This is movie was disappointing!", "This is the best movie ever!"] new_input = tokenizer(new_data, return_tensors="pt", padding=True, truncation=True, max_length=64) with torch.no_grad(): outputs = model(**new_input) predicted = torch.argmax(outputs.logits, dim=1).tolist()
real = [0,1]
print(accuracy.compute(references=real,
                       predictions=predicted))
print(precision.compute(references=real,
                        predictions=predicted))
print(recall.compute(references=real,
                     predictions=predicted))
print(f1.compute(references=real, 
                 predictions=predicted))
{'accuracy': 1.0}
{'precision': 1.0}
{'recall': 1.0}
{'f1': 1.0}
Introduction aux LLM avec Python

Choisir la bonne métrique

 

  • À garder en tête : chaque métrique apporte ses propres constats, mais aussi ses limites

 

  • Soyez global : utilisez une combinaison de métriques (et des indicateurs clés propres au domaine lorsque possible)

Illustration d'un cerveau avec une ampoule pour représenter la prise de conscience, la réflexion et la décision.

Introduction aux LLM avec Python

Passons à la pratique !

Introduction aux LLM avec Python

Preparing Video For Download...