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.
RFT-Bewertung
Was ist eine RFT-Evaluierung?
Die RFT-Evaluierung ermöglicht es Ihnen, die Leistung Ihres Modells mithilfe benutzerdefinierter Belohnungsfunktionen vor, während oder nach dem Reinforcement-Learning-Training zu bewerten. Im Gegensatz zu Standardevaluationen, die vordefinierte Metriken verwenden, können Sie mit der RFT-Evaluierung Ihre eigenen Erfolgskriterien mithilfe einer Lambda-Funktion definieren, die die Modellergebnisse anhand Ihrer spezifischen Anforderungen bewertet.
Warum mit RFT evaluieren?
Die Bewertung ist entscheidend, um festzustellen, ob der RL-Feinabstimmungsprozess Folgendes beinhaltet:
-
Verbesserte Modellausrichtung auf Ihren spezifischen Anwendungsfall und Ihre menschlichen Werte
-
Beibehaltung oder Verbesserung der Modellfunktionen für wichtige Aufgaben
-
Vermeidung unbeabsichtigter Nebenwirkungen wie verringerter Faktengehalt, erhöhter Ausführlichkeitsgrad oder Leistungseinbußen bei anderen Aufgaben
-
Erfüllte Ihre individuellen Erfolgskriterien, wie sie in Ihrer Belohnungsfunktion definiert sind
Wann sollte die RFT-Evaluierung verwendet werden
Verwenden Sie die RFT-Evaluation in diesen Szenarien:
-
Vor dem RFT-Training: Legen Sie Basiskennzahlen für Ihren Bewertungsdatensatz fest
-
Während des RFT-Trainings: Überwachen Sie den Trainingsfortschritt anhand von Zwischenkontrollen
-
Nach dem RFT-Training: Stellen Sie sicher, dass das endgültige Modell Ihren Anforderungen entspricht
-
Modelle vergleichen: Evaluieren Sie mehrere Modellversionen anhand einheitlicher Belohnungskriterien
Anmerkung
Verwenden Sie RFT Evaluation, wenn Sie benutzerdefinierte, domänenspezifische Metriken benötigen. Verwenden Sie für allgemeine Bewertungen (Genauigkeit, Verwirrung, BLEU) Standardbewertungsmethoden.
Datenformatanforderungen
Struktur der Eingabedaten
Die Eingabedaten der RFT-Evaluierung müssen dem OpenAI Reinforcement Fine-Tuning Format folgen. Jedes Beispiel ist ein JSON-Objekt, das Folgendes enthält:
-
messages— Reihe von Wendungen mitsystemunduserRollen im Gespräch -
reference_answer— Erwartete Ergebnisse oder Ground-Truth-Daten, die von Ihrer Belohnungsfunktion für die Bewertung verwendet werden
Beispiel für ein Datenformat
{ "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Solve for x. Return only JSON like {\"x\": <number>}. Equation: 2x + 5 = 13" } ] } ], "reference_answer": { "x": 4 } }
Aktuelle Einschränkungen
-
Nur Text: Es werden keine multimodalen Eingaben (Bilder, Audio, Video) unterstützt
-
Single-turn Konversationen: Unterstützt nur Einzelbenutzernachrichten (keine Dialoge mit mehreren Runden)
-
JSON-Format: Eingabedaten müssen im JSONL-Format vorliegen (ein JSON-Objekt pro Zeile)
-
Modellausgaben: Die Auswertung erfolgt anhand der generierten Vervollständigungen des angegebenen Modells
Vorbereitung Ihres Bewertungsrezepts
Beispiel-Notebook
Ein vollständiges Beispiel finden Sie unter Evaluierungsnotizbücher.
Beispiel für eine Rezeptkonfiguration
run: name: nova-lite-rft-eval-job model_type: amazon.nova-lite-v1:0:300k model_name_or_path: s3://escrow_bucket/model_location # [MODIFIABLE] S3 path to your model or model identifier replicas: 1 # [MODIFIABLE] For SageMaker Training jobs only; fixed for HyperPod jobs data_s3_path: "" # [REQUIRED FOR HYPERPOD] Leave empty for SageMaker Training jobs and use TrainingInput in SageMaker Python SDK output_s3_path: "" # [REQUIRED] Output artifact S3 path for evaluation results evaluation: task: rft_eval # [FIXED] Do not modify strategy: rft_eval # [FIXED] Do not modify metric: all # [FIXED] Do not modify # Inference Configuration inference: max_new_tokens: 8192 # [MODIFIABLE] Maximum tokens to generate top_k: -1 # [MODIFIABLE] Top-k sampling parameter top_p: 1.0 # [MODIFIABLE] Nucleus sampling parameter temperature: 0 # [MODIFIABLE] Sampling temperature (0 = deterministic) top_logprobs: 0 # [MODIFIABLE] Set between 1-20 to enable logprobs output # ============================================================================= # Bring Your Own Reinforcement Learning Environment # ============================================================================= rl_env: reward_lambda_arn: arn:aws:lambda:<region>:<account_id>:function:<reward-function-name>
Voreingestellte Belohnungsfunktionen
Zwei voreingestellte Belohnungsfunktionen (prime_codeundprime_math) sind als Lambda-Layer für die einfache Integration in Ihre RFT-Lambda-Funktionen verfügbar.
-Übersicht
Diese voreingestellten Funktionen bieten sofort einsatzbereite Evaluierungsfunktionen für:
-
prime_code— Codegenerierung und Korrektheitsprüfung -
prime_math— Mathematische Argumentation und Bewertung der Problemlösung
Quick Setup
-
Laden Sie den Lambda-Layer aus den Versionen von nova-custom-eval-SDK herunter. https://github.com/aws/nova-custom-eval-sdk/releases
-
Veröffentlichen Sie den Lambda-Layer mithilfe der Befehlszeilenschnittstelle (): AWS AWS 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 -
Fügen Sie die Ebene zu Ihrer Lambda-Funktion in der AWS Management Console hinzu (wählen Sie die Preset-Function-Layer aus der benutzerdefinierten Ebene aus und fügen Sie sie auch für Numpy-Abhängigkeiten hinzu). AWSSDKPandas-Python312
-
Importieren und verwenden Sie ihn in Ihrem Lambda-Code:
from prime_code import compute_score # For code evaluation from prime_math import compute_score # For math evaluation
prime_code-Funktion
Evaluiert Python-Codegenerierungsaufgaben, indem Code anhand von Testfällen ausgeführt und die Richtigkeit gemessen wird.
Beispiel für ein Eingabedatensatzformat
{"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 aufrufbasiertes Testen
-
Ausführung von Testfällen mit Timeout-Schutz
-
Syntaxvalidierung und Kompilierungsprüfungen
-
Detaillierte Fehlerberichterstattung mit Tracebacks
prime_math-Funktion
Evaluiert mathematische Denk- und Problemlösungsfähigkeiten mit symbolischer mathematischer Unterstützung.
Eingabeformat
{"messages":[{"role":"user","content":"What is the derivative of x^2 + 3x?."}],"reference_answer":"2*x + 3"}
Schlüssel-Features
-
Symbolische mathematische Auswertung mit SymPy
-
Mehrere Antwortformate (LaTeX, Klartext, symbolisch)
-
Mathematische Äquivalenzprüfung
-
Normalisierung und Vereinfachung von Ausdrücken
Datenformatanforderungen
Zur Code-Evaluierung
-
Eingaben: Array von Funktionsargumenten (richtige Typen: Ganzzahlen, Zeichenketten usw.)
-
Ausgaben: Array der erwarteten Rückgabewerte (richtige Typen: Boolesche Werte, Zahlen usw.)
-
Code: Muss in Python mit klaren Funktionsdefinitionen sein
Zur mathematischen Bewertung
-
Referenzantwort: Mathematischer Ausdruck oder numerischer Wert
-
Antwort: Kann LaTe X, Klartext oder symbolische Schreibweise sein
-
Äquivalenz: Wird symbolisch geprüft, nicht nur beim Abgleichen von Zeichenketten
Bewährte Methoden
-
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
-
Fügen Sie Randfälle in Testeingaben ein (Null, negative Zahlen, leere Eingaben)
-
Formatieren Sie mathematische Ausdrücke in Referenzantworten konsistent
-
Testen Sie Ihre Belohnungsfunktion vor dem Einsatz anhand von Beispieldaten
Fehlerbehandlung
Beide Funktionen beinhalten eine robuste Fehlerbehandlung für:
-
Kompilierungsfehler im generierten Code
-
Laufzeitausnahmen während der Ausführung
-
Falsch formatierte Eingabedaten
-
Timeout-Szenarien für Endlosschleifen
-
Ungültige mathematische Ausdrücke
Erstellen Sie Ihre Belohnungsfunktion
Lambda-ARN-Anforderungen
Ihr Lambda-ARN muss diesem Format entsprechen:
"arn:aws:lambda:*:*:function:*SageMaker*"
Wenn das Lambda dieses Benennungsschema nicht hat, schlägt der Job mit diesem Fehler fehl:
[ERROR] Unexpected error: lambda_arn must contain one of: ['SageMaker', 'sagemaker', 'Sagemaker'] when running on SMHP platform (Key: lambda_arn)
Lambda-Anforderungsformat
Ihre Lambda-Funktion empfängt Daten in diesem Format:
[ { "id": "sample-001", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Do you have a dedicated security team?" } ] }, { "role": "nova_assistant", "content": [ { "type": "text", "text": "As an AI developed by Company, I don't have a dedicated security team..." } ] } ], "reference_answer": { "compliant": "No", "explanation": "As an AI developed by Company, I do not have a traditional security team..." } } ]
Anmerkung
Die Nachrichtenstruktur umfasst das verschachtelte content Array, das dem Eingabedatenformat entspricht. Die letzte Nachricht mit der Rolle nova_assistant enthält die generierte Antwort des Modells.
Lambda-Antwortformat
Ihre Lambda-Funktion muss Daten in diesem Format zurückgeben:
[ { "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] } ]
Antwortfelder
-
id— Muss mit der eingegebenen Proben-ID übereinstimmen -
aggregate_reward_score— Gesamtpunktzahl (in der Regel 0,0 bis 1,0) -
metrics_list— Reihe einzelner Metriken mit:-
name— Kennzahl der Metrik (z. B. „Genauigkeit“, „Sprachkompetenz“) -
value— Metrischer Wert (typischerweise 0,0 bis 1,0) -
type— Entweder „Metrik“ (für Berichte) oder „Belohnung“ (wird im Training verwendet)
-
IAM-Berechtigungen
Erforderliche Berechtigungen
Ihre SageMaker Ausführungsrolle muss über Berechtigungen zum Aufrufen Ihrer Lambda-Funktion verfügen. Fügen Sie diese Richtlinie zu Ihrer SageMaker Ausführungsrolle hinzu:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" } ] }
Lambda-Ausführungsrolle
Für die Ausführungsrolle Ihrer Lambda-Funktion sind grundlegende Lambda-Ausführungsberechtigungen erforderlich:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }
Wenn Ihre Lambda-Funktion auf andere AWS Dienste zugreift (z. B. S3 für Referenzdaten, DynamoDB für die Protokollierung), fügen Sie diese Berechtigungen der Lambda-Ausführungsrolle hinzu.
Den Evaluierungsjob ausführen
-
Bereiten Sie Ihre Daten vor — Formatieren Sie Ihre Bewertungsdaten gemäß den Anforderungen an das Datenformat und laden Sie Ihre JSONL-Datei auf S3 hoch:
s3://your-bucket/eval-data/eval_data.jsonl -
Konfigurieren Sie Ihr Rezept — Aktualisieren Sie das Beispielrezept mit Ihrer Konfiguration:
-
Stellen Sie
model_name_or_pathden Standort Ihres Modells ein -
Stellen
lambda_arnSie Ihre Belohnungsfunktion ARN ein -
Stellen
output_s3_pathSie den gewünschten Ausgabeort ein -
Passen Sie die
inferenceParameter nach Bedarf an
Speichern Sie das Rezept unter
rft_eval_recipe.yaml -
-
Evaluierung ausführen — Führen Sie den Evaluierungsjob mit dem mitgelieferten Notizbuch aus: Evaluierungsnotizbücher
-
Fortschritt überwachen — Überwachen Sie Ihre Evaluierungsaufgabe durch:
-
SageMaker Konsole: Überprüfen Sie den Auftragsstatus und die Protokolle
-
CloudWatch Protokolle: Sehen Sie sich detaillierte Ausführungsprotokolle an
-
Lambda-Logs: Probleme mit der Belohnungsfunktion debuggen
-
Evaluierungsergebnisse verstehen
Ausgabeformat
Der Evaluierungsauftrag gibt Ergebnisse im JSONL-Format an den von Ihnen angegebenen S3-Speicherort aus. Jede Zeile enthält die Bewertungsergebnisse für eine Stichprobe:
{ "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-Evaluierungsauftrags ist identisch mit dem Lambda-Antwortformat. Der Bewertungsservice leitet die Antwort Ihrer Lambda-Funktion unverändert weiter und gewährleistet so die Konsistenz zwischen Ihren Belohnungsberechnungen und den Endergebnissen.
Interpretation der Ergebnisse
Aggregierte Prämienpunktzahl
-
Bereich: Normalerweise 0,0 (am schlechtesten) bis 1,0 (am besten), hängt jedoch von Ihrer Implementierung ab
-
Zweck: Einzelne Zahl, die die Gesamtleistung zusammenfasst
-
Verwendungszweck: Modelle vergleichen, Fortschritte im Vergleich zum Training verfolgen
Individuelle Kennzahlen
-
Metriktyp: Informationsmetriken für die Analyse
-
Belohnungstyp: Metriken, die während des RFT-Trainings verwendet werden
-
Interpretation: Höhere Werte deuten im Allgemeinen auf eine bessere Leistung hin (es sei denn, du entwirfst inverse Metriken)
Leistungs-Benchmarks
Was eine „gute“ Leistung ausmacht, hängt von Ihrem Anwendungsfall ab:
| Bereich der Punktzahlen | Interpretation | Action |
|---|---|---|
| 0,8 — 1,0 | Hervorragend | Modell bereit für den Einsatz |
| 0,6 — 0,8 | Gut | Kleinere Verbesserungen können von Vorteil sein |
| 0,4 — 0,6 | Fair | Signifikante Verbesserung erforderlich |
| 0,0 — 0,4 | Schlecht | Überprüfe die Trainingsdaten und die Belohnungsfunktion |
Wichtig
Dies sind allgemeine Richtlinien. Definieren Sie Ihre eigenen Schwellenwerte auf der Grundlage der Geschäftsanforderungen, der Leistung des Basismodells, der domänenspezifischen Einschränkungen und der Kosten-Nutzen-Analyse der Weiterbildung.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| Lambda-Zeitüberschreitung | Komplexe Berechnung der Prämien | Erhöhen Sie das Lambda-Timeout oder optimieren Sie die Funktion |
| Erlaubnis verweigert | Fehlende IAM-Berechtigungen | SageMaker Verify-Rolle kann Lambda aufrufen |
| Inkonsistente Ergebnisse | Non-deterministic Belohnungsfunktion | Verwenden Sie feste Werte oder deterministische Logik |
| Fehlende Ergebnisse | Lambda-Fehler wurden nicht erkannt | Fügen Sie eine umfassende Fehlerbehandlung in Lambda hinzu |
Debug-Checkliste
-
Stellen Sie sicher, dass die Eingabedaten dem richtigen Format mit verschachtelten Inhaltsarrays entsprechen
-
Stellen Sie sicher, 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
Bewährte Methoden
-
Fangen Sie einfach an: Beginnen Sie mit grundlegenden Belohnungsfunktionen und wiederholen Sie
-
Lambda separat testen: Verwenden Sie Lambda-Testereignisse vor der vollständigen Bewertung
-
Bei kleinem Datensatz validieren: Führen Sie die Auswertung einer Teilmenge vor dem vollständigen Datensatz durch
-
Versionskontrolle: Verfolgen Sie Versionen von Belohnungsfunktionen zusammen mit 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 Timeouts angemessen ein: Balancieren Sie zwischen Geduld und Kosten
-
Kennzahlen dokumentieren: Definieren Sie klar, was jede Metrik misst
Nächste Schritte
Nach Abschluss der RFT-Evaluierung:
-
Wenn die Ergebnisse zufriedenstellend sind: Stellen Sie das Modell in der Produktion bereit
-
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 durch
-
-
Kontinuierliche Überwachung: Re-evaluate regelmäßig mit neuen Daten