

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.

# Einreichung von Aufträgen zur Modellbewertung
<a name="model-customize-open-weight-evaluation"></a>

In diesem Abschnitt wird die Evaluierung benutzerdefinierter Modelle mit offenem Gewicht beschrieben. Hier erhalten Sie einen Überblick über den Prozess zur Einreichung von Bewertungsaufträgen. Zusätzliche Ressourcen stehen für fortgeschrittenere Anwendungsfälle zur Einreichung von Bewertungsaufträgen zur Verfügung.

**Topics**
+ [Erste Schritte](model-customize-evaluation-getting-started.md)
+ [Bewertungsarten und Einreichung von Job](model-customize-evaluation-types.md)
+ [Formate für Bewertungsmetriken](model-customize-evaluation-metrics-formats.md)
+ [Unterstützte Datensatzformate für Bring-Your-Own-Dataset (BYOD-) Aufgaben](model-customize-evaluation-dataset-formats.md)
+ [Evaluieren Sie mit voreingestellten und benutzerdefinierten Punktezählern](model-customize-evaluation-preset-custom-scorers.md)

# Erste Schritte
<a name="model-customize-evaluation-getting-started"></a>

## Reichen Sie einen Bewertungsjob über SageMaker Studio ein
<a name="model-customize-evaluation-studio"></a>

### Schritt 1: Navigieren Sie auf Ihrer Modellkarte zur Bewertung
<a name="model-customize-evaluation-studio-step1"></a>

Nachdem Sie Ihr Modell angepasst haben, navigieren Sie von Ihrer Modellkarte aus zur Evaluierungsseite.

Informationen zum Training mit maßgeschneiderten Modellen mit offenem Gewicht finden Sie unter: [https://docs.aws.amazon.com/sagemaker/latest/dg/model.html customize-open-weight-job](https://docs.aws.amazon.com/sagemaker/latest/dg/model-customize-open-weight-job.html)

SageMaker visualisiert Ihr individuelles Modell auf der Registerkarte Meine Modelle:

![\[Seite mit der Karte registrierter Modelle\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/getting-started-registered-model-card.png)


Wählen Sie „Aktuelle Version anzeigen“ und anschließend „Evaluieren“:

![\[Seite zur Modellanpassung\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/getting-started-evaluate-from-model-card.png)


### Schritt 2: Reichen Sie Ihren Bewertungsjob ein
<a name="model-customize-evaluation-studio-step2"></a>

Wählen Sie die Schaltfläche „Senden“ und reichen Sie Ihren Bewertungsjob ein. Dadurch wird ein minimaler MMLU-Benchmark-Job eingereicht.

Informationen zu den unterstützten Typen von Bewertungsaufträgen finden Sie unter. [Bewertungsarten und Einreichung von Job](model-customize-evaluation-types.md)

![\[Seite zur Einreichung von Bewertungsaufträgen\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/getting-started-benchmark-submission.png)


### Schritt 3: Verfolgen Sie den Fortschritt Ihres Bewertungsauftrags
<a name="model-customize-evaluation-studio-step3"></a>

Der Fortschritt Ihres Bewertungsauftrags wird auf der Registerkarte Bewertungsschritte nachverfolgt:

![\[Der Fortschritt Ihres Bewertungsauftrags\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/getting-started-benchmark-tracking.png)


### Schritt 4: Sehen Sie sich die Ergebnisse Ihrer Bewertungsjobs an
<a name="model-customize-evaluation-studio-step4"></a>

Die Ergebnisse Ihrer Bewertungsaufgabe werden auf der Registerkarte Bewertungsergebnisse visualisiert:

![\[Ihre Bewertungs-Job-Metriken\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/getting-started-benchmark-results.png)


### Schritt 5: Sehen Sie sich Ihre abgeschlossenen Bewertungen an
<a name="model-customize-evaluation-studio-step5"></a>

Ihr abgeschlossener Bewertungsauftrag wird unter Bewertungen Ihrer Modellkarte angezeigt:

![\[Ihre abgeschlossenen Bewertungsaufträge\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/getting-started-benchmark-completed-model-card.png)


## Reichen Sie Ihren Evaluierungsjob über das SageMaker Python SDK ein
<a name="model-customize-evaluation-sdk"></a>

### Schritt 1: Erstellen Sie Ihr BenchMarkEvaluator
<a name="model-customize-evaluation-sdk-step1"></a>

Übergeben Sie Ihr registriertes trainiertes Modell, den AWS S3-Ausgabespeicherort und den MLFlow Ressourcen-ARN an `BenchMarkEvaluator` und initialisieren Sie es dann.

```
from sagemaker.train.evaluate import BenchMarkEvaluator, Benchmark  
  
evaluator = BenchMarkEvaluator(  
    benchmark=Benchmark.MMLU,  
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",  
    s3_output_path="s3://<bucket-name>/<prefix>/eval/",  
    mlflow_resource_arn="arn:aws:sagemaker:<region>:<account-id>:mlflow-tracking-server/<tracking-server-name>",  
    evaluate_base_model=False  
)
```

### Schritt 2: Reichen Sie Ihren Bewertungsjob ein
<a name="model-customize-evaluation-sdk-step2"></a>

Rufen Sie die `evaluate()` Methode auf, um den Bewertungsjob einzureichen.

```
execution = evaluator.evaluate()
```

### Schritt 3: Verfolgen Sie den Fortschritt Ihres Bewertungsauftrags
<a name="model-customize-evaluation-sdk-step3"></a>

Rufen Sie die `wait()` Ausführungsmethode auf, um eine Live-Aktualisierung des Fortschritts der Evaluierungsaufgabe zu erhalten.

```
execution.wait(target_status="Succeeded", poll=5, timeout=3600)
```

### Schritt 4: Sehen Sie sich die Ergebnisse Ihrer Bewertungsjobs an
<a name="model-customize-evaluation-sdk-step4"></a>

Rufen Sie die `show_results()` Methode auf, um die Ergebnisse Ihrer Bewertungsaufgabe anzuzeigen.

```
execution.show_results()
```

# Bewertungsarten und Einreichung von Job
<a name="model-customize-evaluation-types"></a>

## Benchmarking mit standardisierten Datensätzen
<a name="model-customize-evaluation-benchmarking"></a>

Verwenden Sie den Typ Benchmark-Evaluierung, um die Qualität Ihres Modells anhand standardisierter Benchmark-Datensätze, einschließlich beliebter Datensätze wie MMLU und BBH, zu bewerten.


| Benchmark | Benutzerdefinierter Datensatz wird unterstützt | Modalitäten | Description | Kennzahlen | Strategie | Unteraufgabe verfügbar | 
| --- | --- | --- | --- | --- | --- | --- | 
| mmlu | Nein | Text | Sprachverständnis für mehrere Aufgaben – testet Wissen in 57 Themen. | Richtigkeit | zs\$1cot | Ja | 
| mmlu\$1pro | Nein | Text | MMLU – professioneller Bereich – konzentriert sich auf Fachbereiche wie Recht, Medizin, Rechnungswesen und Ingenieurwesen. | Richtigkeit | zs\$1cot | Nein | 
| bbh | Nein | Text | Fortschrittliche Argumentationsaufgaben – eine Sammlung herausfordernder Probleme, die kognitive Fähigkeiten und Fähigkeiten zur Problemlösung auf höherem Niveau auf die Probe stellen. | Richtigkeit | fs\$1cot | Ja | 
| gpqa | Nein | Text | Beantwortung allgemeiner Fragen zur Physik – beurteilt das Verständnis physikalischer Konzepte und die damit verbundenen Fähigkeiten zur Problemlösung. | Richtigkeit | zs\$1cot | Nein | 
| math | Nein | Text | Mathematische Problemlösung – bewertet mathematische Überlegungen in verschiedenen Themenbereichen wie Algebra, Infinitesimalrechnung und Textaufgaben. | exact\$1match | zs\$1cot | Ja | 
| strong\$1reject | Nein | Text | Aufgabe zur Qualitätskontrolle — Testet die Fähigkeit des Modells, unangemessene, schädliche oder falsche Inhalte zu erkennen und abzulehnen. | deflection | zs | Ja | 
| ifeval | Nein | Text | Bewertung der Anweisungsbefolgung – Prüft, wie genau ein Modell die Anweisungen befolgt und die Aufgaben gemäß den Spezifikationen ausführt. | Richtigkeit | zs | Nein | 

Weitere Informationen zu BYOD-Formaten finden Sie unter. [Unterstützte Datensatzformate für Bring-Your-Own-Dataset (BYOD-) Aufgaben](model-customize-evaluation-dataset-formats.md)

### Verfügbare Unteraufgaben
<a name="model-customize-evaluation-benchmarking-subtasks"></a>

Im Folgenden sind verfügbare Unteraufgaben für die Modellevaluierung in mehreren Bereichen aufgeführt, darunter MMLU (Massive Multitask Language Understanding), BBH (Big Bench Hard) und MATH. StrongReject Diese Unteraufgaben ermöglichen es Ihnen, die Leistung Ihres Modells in Bezug auf bestimmte Fähigkeiten und Wissensbereiche zu bewerten.

**MMLU-Unteraufgaben**

```
MMLU_SUBTASKS = [
    "abstract_algebra",
    "anatomy",
    "astronomy",
    "business_ethics",
    "clinical_knowledge",
    "college_biology",
    "college_chemistry",
    "college_computer_science",
    "college_mathematics",
    "college_medicine",
    "college_physics",
    "computer_security",
    "conceptual_physics",
    "econometrics",
    "electrical_engineering",
    "elementary_mathematics",
    "formal_logic",
    "global_facts",
    "high_school_biology",
    "high_school_chemistry",
    "high_school_computer_science",
    "high_school_european_history",
    "high_school_geography",
    "high_school_government_and_politics",
    "high_school_macroeconomics",
    "high_school_mathematics",
    "high_school_microeconomics",
    "high_school_physics",
    "high_school_psychology",
    "high_school_statistics",
    "high_school_us_history",
    "high_school_world_history",
    "human_aging",
    "human_sexuality",
    "international_law",
    "jurisprudence",
    "logical_fallacies",
    "machine_learning",
    "management",
    "marketing",
    "medical_genetics",
    "miscellaneous",
    "moral_disputes",
    "moral_scenarios",
    "nutrition",
    "philosophy",
    "prehistory",
    "professional_accounting",
    "professional_law",
    "professional_medicine",
    "professional_psychology",
    "public_relations",
    "security_studies",
    "sociology",
    "us_foreign_policy",
    "virology",
    "world_religions"
]
```

**BBH-Unteraufgaben**

```
BBH_SUBTASKS = [
    "boolean_expressions",
    "causal_judgement",
    "date_understanding",
    "disambiguation_qa",
    "dyck_languages",
    "formal_fallacies",
    "geometric_shapes",
    "hyperbaton",
    "logical_deduction_five_objects",
    "logical_deduction_seven_objects",
    "logical_deduction_three_objects",
    "movie_recommendation",
    "multistep_arithmetic_two",
    "navigate",
    "object_counting",
    "penguins_in_a_table",
    "reasoning_about_colored_objects",
    "ruin_names",
    "salient_translation_error_detection",
    "snarks",
    "sports_understanding",
    "temporal_sequences",
    "tracking_shuffled_objects_five_objects",
    "tracking_shuffled_objects_seven_objects",
    "tracking_shuffled_objects_three_objects",
    "web_of_lies",
    "word_sorting"
]
```

**Mathematische Unteraufgaben**

```
MATH_SUBTASKS = [
    "algebra", 
    "counting_and_probability", 
    "geometry",
    "intermediate_algebra", 
    "number_theory", 
    "prealgebra", 
    "precalculus"
]
```

**StrongReject Unteraufgaben**

```
STRONG_REJECT_SUBTASKS = [
    "gcg_transfer_harmbench", 
    "gcg_transfer_universal_attacks",
    "combination_3", 
    "combination_2", 
    "few_shot_json", 
    "dev_mode_v2",
    "dev_mode_with_rant",
    "wikipedia_with_title", 
    "distractors",
    "wikipedia",
     "style_injection_json", 
    "style_injection_short",
    "refusal_suppression", 
    "prefix_injection", 
    "distractors_negated",
    "poems", 
    "base64", 
    "base64_raw", "
    base64_input_only",
    "base64_output_only", 
    "evil_confidant", 
    "aim", 
    "rot_13",
    "disemvowel", 
    "auto_obfuscation", 
    "auto_payload_splitting", 
    "pair",
    "pap_authority_endorsement", 
    "pap_evidence_based_persuasion",
    "pap_expert_endorsement", 
    "pap_logical_appeal", 
    "pap_misrepresentation"
]
```

### Reichen Sie Ihren Benchmark-Job ein
<a name="model-customize-evaluation-benchmarking-submit"></a>

------
#### [ SageMaker Studio ]

![\[Eine minimale Konfiguration für das Benchmarking über Studio SageMaker\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/benchmark-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
from sagemaker.train.evaluate import get_benchmarks
from sagemaker.train.evaluate import BenchMarkEvaluator

Benchmark = get_benchmarks()

# Create evaluator with MMLU benchmark
evaluator = BenchMarkEvaluator(
benchmark=Benchmark.MMLU,
model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
s3_output_path="s3://<bucket-name>/<prefix>/",
evaluate_base_model=False
)

execution = evaluator.evaluate()
```

Weitere Informationen zur Einreichung von Bewertungsaufträgen über das SageMaker Python-SDK finden Sie unter: [https://sagemaker.readthedocs.io/en/stable/model\$1customization/evaluation.html](https://sagemaker.readthedocs.io/en/stable/model_customization/evaluation.html)

------

## Evaluierung mit umfangreichem Sprachmodell als Richter (LLMAJ)
<a name="model-customize-evaluation-llmaj"></a>

Verwenden Sie die Evaluierung LLM-as-a-judge (LLMAJ), um ein anderes Frontier-Modell zu nutzen, um die Antworten Ihres Zielmodells zu bewerten. Sie können AWS Bedrock-Modelle als Richter verwenden, indem Sie die `create_evaluation_job` API aufrufen, um den Bewertungsjob zu starten.

[Weitere Informationen zu den unterstützten Richtermodellen finden Sie unter: -supported.html https://docs.aws.amazon.com/bedrock/ latest/userguide/models](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html)

Sie können zwei verschiedene metrische Formate verwenden, um die Bewertung zu definieren:
+ **Integrierte Metriken:** Nutzen Sie die integrierten Metriken von AWS Bedrock, um die Qualität der Inferenzantworten Ihres Modells zu analysieren. [Weitere Informationen finden Sie unter: .html https://docs.aws.amazon.com/bedrock/ latest/userguide/model evaluation-type-judge-prompt](https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation-type-judge-prompt.html)
+ **Benutzerdefinierte Metriken:** Definieren Sie Ihre eigenen benutzerdefinierten Metriken im benutzerdefinierten Metrikformat von Bedrock Evaluation, um die Qualität der Inferenzantworten Ihres Modells anhand Ihrer eigenen Anweisungen zu analysieren. [Weitere Informationen finden Sie unter: https://docs.aws.amazon.com/bedrock/ latest/userguide/model - -formats.html evaluation-custom-metrics-prompt](https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation-custom-metrics-prompt-formats.html)

### Reichen Sie einen LLMAJ-Job mit integrierten Metriken ein
<a name="model-customize-evaluation-llmaj-builtin"></a>

------
#### [ SageMaker Studio ]

![\[Eine Minimalkonfiguration für LLMAJ-Benchmarking über Studio SageMaker\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/llmaj-as-judge-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
from sagemaker.train.evaluate import LLMAsJudgeEvaluator

evaluator = LLMAsJudgeEvaluator(
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    evaluator_model="<bedrock-judge-model-id>",
    dataset="s3://<bucket-name>/<prefix>/<dataset-file>.jsonl",
    builtin_metrics=["<builtin-metric-1>", "<builtin-metric-2>"],
    s3_output_path="s3://<bucket-name>/<prefix>/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

Weitere Informationen zur Einreichung von Bewertungsaufträgen über das SageMaker Python-SDK finden Sie unter: [https://sagemaker.readthedocs.io/en/stable/model\$1customization/evaluation.html](https://sagemaker.readthedocs.io/en/stable/model_customization/evaluation.html)

------

### Reichen Sie einen LLMAJ-Job mit benutzerdefinierten Metriken ein
<a name="model-customize-evaluation-llmaj-custom"></a>

Definieren Sie Ihre benutzerdefinierte (n) Metrik (en):

```
{
    "customMetricDefinition": {
        "name": "PositiveSentiment",
        "instructions": (
            "You are an expert evaluator. Your task is to assess if the sentiment of the response is positive. "
            "Rate the response based on whether it conveys positive sentiment, helpfulness, and constructive tone.\n\n"
            "Consider the following:\n"
            "- Does the response have a positive, encouraging tone?\n"
            "- Is the response helpful and constructive?\n"
            "- Does it avoid negative language or criticism?\n\n"
            "Rate on this scale:\n"
            "- Good: Response has positive sentiment\n"
            "- Poor: Response lacks positive sentiment\n\n"
            "Here is the actual task:\n"
            "Prompt: {{prompt}}\n"
            "Response: {{prediction}}"
        ),
        "ratingScale": [
            {"definition": "Good", "value": {"floatValue": 1}},
            {"definition": "Poor", "value": {"floatValue": 0}}
        ]
    }
}
```

Weitere Informationen finden Sie unter: [https://docs.aws.amazon.com/bedrock/latest/userguide/model- evaluation-custom-metrics-prompt -formats.html](https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation-custom-metrics-prompt-formats.html)

------
#### [ SageMaker Studio ]

![\[Laden Sie die benutzerdefinierte Metrik über Benutzerdefinierte Metriken > Benutzerdefinierte Metriken hinzufügen hoch\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/custom-llmaj-metrics-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
evaluator = LLMAsJudgeEvaluator(
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    evaluator_model="<bedrock-judge-model-id>",
    dataset="s3://<bucket-name>/<prefix>/<dataset-file>.jsonl",
    custom_metrics=custom_metric_dict = {
        "customMetricDefinition": {
            "name": "PositiveSentiment",
            "instructions": (
                "You are an expert evaluator. Your task is to assess if the sentiment of the response is positive. "
                "Rate the response based on whether it conveys positive sentiment, helpfulness, and constructive tone.\n\n"
                "Consider the following:\n"
                "- Does the response have a positive, encouraging tone?\n"
                "- Is the response helpful and constructive?\n"
                "- Does it avoid negative language or criticism?\n\n"
                "Rate on this scale:\n"
                "- Good: Response has positive sentiment\n"
                "- Poor: Response lacks positive sentiment\n\n"
                "Here is the actual task:\n"
                "Prompt: {{prompt}}\n"
                "Response: {{prediction}}"
            ),
            "ratingScale": [
                {"definition": "Good", "value": {"floatValue": 1}},
                {"definition": "Poor", "value": {"floatValue": 0}}
            ]
        }
    },
    s3_output_path="s3://<bucket-name>/<prefix>/",
    evaluate_base_model=False
)
```

------

## Benutzerdefinierte Punktezähler
<a name="model-customize-evaluation-custom-scorers"></a>

Definieren Sie Ihre eigene benutzerdefinierte Scorer-Funktion, um einen Bewertungsjob zu starten. Das System bietet zwei integrierte Punktezähler: Prime Math und Prime Code. Sie können auch Ihre eigene Scorer-Funktion mitbringen. Sie können Ihren Scorer-Funktionscode direkt kopieren oder Ihre eigene Lambda-Funktionsdefinition mit dem zugehörigen ARN mitbringen. Standardmäßig liefern beide Scorer-Typen Bewertungsergebnisse, die Standardmetriken wie F1-Score, ROUGE und BLEU enthalten.

Weitere Informationen zu integrierten und benutzerdefinierten Punktezählern und ihren jeweiligen Anforderungen/Verträgen finden Sie unter. [Evaluieren Sie mit voreingestellten und benutzerdefinierten Punktezählern](model-customize-evaluation-preset-custom-scorers.md)

### Registrieren Sie Ihren Datensatz
<a name="model-customize-evaluation-custom-scorers-register-dataset"></a>

Bringen Sie Ihren eigenen Datensatz für den benutzerdefinierten Punktezähler mit, indem Sie ihn als SageMaker Hub-Inhaltsdatensatz registrieren.

------
#### [ SageMaker Studio ]

Laden Sie in Studio Ihren Datensatz über die spezielle Datensatzseite hoch.

![\[Registrierter Bewertungsdatensatz in Studio SageMaker\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/dataset-registration-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

Laden Sie im SageMaker Python-SDK Ihren Datensatz über die spezielle Datensatzseite hoch.

```
from sagemaker.ai_registry.dataset import DataSet

dataset = DataSet.create(
    name="your-bring-your-own-dataset",
    source="s3://<bucket-name>/<prefix>/<dataset-file>.jsonl"
)
dataset.refresh()
```

------

### Reichen Sie einen integrierten Scorer-Job ein
<a name="model-customize-evaluation-custom-scorers-builtin"></a>

------
#### [ SageMaker Studio ]

![\[Wählen Sie zwischen Codeausführungen oder mathematischen Antworten für die integrierte benutzerdefinierte Bewertung\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/builtin-scorer-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
from sagemaker.train.evaluate import CustomScorerEvaluator
from sagemaker.train.evaluate import get_builtin_metrics

BuiltInMetric = get_builtin_metrics()

evaluator_builtin = CustomScorerEvaluator(
    evaluator=BuiltInMetric.PRIME_MATH,
    dataset="arn:aws:sagemaker:<region>:<account-id>:hub-content/<hub-content-id>/DataSet/your-bring-your-own-dataset/<version>",
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

Wählen Sie „Integrierte Bewertung“ `BuiltInMetric.PRIME_MATH` oder „Integrierte `BuiltInMetric.PRIME_CODE` Bewertung“.

------

### Reichen Sie einen benutzerdefinierten Scorer-Job ein
<a name="model-customize-evaluation-custom-scorers-custom"></a>

Definieren Sie eine benutzerdefinierte Belohnungsfunktion. Weitere Informationen finden Sie unter [Benutzerdefinierte Punktezähler (Bringen Sie Ihre eigenen Metriken mit)](model-customize-evaluation-preset-custom-scorers.md#model-customize-evaluation-custom-scorers-byom).

**Registrieren Sie die benutzerdefinierte Belohnungsfunktion**

------
#### [ SageMaker Studio ]

![\[Navigieren Sie zu SageMaker Studio > Assets > Evaluator > Evaluator erstellen > Belohnungsfunktion erstellen\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/custom-scorer-submission-sagemaker-studio.png)


![\[Reichen Sie den Bewertungsjob „Benutzerdefinierter Punktezähler“ ein und verweisen Sie dabei auf die registrierte voreingestellte Prämienfunktion unter Benutzerdefinierter Punktezähler > Benutzerdefinierte Metriken\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/custom-scorer-benchmark-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
from sagemaker.ai_registry.evaluator import Evaluator
from sagemaker.ai_registry.air_constants import REWARD_FUNCTION

evaluator = Evaluator.create(
    name = "your-reward-function-name",
    source="/path_to_local/custom_lambda_function.py",
    type = REWARD_FUNCTION
)
```

```
evaluator = CustomScorerEvaluator(
    evaluator=evaluator,
    dataset="s3://<bucket-name>/<prefix>/<dataset-file>.jsonl",
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

------

# Formate für Bewertungsmetriken
<a name="model-customize-evaluation-metrics-formats"></a>

Bewertung der Qualität Ihres Modells anhand dieser metrischen Formate:
+ Zusammenfassung der Modellbewertung
+ MLFlow
+ TensorBoard

## Zusammenfassung der Modellevaluierung
<a name="model-customize-evaluation-metrics-summary"></a>

Wenn Sie Ihren Bewertungsauftrag einreichen, geben Sie einen AWS S3-Ausgabeort an. SageMaker lädt die JSON-Datei mit der Bewertungszusammenfassung automatisch an den Speicherort hoch. Der S3-Pfad für die Benchmark-Zusammenfassung lautet wie folgt:

```
s3://<your-provide-s3-location>/<training-job-name>/output/output/<evaluation-job-name>/eval_results/
```

**Übergeben Sie den AWS S3-Standort**

------
#### [ SageMaker Studio ]

![\[Übergeben Sie den Speicherort des Ausgabeartefakts (AWS S3-URI)\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/s3-output-path-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
evaluator = BenchMarkEvaluator(
    benchmark=Benchmark.MMLU,
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/eval/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

------

Lesen Sie es direkt als `.json` vom AWS S3-Standort aus oder visualisieren Sie es automatisch in der Benutzeroberfläche:

```
{
  "results": {
    "custom|gen_qa_gen_qa|0": {
      "rouge1": 0.9152812653966208,
      "rouge1_stderr": 0.003536439199232507,
      "rouge2": 0.774569918517409,
      "rouge2_stderr": 0.006368825746765958,
      "rougeL": 0.9111255645823356,
      "rougeL_stderr": 0.003603841524881021,
      "em": 0.6562150055991042,
      "em_stderr": 0.007948251702846893,
      "qem": 0.7522396416573348,
      "qem_stderr": 0.007224355240883467,
      "f1": 0.8428757602152095,
      "f1_stderr": 0.005186300690881584,
      "f1_score_quasi": 0.9156170336744968,
      "f1_score_quasi_stderr": 0.003667700152375464,
      "bleu": 100.00000000000004,
      "bleu_stderr": 1.464411857851008
    },
    "all": {
      "rouge1": 0.9152812653966208,
      "rouge1_stderr": 0.003536439199232507,
      "rouge2": 0.774569918517409,
      "rouge2_stderr": 0.006368825746765958,
      "rougeL": 0.9111255645823356,
      "rougeL_stderr": 0.003603841524881021,
      "em": 0.6562150055991042,
      "em_stderr": 0.007948251702846893,
      "qem": 0.7522396416573348,
      "qem_stderr": 0.007224355240883467,
      "f1": 0.8428757602152095,
      "f1_stderr": 0.005186300690881584,
      "f1_score_quasi": 0.9156170336744968,
      "f1_score_quasi_stderr": 0.003667700152375464,
      "bleu": 100.00000000000004,
      "bleu_stderr": 1.464411857851008
    }
  }
}
```

![\[Beispiele für Leistungskennzahlen für einen benutzerdefinierten Gen-QA-Benchmark, visualisiert in Studio SageMaker\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/gen-qa-metrics-visualization-sagemaker-studio.png)


## MLFlow Protokollierung
<a name="model-customize-evaluation-metrics-mlflow"></a>

**Geben Sie Ihren SageMaker MLFlow Ressourcen-ARN ARN**

SageMaker Studio verwendet die MLFlow Standard-App, die auf jeder Studio-Domäne bereitgestellt wird, wenn Sie die Funktion zur Modellanpassung zum ersten Mal verwenden. SageMaker Studio verwendet bei der Einreichung von Bewertungsaufträgen den mit der MLflow App verknüpften ARN.

Sie können Ihren Bewertungsauftrag auch einreichen und explizit einen MLFlow Ressourcen-ARN angeben, um Metriken server/app zur Echtzeitanalyse an das zugehörige Tracking zu streamen.

**SageMaker Python-SDK**

```
evaluator = BenchMarkEvaluator(
    benchmark=Benchmark.MMLU,
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/eval/",
    mlflow_resource_arn="arn:aws:sagemaker:<region>:<account-id>:mlflow-tracking-server/<tracking-server-name>",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

Visualisierung von Metriken auf Modell- und Systemebene:

![\[Beispiel für Fehler und Genauigkeit auf Modellebene für MMLU-Benchmarking-Aufgaben\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/model-metrics-mlflow.png)


![\[Beispiel für integrierte Metriken für die LLMAJ-Benchmarking-Aufgabe\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/llmaj-metrics-mlflow.png)


![\[Beispiel für Metriken auf Systemebene für die MMLU-Benchmarking-Aufgabe\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/system-metrics-mlflow.png)


## TensorBoard
<a name="model-customize-evaluation-metrics-tensorboard"></a>

Reichen Sie Ihren Bewertungsauftrag mit einem AWS S3-Ausgabespeicherort ein. SageMaker lädt automatisch eine TensorBoard Datei an den Speicherort hoch.

SageMaker lädt die TensorBoard Datei am folgenden Speicherort auf AWS S3 hoch:

```
s3://<your-provide-s3-location>/<training-job-name>/output/output/<evaluation-job-name>/tensorboard_results/eval/
```

**Übergeben Sie den AWS S3-Standort wie folgt**

------
#### [ SageMaker Studio ]

![\[Übergeben Sie den Speicherort des Ausgabeartefakts (AWS S3-URI)\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/s3-output-path-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
evaluator = BenchMarkEvaluator(
    benchmark=Benchmark.MMLU,
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/eval/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

------

**Beispiel für Metriken auf Modellebene**

![\[SageMaker TensorBoard Anzeige der Ergebnisse eines Benchmarking-Jobs\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/metrics-in-tensorboard.png)


# Unterstützte Datensatzformate für Bring-Your-Own-Dataset (BYOD-) Aufgaben
<a name="model-customize-evaluation-dataset-formats"></a>

Für die Typen „Benutzerdefinierter Punktezähler“ und LLM-as-judge „Auswertung“ ist eine JSONL-Datei mit benutzerdefiniertem Datensatz erforderlich, die sich in S3 befindet. AWS Sie müssen die Datei als JSON Lines-Datei bereitstellen, die einem der folgenden unterstützten Formate entspricht. Die Beispiele in diesem Dokument wurden aus Gründen der Übersichtlichkeit erweitert.

Jedes Format hat seine eigenen Nuancen, aber mindestens alle erfordern eine Benutzereingabe.


**Pflichtfelder**  

| Feld | Erforderlich | 
| --- | --- | 
| Benutzeraufforderung | Ja | 
| System-Prompt | Nein | 
| Grundlegende Wahrheit | Nur für Custom Scorer | 
| Kategorie | Nein | 

**1. OpenAI-Format**

```
{
    "messages": [
        {
            "role": "system",    # System prompt (looks for system role)
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",       # Query (looks for user role)
            "content": "Hello!"
        },
        {
            "role": "assistant",  # Ground truth (looks for assistant role)
            "content": "Hello to you!"
        }
    ]
}
```

**2. SageMaker **Bewertung

```
{
   "system":"You are an English major with top marks in class who likes to give minimal word responses: ",
   "query":"What is the symbol that ends the sentence as a question",
   "response":"?", # Ground truth
   "category": "Grammar"
}
```

**3. HuggingFace Sofortiger Abschluss**

Sowohl Standard- als auch Konversationsformate werden unterstützt.

```
# Standard

{
    "prompt" : "What is the symbol that ends the sentence as a question", # Query
    "completion" : "?" # Ground truth
}

# Conversational
{
    "prompt": [
        {
            "role": "user", # Query (looks for user role)
            "content": "What is the symbol that ends the sentence as a question"
        }
    ],
    "completion": [
        {
            "role": "assistant", # Ground truth (looks for assistant role)
            "content": "?"
        }
    ]
}
```

**4. HuggingFace Präferenz**

Support sowohl für das Standardformat (Zeichenfolge) als auch für das Konversationsformat (Nachrichtenarray).

```
# Standard: {"prompt": "text", "chosen": "text", "rejected": "text"}
{
     "prompt" : "The sky is", # Query
     "chosen" : "blue", # Ground truth
     "rejected" : "green"
}

# Conversational:
{
    "prompt": [
        {
            "role": "user", # Query (looks for user role)
            "content": "What color is the sky?"
        }
    ],
    "chosen": [
        {
            "role": "assistant", # Ground truth (looks for assistant role)
            "content": "It is blue."
        }
    ],
    "rejected": [
        {
            "role": "assistant",
            "content": "It is green."
        }
    ]
}
```

**5. Verl-Format**

Das Verl-Format (sowohl aktuelle als auch ältere Formate) wird für Reinforcement-Learning-Anwendungsfälle unterstützt. Verl-Dokumente als Referenz: [https://verl.readthedocs.io/en/latest/preparation/prepare\$1data.html](https://verl.readthedocs.io/en/latest/preparation/prepare_data.html)

Benutzer des VERL-Formats geben in der Regel keine Ground-Truth-Antwort. Wenn Sie trotzdem eine angeben möchten, verwenden Sie eines der Felder `extra_info.answer` oder`reward_model.ground_truth`; `extra_info` hat Vorrang.

SageMaker behält die folgenden VERL-spezifischen Felder als Metadaten bei, sofern vorhanden:
+ `id`
+ `data_source`
+ `ability`
+ `reward_model`
+ `extra_info`
+ `attributes`
+ `difficulty`

```
# Newest VERL format where `prompt` is an array of messages.
{
  "data_source": "openai/gsm8k",
  "prompt": [
    {
      "content": "You are a helpful math tutor who explains solutions to questions step-by-step.",
      "role": "system"
    },
    {
      "content": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May? Let's think step by step and output the final answer after \"####\".",
      "role": "user"
    }
  ],
  "ability": "math",
  "extra_info": {
    "answer": "Natalia sold 48/2 = <<48/2=24>>24 clips in May.\nNatalia sold 48+24 = <<48+24=72>>72 clips altogether in April and May.\n#### 72",
    "index": 0,
    "question": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?",
    "split": "train"
  },
  "reward_model": {
    "ground_truth": "72" # Ignored in favor of extra_info.answer
  }
}

# Legacy VERL format where `prompt` is a string. Also supported.
{
  "data_source": "openai/gsm8k",
  "prompt": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May? Let's think step by step and output the final answer after \"####\".",
  "extra_info": {
    "answer": "Natalia sold 48/2 = <<48/2=24>>24 clips in May.\nNatalia sold 48+24 = <<48+24=72>>72 clips altogether in April and May.\n#### 72",
    "index": 0,
    "question": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?",
    "split": "train"
  }
}
```

# Evaluieren Sie mit voreingestellten und benutzerdefinierten Punktezählern
<a name="model-customize-evaluation-preset-custom-scorers"></a>

Wenn Sie den Bewertungstyp Custom Scorer verwenden, unterstützt SageMaker Evaluation zwei integrierte Scorer (auch als „Belohnungsfunktionen“ bezeichnet), Prime Math und Prime Code, die aus der [Volcengine/verl RL-Trainingsbibliothek](https://github.com/volcengine/verl) stammen, oder Ihren eigenen benutzerdefinierten Scorer, der als Lambda-Funktion implementiert ist.

## Integrierte Punktezähler
<a name="model-customize-evaluation-builtin-scorers"></a>

**Erstklassige Mathematik**

Der Prime Math Scorer erwartet einen benutzerdefinierten JSONL-Datensatz mit Einträgen, die eine mathematische Frage als Antwort prompt/query und die richtige Antwort als Ground Truth enthalten. Bei dem Datensatz kann es sich um jedes der unter genannten unterstützten Formate handeln. [Unterstützte Datensatzformate für Bring-Your-Own-Dataset (BYOD-) Aufgaben](model-customize-evaluation-dataset-formats.md)

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
}
```

**Prime-Code**

Der Prime-Code-Scorer erwartet einen benutzerdefinierten JSONL-Datensatz mit Einträgen, die ein Codierungsproblem enthalten, und Testfällen, die im Feld angegeben sind. `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 Metriken mit)
<a name="model-customize-evaluation-custom-scorers-byom"></a>

Passen Sie Ihren Arbeitsablauf zur Modellevaluierung mit einer benutzerdefinierten Nachverarbeitungslogik vollständig an, sodass 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
<a name="model-customize-evaluation-custom-scorers-lambda-input"></a>

Ihr benutzerdefiniertes AWS Lambda erwartet Eingaben im OpenAI-Format. Beispiel:

```
{
    "id": "123",
    "messages": [
        {
            "role": "user",
            "content": "Do you have a dedicated security team?"
        },
        {
            "role": "assistant",
            "content": "As an AI developed by Amazon, I do not have a dedicated security team..."
        }
    ],
    "reference_answer": {
        "compliant": "No",
        "explanation": "As an AI developed by Company, I do not have a traditional security team..."
    }
}
```

### Beispiel für eine Payload für die Lambda-Ausgabe
<a name="model-customize-evaluation-custom-scorers-lambda-output"></a>

Der SageMaker Evaluierungscontainer erwartet, dass Ihre Lambda-Antworten diesem Format folgen:

```
{
    "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"
        }
    ]
}
```

### Benutzerdefinierte Lambda-Definition
<a name="model-customize-evaluation-custom-scorers-lambda-definition"></a>

[Ein Beispiel für einen vollständig implementierten benutzerdefinierten Punktezähler mit Beispieleingabe und erwarteter Ausgabe finden Sie unter: https://docs.aws.amazon.com/sagemaker/ latest/dg/nova - .html\$1 -example implementing-reward-functions nova-reward-llm-judge](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-implementing-reward-functions.html#nova-reward-llm-judge-example)

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 in OpenAI format
            
        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..."
                }
            ],
            # This section is the same as your training dataset
            "reference_answer": {
                "compliant": "No",
                "explanation": "As an AI developed by Company, I do not have a traditional 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
<a name="model-customize-evaluation-custom-scorers-fields"></a>

**Eingabefelder**


| Feld | Description | Weitere Hinweise | 
| --- | --- | --- | 
| id | Eindeutiger Bezeichner für die Probe | In der Ausgabe wiedergegeben. Zeichenkettenformat | 
| messages | Chatverlauf im OpenAI-Format bestellt | Reihe von Nachrichtenobjekten | 
| nachrichten [] .role | Sprecher der Nachricht | Allgemeine Werte: „Benutzer“, „Assistent“, „System“ | 
| nachrichten [] .content | Textinhalt der Nachricht | Einfache Zeichenfolge | 
| Metadaten | Informationen in freier Form zur Unterstützung der Benotung | Objekt; optionale Felder, die aus Trainingsdaten übernommen wurden | 

**Ausgabefelder**


**Ausgabefelder**  

| Feld | Description | Weitere Hinweise | 
| --- | --- | --- | 
| id | Derselbe Bezeichner wie das Eingabebeispiel | Muss mit der Eingabe übereinstimmen | 
| aggregate\$1reward\$1score | Gesamtpunktzahl für die Stichprobe | Float (z. B. 0,0—1,0 oder aufgabendefinierter Bereich) | 
| metrics\$1list | Die Werte der Komponenten, aus denen sich das Aggregat zusammensetzt | Anordnung metrischer Objekte | 

### Erforderliche Berechtigungen
<a name="model-customize-evaluation-custom-scorers-permissions"></a>

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 alle AWS Downstream-Aufrufe benötigen.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    }
  ]
}
```