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.
Evaluieren Sie mit voreingestellten und benutzerdefinierten Scorern
Wenn Sie den Bewertungstyp Benutzerdefinierter Punktezähler verwenden, unterstützt SageMaker Evaluation zwei integrierte Punktezähler (auch als „Belohnungsfunktionen“ bezeichnet): Prime Math und Prime Code, die aus der volcengine/verl
Built-in Punktezähler
Erstklassige Mathematik
Der Prime Math-Scorer erwartet einen benutzerdefinierten JSONL-Datensatz mit Einträgen, die eine mathematische Frage als Grundlage prompt/query und die richtige Antwort als Grundwahrheit enthalten. Bei dem Datensatz kann es sich um eines der unter genannten unterstützten Formate handeln. Unterstützte Datensatzformate für Bring-Your-Own-Dataset (BYOD-) Aufgaben
Beispiel für einen Datensatzeintrag (aus Gründen der Übersichtlichkeit erweitert):
{ "system":"You are a math expert: ", "query":"How many vertical asymptotes does the graph of $y=\\frac{2}{x^2+x-6}$ have?", "response":"2" # Ground truth aka correct answer }
Primcode
Der Prime Code Scorer erwartet einen benutzerdefinierten JSONL-Datensatz mit Einträgen, die ein Codierungsproblem und die im Feld angegebenen Testfälle enthalten. metadata Strukturieren Sie die Testfälle mit dem erwarteten Funktionsnamen für jeden Eintrag, Beispieleingaben und erwarteten Ausgaben.
Beispiel für einen Datensatzeintrag (aus Gründen der Übersichtlichkeit erweitert):
{ "system":"\\nWhen tackling complex reasoning tasks, you have access to the following actions. Use them as needed to progress through your thought process.\\n\\n[ASSESS]\\n\\n[ADVANCE]\\n\\n[VERIFY]\\n\\n[SIMPLIFY]\\n\\n[SYNTHESIZE]\\n\\n[PIVOT]\\n\\n[OUTPUT]\\n\\nYou should strictly follow the format below:\\n\\n[ACTION NAME]\\n\\n# Your action step 1\\n\\n# Your action step 2\\n\\n# Your action step 3\\n\\n...\\n\\nNext action: [NEXT ACTION NAME]\\n\\n", "query":"A number N is called a factorial number if it is the factorial of a positive integer. For example, the first few factorial numbers are 1, 2, 6, 24, 120,\\nGiven a number N, the task is to return the list/vector of the factorial numbers smaller than or equal to N.\\nExample 1:\\nInput: N = 3\\nOutput: 1 2\\nExplanation: The first factorial number is \\n1 which is less than equal to N. The second \\nnumber is 2 which is less than equal to N,\\nbut the third factorial number is 6 which \\nis greater than N. So we print only 1 and 2.\\nExample 2:\\nInput: N = 6\\nOutput: 1 2 6\\nExplanation: The first three factorial \\nnumbers are less than equal to N but \\nthe fourth factorial number 24 is \\ngreater than N. So we print only first \\nthree factorial numbers.\\nYour Task: \\nYou don't need to read input or print anything. Your task is to complete the function factorialNumbers() which takes an integer N as an input parameter and return the list/vector of the factorial numbers smaller than or equal to N.\\nExpected Time Complexity: O(K), Where K is the number of factorial numbers.\\nExpected Auxiliary Space: O(1)\\nConstraints:\\n1<=N<=10^{18}\\n\\nWrite Python code to solve the problem. Present the code in \\n```python\\nYour code\\n```\\nat the end.", "response": "", # Dummy string for ground truth. Provide a value if you want NLP metrics like ROUGE, BLEU, and F1. ### Define test cases in metadata field "metadata": { "fn_name": "factorialNumbers", "inputs": ["5"], "outputs": ["[1, 2]"] } }
Benutzerdefinierte Punktezähler (bringen Sie Ihre eigenen Kennzahlen mit)
Passen Sie Ihren Arbeitsablauf zur Modellbewertung mit einer benutzerdefinierten Nachbearbeitungslogik vollständig an, mit der Sie benutzerdefinierte Metriken berechnen können, die auf Ihre Bedürfnisse zugeschnitten sind. Sie müssen Ihren benutzerdefinierten Scorer als AWS Lambda-Funktion implementieren, die Modellantworten akzeptiert und Prämienwerte zurückgibt.
Beispiel für eine Lambda-Eingabe-Payload
Die Nutzlast, die Ihre benutzerdefinierte AWS Scorer-Lambda-Funktion erhält, spiegelt das Format Ihres Bewertungsdatensatzes wider. SageMaker Die KI erkennt Ihr Datensatzformat und sendet jede Stichprobe in der entsprechenden Form an Ihr Lambda, wobei die generierte Antwort des Modells angehängt wird. Ihr Lambda muss die Antwort aus den Feldern lesen, die dem von Ihnen verwendeten Datensatzformat entsprechen.
Der Container ruft Ihr Lambda einmal pro Stichprobe auf und übergibt eine Liste, die ein einzelnes Beispielobjekt enthält. Ihr Lambda muss die Liste iterieren, aber derzeit enthält sie genau ein Element pro Aufruf. Die folgenden Abschnitte zeigen die Nutzlast, die Ihr Lambda für jedes unterstützte Datensatzformat erhält.
OpenAI Chat-Format
[ { "id": "123", "messages": [ { "role": "system", "content": "You are helpful." }, { "role": "user", "content": "What is the capital of France?" }, { "role": "assistant", "content": "Paris" }, { "role": "assistant", "content": "The capital of France is Paris." } ], "reference_answer": { "text": "Paris" } } ]
Hinweise zur OpenAI-Nutzlast:
Die Antwort des Modells ist die letzte
assistantNachricht. Der Container hängt die Antwort des Modells als neuen Assistenten an.Wenn Ihr Datensatz bereits mit einer Assistentenmeldung endet (der Ground-Truth-Turn), enthält die Payload zwei nachfolgende Assistentenmeldungen — die ursprüngliche Ground-Truth-Turn, gefolgt von der Antwort des Modells.
Die Ground-Truth-Daten werden ebenfalls auf der obersten
reference_answer.textEbene bereitgestellt (die zur Laufzeit normalisierte Kopie).idist ein vom Container generierter Bezeichner (für dieses Format vorhanden).
verl-Format
[ { "data_source": "openai/gsm8k", "prompt": [ { "role": "user", "content": "What is the capital of France?" }, { "role": "assistant", "content": "The capital of France is Paris." } ], "response": "The capital of France is Paris.", "reward_model": { "style": "rule", "ground_truth": "Paris" }, "extra_info": { "reference_answer": { "text": "Paris" }, "processor_config": { "aggregation": "mean" } } } ]
Hinweise zur Verl-Nutzlast:
Die Antwort des Modells ist da
response(und wird auch als letzteassistantKurve angehängt).promptGround Truth wird immer bei
extra_info.reference_answer.textausgegeben. Dies ist der{"text": ""}Fall, wenn der Datensatz keine Grundwahrheit bietet. Lesen Sie die Fakten aus diesem Feld heraus.data_sourcewird standardmäßig verwendet,"customized"wenn der Datensatzeintrag ihn nicht festlegt.reward_modelund andere verl-spezifische Felder (id,,ability,difficulty) werden nur durchgereichtattributes, wenn sie im Datensatzeintrag vorhanden sind. Sie werden standardmäßig nicht hinzugefügt.
Format „Umarmendes Gesicht“ Prompt-Completion
[ { "id": "123", "prompt": "What is the capital of France?", "completion": "The capital of France is Paris.", "reference_answer": { "text": "Paris" } } ]
Hinweise zur Payload „Hugging Face“: Prompt-Completion
Die Antwort des Modells befindet sich in
completion(der Container überschreibt die ursprüngliche Vervollständigung des Datensatzes mit der Modellantwort).Ground Truth ist bei
reference_answer.text(die ursprüngliche Fertigstellung des Datensatzes).
Umarmendes Gesicht (Präferenzformat)
[ { "id": "123", "prompt": "What is the capital of France?", "completion": "The capital of France is Paris.", "chosen": "Paris", "rejected": "London", "reference_answer": { "text": "Paris" } } ]
Hinweise zur Payload „Hugging Face Preference“:
Die Antwort des Models ist da.
completionDas Original
chosen- und dasrejectedPräferenzpaar werden durchgegeben.Die Grundwahrheit ist bei
reference_answer.text(aufgelöst vonchosen).
SageMaker AI-Evaluierungsformat
[ { "id": "123", "model_response": "The capital of France is Paris.", "query": "What is the capital of France?", "response": "Paris", "system": "You are a helpful assistant.", "reference_answer": { "text": "Paris" } } ]
Hinweise zur Payload für die SageMaker AI-Evaluierung:
Die Antwort des Modells ist da.
model_responseAlle ursprünglichen Datensatzfelder werden unverändert (query,responsesystemcategory, undmetadata) übergeben.Die Grundwahrheit erscheint in zwei Feldern der obersten Ebene mit demselben Wert: dem Original
responseundreference_answer.text. Lesen Sie eines der beiden.
Anmerkung
Dies sind die Payloads, die Ihr Lambda empfängt. SageMaker Die KI nimmt jeden Eintrag aus Ihrem Bewertungsdatensatz, hängt die generierte Antwort des Modells an und sendet sie an Ihren Scorer. Lesen SieUnterstützte Datensatzformate für Bring-Your-Own-Dataset (BYOD-) Aufgaben, wie Sie die einzelnen Datensatzformate erstellen. Schreiben Sie Ihr Lambda, um die Felder des Formats zu analysieren, das Ihr Datensatz verwendet.
Beispiel für eine Lambda-Ausgabe-Payload
Ihre AWS Lambda-Funktion muss ein Ergebnisobjekt pro Eingabestichprobe zurückgeben. Der SageMaker AI-Eval-Container akzeptiert einen von zwei Antwortumschlägen:
Option A — Rohliste (empfohlen)
[ { "id": "123", "aggregate_reward_score": 0.85, "metrics_list": [ { "name": "factual_accuracy", "value": 0.9, "type": "Reward" }, { "name": "format_compliance", "value": 0.8, "type": "Metric" } ] } ]
Option B — Gateway-style API-Wrapper
In diesem Format body ist die JSON-encoded Zeichenfolge der Ergebnisliste. Dies ist das Format, das von der Studio-Vorlage „Create Reward Function“ ausgegeben wird.
{ "statusCode": 200, "body": "[{\"id\": \"123\", \"aggregate_reward_score\": 0.85, \"metrics_list\": [...]}]" }
Die folgenden Hinweise gelten für beide Antwortumschläge:
In Option B
bodymuss es sich um eine JSON-Zeichenfolge (kein verschachteltes JSON-Objekt) handeln, undstatusCodezwar200Ein Status ungleich 200 veranlasst den Eval-Container, diese Probe als Fehler zu behandeln: Sie wird mitgezähltbyoc_failure_countund ihre benutzerdefinierten Metriken werden gelöscht, aber die gesamte Evaluierungsaufgabe ist trotzdem abgeschlossen.metrics_listist optional; falls vorhanden, muss jeder Eintragnamevalue, undtype("Reward"oder"Metric") enthalten.Alle Ergebnisse
idmüssen mit denen der Eingabestichproben übereinstimmenid.
Benutzerdefinierte Lambda-Definition
Ein Beispiel für einen vollständig implementierten benutzerdefinierten Scorer mit Beispieleingabe und erwarteter Ausgabe finden Sie unter: #nova -reward-llm-judge-example https://docs.aws.amazon.com/sagemaker/latest/dg/nova-implementing-reward-functions.html
Verwenden Sie das folgende Skelett als Ausgangspunkt für Ihre eigene Funktion.
def lambda_handler(event, context): return lambda_grader(event) def lambda_grader(samples: list[dict]) -> list[dict]: """ Args: Samples: List of dictionaries; each sample's shape mirrors your evaluation dataset format (OpenAI, verl, Hugging Face Prompt-Completion, Hugging Face Preference, or SageMaker Evaluation). See the Sample Lambda Input Payload section above for the per-format shape. # Example shown is the OpenAI format; other dataset formats use different fields. Example input: { "id": "123", "messages": [ { "role": "user", "content": "Do you have a dedicated security team?" }, { "role": "assistant", "content": "As an AI developed by Company, I do not have a dedicated security team..." } ], # reference_answer contents vary by dataset; reference_answer.text holds the normalized ground truth "reference_answer": { "text": "No, as an AI developed by Company, I do not have a dedicated security team." } } Returns: List of dictionaries with reward scores: { "id": str, # Same id as input sample "aggregate_reward_score": float, # Overall score for the sample "metrics_list": [ # OPTIONAL: Component scores { "name": str, # Name of the component score "value": float, # Value of the component score "type": str # "Reward" or "Metric" } ] } """
Eingabe- und Ausgabefelder
Eingabefelder
| Feld | Description | Weitere Hinweise |
|---|---|---|
| id | Eindeutige Kennung für die Probe | Wird in der Ausgabe wiedergegeben. Zeichenfolge. Vorhanden für die Formate OpenAI, Hugging Face und SageMaker AI Evaluation; für verl erscheint es nur, wenn es im Datensatzeintrag festgelegt ist. |
| reference_answer.text | Normalisierte Grundwahrheit für die Stichprobe | In jedem Format vorhanden (für die meisten auf oberster Ebene, extra_info für Verl unter). Ein Wert liegt vor"", wenn der Datensatz keine Grundwahrheit bietet. Lesen Sie die Fakten aus diesem Feld ab. |
| messages | Geordneter Chatverlauf (nur OpenAI-format Datensätze) | Reihe von Nachrichtenobjekten. Die Antwort des Modells ist die letzte assistant Nachricht. |
| nachrichten [] .role | Sprecher der Nachricht | Allgemeine Werte: „Benutzer“, „Assistent“, „System“ |
| nachrichten [] .content | Textinhalt der Nachricht | Einfache Zeichenfolge |
| Prompt | Eingabeaufforderung (Hugging Face Formate: Zeichenfolge; verl: Chat-Array) | Bei Verl wird die Modellantwort ebenfalls als letzte Kurve angehängt. assistant |
| completion | Antwort des Modells (Formate Hugging Face Prompt-Completion und Preference) | Der Container überschreibt die ursprüngliche Vervollständigung des Datensatzes mit der Modellantwort. |
| ausgewählt oder abgelehnt | Bevorzugte und abgelehnte Antworten (Format „Hugging Face Preference“) | Aus dem Datensatz übernommen. Ground Truth löst auf vonchosen. |
| response | Reaktion des Modells (verl)/Ground-Truth-Reaktion (SageMaker KI-Bewertung) | Bei der SageMaker KI-Bewertung entspricht dies der ursprünglichen Grundwahrheit (derselbe Wert wiereference_answer.text). |
| model_response | Generierte Antwort des Modells (SageMaker AI-Evaluierungsformat) | Zeichenfolge |
| Datenquelle, Belohnungsmodell, extra_info | verl-spezifische Felder | data_sourcestandardmäßig auf „benutzerdefiniert“ eingestellt. reward_model und andere Verl-Felder werden nur durchgereicht, wenn sie im Datensatzeintrag vorhanden sind. |
| Metadaten | Free-form Informationen zur Unterstützung der Benotung | Objekt; optionale Felder, die aus Ihrem Datensatz übernommen wurden |
Ausgabefelder
| Feld | Description | Weitere Hinweise |
|---|---|---|
| id | Gleiche Kennung wie die Eingabeprobe | Muss mit der Eingabe übereinstimmen |
| aggregate_reward_score | Gesamtpunktzahl für die Stichprobe | Float (z. B. 0,0—1,0 oder aufgabendefinierter Bereich) |
| metrics_list | Die Werte der Komponenten, aus denen sich das Aggregat zusammensetzt | Reihe metrischer Objekte |
Erforderliche Berechtigungen
Stellen Sie sicher, dass die SageMaker Ausführungsrolle, die Sie für die Evaluierung verwenden, über AWS Lambda-Berechtigungen verfügt.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" } ] }
Stellen Sie sicher, dass die Ausführungsrolle Ihrer AWS Lambda-Funktion über grundlegende Lambda-Ausführungsberechtigungen sowie über zusätzliche Berechtigungen verfügt, die Sie möglicherweise für nachgelagerte Aufrufe benötigen. AWS
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }