Durchführung von Evaluierungen und Interpretation der Ergebnisse - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Durchführung von Evaluierungen und Interpretation der Ergebnisse

Ausführung des Bewertungsauftrags

Schritt 1: Bereiten Sie Ihre Daten vor

  • Formatieren Sie Ihre Bewertungsdaten gemäß den Anforderungen an das Datenformat

  • Laden Sie Ihre JSONL-Datei auf S3 hoch: s3://your-bucket/eval-data/eval_data.jsonl

Schritt 2: Konfiguriere dein Rezept

Aktualisieren Sie das Beispielrezept mit Ihrer Konfiguration:

  • Stellen Sie model_name_or_path den Standort Ihres Modells ein

  • Stellen lambda_arn Sie Ihre Belohnungsfunktion ARN ein

  • Stellen output_s3_path Sie den gewünschten Ausgabeort ein

  • Passen Sie die inference Parameter nach Bedarf an

Speichern Sie das Rezept unter rft_eval_recipe.yaml

Schritt 3: Führen Sie die Evaluierung durch

Führen Sie den Evaluierungsjob mit dem mitgelieferten Notizbuch aus: Evaluierungs-Notebooks

Evaluierungscontainer

708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest

Schritt 4: Überwachen Sie den Fortschritt

Überwachen Sie Ihre Bewertungsaufgabe durch:

  • SageMaker Konsole: Überprüfen Sie den Auftragsstatus und die Protokolle

  • CloudWatch Protokolle: Detaillierte Ausführungsprotokolle anzeigen

  • Lambda Logs: Probleme mit der Belohnungsfunktion debuggen

Evaluierungsergebnisse verstehen

Ausgabeformat

Der Evaluierungsjob gibt die Ergebnisse im JSONL-Format an Ihrem angegebenen S3-Speicherort aus. Jede Zeile enthält die Auswertungsergebnisse für eine Probe:

