Multi-Task-Modellbewertung für risikobasierte Entscheidungsfindung
Erfahren Sie, wie Sie EvaluationSuites nutzen, um spezifische Leistungslücken über verschiedene Aufgaben hinweg zu identifizieren, anstatt sich auf einen einzigen aggregierten Score zu verlassen.
Auf dieser Seite
Kerngedanke
Um ein KI-Modell präzise zu bewerten, sollten Praktiker von einzelnen aggregierten Metriken Abstand nehmen und stattdessen eine Multi-Task-Evaluierungsstrategie einsetzen. Durch das Zusammenstellen einer EvaluationSuite, die aus mehreren SubTasks besteht - wobei jeder SubTask einen spezifischen Evaluator, einen Datensatz und eine Metrik kombiniert - können Entwickler verschiedene Dimensionen des Modellverhaltens untersuchen, wie etwa allgemeines logisches Denken, Fairness und Bias. Dieser Ansatz ermöglicht die Identifizierung spezifischer Risikoachsen; so kann ein Modell beispielsweise eine hohe Gesamtgenauigkeit aufweisen, aber bei der natürlichen Sprachimplikation (Natural Language Entailment) erheblich versagen oder Bias in bestimmten demografischen Teilmengen zeigen. Entscheidungen werden dann auf Basis dieser individuellen Risikoprofile getroffen, um sicherzustellen, dass ein hoher Durchschnittswert keine kritischen Fehler in einer risikoreichen Aufgabe maskiert.
Multi-Task-Evaluierungsstrategie
Sich auf einen einzigen aggregierten Score zur Bewertung eines Modells zu verlassen, maskiert oft kritische Schwächen. Ein Modell kann eine hohe durchschnittliche Genauigkeit über einen breiten Benchmark erreichen, während es bei einer spezifischen, risikoreichen Aufgabe katastrophal versagt. Die Bewertung von Modellen über einen vielfältigen Satz von Aufgaben hilft dabei, Leistungslücken entlang spezifischer Achsen aufzudecken, wie etwa eine Diskrepanz zwischen der In-Domain-Perplexität und den allgemeinen Sprachfähigkeiten.
Durch die Zerlegung der Evaluierung in einzelne Aufgaben können Praktiker zwischen einem Modell unterscheiden, das allgemein leistungsfähig ist, und einem, das lediglich auf ein spezifisches Datensatzmuster überoptimiert (overfitted) ist. Diese granulare Sicht ist essenziell für die Identifizierung von Risiken in Bezug auf Fairness, Bias und Zuverlässigkeit, die in einem globalen Durchschnitt normalerweise geglättet werden.
Zusammenstellung einer Evaluation Suite
Eine EvaluationSuite ist als Sammlung von SubTasks strukturiert. Jeder SubTask ist ein Tupel, das einen Evaluator, einen Datensatz und eine Metrik enthält. Diese Modularität erlaubt es der Suite, verschiedene Modelldimensionen zu prüfen. Beispielsweise könnte sich ein SubTask auf die Textklassifizierung für die Sentiment-Analyse konzentrieren, während ein anderer die natürliche Sprachimplikation testet, um die logische Konsistenz zu prüfen.
Um sicherzustellen, dass die Suite umfassend ist, sollten Entwickler Aufgaben aufnehmen, die sowohl allgemeine Fähigkeiten testen als auch darauf ausgelegt sind, Bias zu untersuchen. Einige Datensätze erfordern einen data_preprocessor, um die Eingaben korrekt zu formatieren, bevor sie an den Evaluator übergeben werden, damit das Modell die Daten im erwarteten Schema erhält.
Implementierung und Ausführung
Technisch gesehen benötigt ein SubTask obligatorische Attribute: task_type (Zuweisung zu unterstützten Evaluator-Aufgaben) und data (ein Hugging Face Datensatz-Objekt oder dessen Name). Zusätzliche Attribute wie subset, split und args_for_task ermöglichen eine präzise Steuerung des Evaluierungsausschnitts und der verwendeten spezifischen Metriken, wie etwa Accuracy oder F1-Score.
Die Suite wird mithilfe einer run-Methode ausgeführt, die ein Modell oder eine Pipeline als Eingabe entgegennimmt. Dieser Prozess generiert einen detaillierten Bericht, der den Aufgabennamen, die berechnete Metrik und Performance-Telemetrie wie die Gesamtzeit und die Latenz pro Sample enthält.
import evaluate
from evaluate.evaluation_suite import SubTask
class Suite(evaluate.EvaluationSuite):
def __init__(self, name):
super().__init__(name)
self.suite = [
SubTask(
task_type='text-classification',
data='glue',
subset='sst2',
split='validation[:10]',
args_for_task={
'metric': 'accuracy',
'input_column': 'sentence',
'label_column': 'label',
'label_mapping': {'LABEL_0': 0.0, 'LABEL_1': 1.0}
}
),
SubTask(
task_type='text-classification',
data='glue',
subset='rte',
split='validation[:10]',
args_for_task={
'metric': 'accuracy',
'input_column': 'sentence1',
'second_input_column': 'sentence2',
'label_column': 'label',
'label_mapping': {'LABEL_0': 0, 'LABEL_1': 1}
}
)
]
suite = Suite('my-eval-suite')
results = suite.run('gpt2')Analyse von Risiko und Leistung
Die Ausgabe eines Multi-Task-Durchlaufs ist typischerweise eine Tabelle, in der jede Zeile eine spezifische Aufgabe darstellt. Anstatt diese Zeilen zu mitteln, sollten Analysten die Varianz der Genauigkeit und Latenz über die Aufgaben hinweg untersuchen. Eine hohe Latenz bei einer spezifischen Aufgabe könnte auf einen Engpass bei der Verarbeitung komplexer Eingaben durch das Modell hindeuten, während eine geringe Genauigkeit bei einer Fairness-Prüfung auf ein hohes Risiko für verzerrte Ausgaben hinweist.
Die Entscheidungsfindung verlagert sich dadurch auf ein Risikoachsen-Modell: Wenn das Modell bei einer 'kritischen' Aufgabe (z. B. Sicherheit) versagt, wird es unabhängig von seiner Leistung bei 'allgemeinen' Aufgaben abgelehnt. Dies verhindert das 'Herausmitteln' kritischer Fehler und stellt sicher, dass das Modell die minimalen Sicherheits- und Leistungsschwellen für jede erforderliche Fähigkeit erfüllt.
Illustrative Ausgabe: Die Ergebnisse enthalten typischerweise Spalten für task_name, accuracy, total_time_in_seconds und latency_in_seconds. Beispielsweise könnte glue/sst2 eine Genauigkeit von 0,5 mit einer Latenz von 0,07s zeigen, während glue/rte eine Genauigkeit von 0,4 mit einer Latenz von 0,16s aufweist.
import pandas as pd
results_data = {
'task_name': ['glue/sst2', 'glue/rte'],
'accuracy': [0.5, 0.4],
'total_time_in_seconds': [0.74, 1.67],
'latency_in_seconds': [0.07, 0.16]
}
df = pd.DataFrame(results_data)
print(df)Anwendungsbedingungen
- Muss das Modell in Bezug auf mehrere unterschiedliche Fähigkeiten (z. B. Logik vs. Sentiment) bewertet werden?
- Gibt es spezifische risikoreiche Fehlermodi, die unabhängig von der allgemeinen Genauigkeit überwacht werden müssen?
- Ist der Evaluierungsdatensatz mit den Task-Typen der Hugging Face evaluate-Bibliothek kompatibel?
- Erfordern die Datensätze eine benutzerdefinierte Vorverarbeitung, bevor sie an den Evaluator übergeben werden?
Geltungsbereich
Die EvaluationSuite erfordert, dass Datensätze mit den unterstützten Evaluator-Task-Typen kompatibel sind, und kann benutzerdefinierte data_preprocessor-Funktionen für Nicht-Standardformate erfordern.