{ "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] }
Anmerkung

Die Ausgabe des RFT-Evaluierungsjobs ist identisch mit dem Lambda Response-Format. Der Bewertungsservice durchläuft die Antwort Ihrer Lambda-Funktion unverändert und gewährleistet so die Konsistenz zwischen Ihren Belohnungsberechnungen und den Endergebnissen.

Interpretation der Ergebnisse

Gesamter Prämienwert

  • Bereich: In der Regel 0,0 (am schlechtesten) bis 1,0 (am besten), hängt jedoch von Ihrer Implementierung ab

  • Zweck: Eine einzelne Zahl, die die Gesamtleistung zusammenfasst

  • Verwendungszweck: Modelle vergleichen, Verbesserungen im Vergleich zu Schulungen verfolgen

Individuelle Metriken

  • Metriktyp: Informationsmetriken für die Analyse

  • Belohnungstyp: Metriken, die während des RFT-Trainings verwendet wurden

  • Interpretation: Höhere Werte bedeuten im Allgemeinen eine bessere Leistung (es sei denn, Sie entwerfen inverse Metriken)

Leistungsmaßstäbe

Was unter „guter“ Leistung zu verstehen ist, hängt von Ihrem Anwendungsfall ab:

Punktebereich Interpretation Action
0,8 - 1,0 Ausgezeichnet Modell bereit für den Einsatz
0,6 - 0,8 Gut Geringfügige Verbesserungen können von Vorteil sein
0,4 - 0,6 Fair Signifikante Verbesserung erforderlich
0,0-0,4 Schlecht Überprüfen Sie die Trainingsdaten und die Belohnungsfunktion
Wichtig

Dies sind allgemeine Richtlinien. Definieren Sie Ihre eigenen Schwellenwerte auf der Grundlage von:

  • Geschäftliche Anforderungen

  • Leistung des Basismodells

  • Domänenspezifische Einschränkungen

  • Kosten-Nutzen-Analyse von Weiterbildungsmaßnahmen

Analyse der Ergebnisse

Berechne zusammenfassende Statistiken

import json import numpy as np scores = [] with open('evaluation_results.jsonl', 'r') as f: for line in f: result = json.loads(line) scores.append(result['aggregate_reward_score']) print(f"Mean: {np.mean(scores):.3f}") print(f"Median: {np.median(scores):.3f}") print(f"Std Dev: {np.std(scores):.3f}") print(f"Min: {np.min(scores):.3f}") print(f"Max: {np.max(scores):.3f}")
  • Identifizieren Sie Fehlerfälle: Überprüfen Sie Stichproben mit niedrigen Punktzahlen, um Schwachstellen zu verstehen

  • Kennzahlen vergleichen: Analysieren Sie die Korrelation zwischen verschiedenen Kennzahlen, um Kompromisse zu identifizieren

  • Im Zeitverlauf nachverfolgen: Vergleichen Sie die Bewertungsergebnisse der einzelnen Trainingsiterationen

Fehlerbehebung

Häufige Probleme

Problem Ursache Lösung
Lambda-Zeitüberschreitung Komplexe Prämienberechnung Lambda-Timeout erhöhen oder Funktion optimieren
Erlaubnis verweigert Fehlende IAM-Berechtigungen Stellen Sie sicher, dass die SageMaker Rolle Lambda aufrufen kann
Inkonsistente Ergebnisse Nichtdeterministische Belohnungsfunktion Verwenden Sie feste Ausgangswerte oder deterministische Logik
Fehlende Ergebnisse Lambda-Fehler wurden nicht erkannt Fügen Sie eine umfassende Fehlerbehandlung in Lambda hinzu

Checkliste zum Debuggen

  • Stellen Sie sicher, dass die Eingabedaten bei verschachtelten Inhaltsarrays das richtige Format haben

  • Bestätigen Sie, dass der Lambda-ARN korrekt ist und die Funktion bereitgestellt wurde

  • Überprüfen Sie die IAM-Berechtigungen für den SageMaker → Lambda-Aufruf

  • Überprüfen Sie die CloudWatch Protokolle auf Lambda-Fehler

  • Überprüfen Sie, ob die Lambda-Antwort dem erwarteten Format entspricht

Best Practices

  • Einfach starten: Beginnen Sie mit den grundlegenden Belohnungsfunktionen und wiederholen Sie den Vorgang

  • Lambda separat testen: Verwenden Sie Lambda-Testereignisse vor der vollständigen Auswertung

  • Bei kleinem Datensatz validieren: Führen Sie die Auswertung für eine Teilmenge vor dem vollständigen Datensatz durch

  • Versionskontrolle: Verfolgen Sie die Versionen der Belohnungsfunktionen zusammen mit den Modellversionen

  • Kosten überwachen: Lambda-Aufrufe und Rechenzeit wirken sich auf die Kosten aus

  • Umfangreich protokollieren: Verwenden Sie Print-Anweisungen in Lambda zum Debuggen

  • Richten Sie die Timeouts angemessen ein: Balance zwischen Geduld und Kosten

  • Dokumentieren Sie Kennzahlen: Definieren Sie klar, was jede Metrik misst

Nächste Schritte

Nach Abschluss der RFT-Evaluierung:

  • Wenn die Ergebnisse zufriedenstellend sind: Modell in der Produktion einsetzen

  • Falls eine Verbesserung erforderlich ist:

    • Passen Sie die Belohnungsfunktion an

    • Sammle mehr Trainingsdaten

    • Ändern Sie die Trainings-Hyperparameter

    • Führen Sie zusätzliche RFT-Trainingsiterationen aus

  • Kontinuierliche Überwachung: Regelmäßige Neubewertung anhand neuer Daten

Voreingestellte Belohnungsfunktionen

Zwei voreingestellte Belohnungsfunktionen (prime_code, prime_math) aus der Open-Source-Verl-Bibliothek sind in einer Lambda-Schicht verfügbar, die Sie mit Ihrem RFT-Lambda bündeln können.

-Übersicht

Diese voreingestellten Funktionen out-of-the-box bieten Evaluierungsfunktionen für:

  • prime_code — Codegenerierung und Korrektheitsbewertung

  • prime_math — Mathematisches Denken und Bewertung von Problemlösungen

Quick Setup

  1. Laden Sie die Lambda-Schicht aus den nova-custom-eval-sdk Versionen herunter

  2. Veröffentlichen Sie die Lambda-Ebene mitAWS CLI:

    aws lambda publish-layer-version \ --layer-name preset-function-layer \ --description "Preset reward function layer with dependencies" \ --zip-file fileb://universal_reward_layer.zip \ --compatible-runtimes python3.9 python3.10 python3.11 python3.12 \ --compatible-architectures x86_64 arm64
  3. Fügen Sie die Ebene zu Ihrer Lambda-Funktion hinzu in AWS-Managementkonsole (Wählen Sie die benutzerdefinierte Ebene preset-function-layer aus und fügen Sie AWSSDKPandas-Python 312 für Numpy-Abhängigkeiten hinzu)

  4. Importieren und in Ihrem Lambda-Code verwenden:

    from prime_code import compute_score # For code evaluation from prime_math import compute_score # For math evaluation

prime_code-Funktion

Zweck: Evaluiert Aufgaben zur Python-Codegenerierung, indem Code anhand von Testfällen ausgeführt und die Richtigkeit gemessen wird.

Beispiel für ein Eingabedatensatzformat aus der Auswertung

{"messages":[{"role":"user","content":"Write a function that returns the sum of two numbers."}],"reference_answer":{"inputs":["3\n5","10\n-2","0\n0"],"outputs":["8","8","0"]}} {"messages":[{"role":"user","content":"Write a function to check if a number is even."}],"reference_answer":{"inputs":["4","7","0","-2"],"outputs":["True","False","True","True"]}}

Schlüssel-Features

  • Automatische Codeextraktion aus Markdown-Codeblöcken

  • Funktionserkennung und anrufbasiertes Testen

  • Ausführung von Testfällen mit Timeout-Schutz

  • Syntaxvalidierung und Kompilierungsprüfungen

  • Detaillierte Fehlerberichterstattung mit Tracebacks

prime_math-Funktion

Zweck: Evaluiert die Fähigkeiten zum mathematischen Denken und zur Problemlösung mit Unterstützung symbolischer Mathematik.

Eingabeformat

{"messages":[{"role":"user","content":"What is the derivative of x^2 + 3x?."}],"reference_answer":"2*x + 3"}

Schlüssel-Features

  • Symbolische mathematische Bewertung mit SymPy

  • Mehrere Antwortformate (LaTeX, Klartext, symbolisch)

  • Mathematische Äquivalenzprüfung

  • Normalisierung und Vereinfachung von Ausdrücken

Datenformatanforderungen

Zur Codeauswertung

  • Eingaben — Array von Funktionsargumenten (richtige Typen: Ganzzahlen, Zeichenketten usw.)

  • Ausgaben — Array erwarteter Rückgabewerte (richtige Typen: Boolesche Werte, Zahlen usw.)

  • Code — Muss in Python mit klaren Funktionsdefinitionen sein

Für die mathematische Auswertung

  • Referenzantwort — Mathematischer Ausdruck oder numerischer Wert

  • Antwort — Kann LaTe X, Klartext oder symbolische Notation sein

  • Gleichwertigkeit — Wird symbolisch geprüft, nicht nur beim Abgleich von Zeichenketten

Best Practices

  • Verwenden Sie in Testfällen die richtigen Datentypen (Ganzzahlen im Vergleich zu Zeichenketten, boolesche Werte im Vergleich zu „True“)

  • Stellen Sie bei Codeproblemen klare Funktionssignaturen bereit

  • Schließen Sie Grenzfälle in Testeingaben ein (Null, negative Zahlen, leere Eingaben)

  • Formatieren Sie mathematische Ausdrücke konsistent in Referenzantworten

  • Testen Sie Ihre Belohnungsfunktion vor der Bereitstellung mit Beispieldaten

Fehlerbehandlung

Beide Funktionen beinhalten eine robuste Fehlerbehandlung für:

  • Kompilierungsfehler im generierten Code

  • Laufzeitausnahmen während der Ausführung

  • Fehlerhafte Eingabedaten

  • Timeout-Szenarien für Endlosschleifen

  • Ungültige mathematische Ausdrücke