

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.

# Anpassen von Modellen mit Amazon AI SageMaker
<a name="customize-model"></a>

Die Anpassung von SageMaker Amazon-KI-Modellen ist eine Funktion, die den traditionell komplexen und zeitaufwändigen Prozess der Anpassung von KI-Modellen von einem monatelangen Unterfangen in einen optimierten Arbeitsablauf verwandelt, der innerhalb weniger Tage abgeschlossen werden kann. Diese Funktion befasst sich mit der kritischen Herausforderung, vor der KI-Entwickler stehen, die Basismodelle mit firmeneigenen Daten anpassen müssen, um hochgradig differenzierte Kundenerlebnisse zu schaffen. Eine ausführliche Dokumentation zur Anpassung, einschließlich step-by-step Anleitungen und erweiterter Konfigurationsoptionen, finden Sie in diesem SageMaker KI-Leitfaden. Einen kurzen Überblick über die Anpassung von Nova-Modellen finden [Sie unter Anpassen und Feinabstimmung SageMaker](https://docs.aws.amazon.com/nova/latest/userguide/customize-fine-tune-sagemaker.html) im Amazon Nova-Benutzerhandbuch.

Zu den Funktionen gehören eine neue Benutzerschnittstelle, die die Anforderungen natürlicher Sprache versteht, sowie eine umfassende Suite fortschrittlicher Techniken zur Modellanpassung, die alle auf einer serverlosen Infrastruktur basieren, die den betrieblichen Aufwand für die Verwaltung von Rechenressourcen überflüssig macht. Ganz gleich, ob Sie Anwendungen für die Rechtsforschung entwickeln, Chatbots für den Kundenservice verbessern oder domänenspezifische KI-Agenten entwickeln, diese Funktion beschleunigt Ihren Weg von proof-of-concept der Produktionsbereitstellung bis zur Serienbereitstellung.

Funktionen in Model Customization powered by Amazon Bedrock Evaluations können Daten sicher AWS-Regionen innerhalb Ihrer Region zur Verarbeitung übertragen. Weitere Informationen finden Sie in der [Dokumentation zu Amazon Bedrock Evaluations](https://docs.aws.amazon.com/bedrock/latest/userguide/evaluation-judge.html).

## Die wichtigsten Konzepte
<a name="model-customize-concepts"></a>

**Serverloses Training**

Eine vollständig verwaltete Recheninfrastruktur, die jegliche Komplexität der Infrastruktur abstrahiert, sodass Sie sich ausschließlich auf die Modellentwicklung konzentrieren können. Dazu gehören die automatische Bereitstellung von GPU-Instanzen (P5, P4de, P4d, G5) auf der Grundlage von Modellgröße und Schulungsanforderungen, voroptimierte Schulungsrezepte, die bewährte Methoden für jede Anpassungstechnik beinhalten, Echtzeitüberwachung mit Live-Metriken und Protokollen, auf die über die Benutzeroberfläche zugegriffen werden kann, und automatische Bereinigung der Ressourcen nach Abschluss der Schulung zur Kostenoptimierung.

**Techniken zur Modellanpassung**

Umfassender Satz fortschrittlicher Methoden, darunter überwachte Feinabstimmung (SFT), direkte Präferenzoptimierung (DPO), Reinforcement-Learning mit verifizierbaren Belohnungen (RLVR) und Reinforcement-Learning mit KI-Feedback (RLAIF).

**Benutzerdefiniertes Modell**

Eine spezielle Version eines Basismodells, das an einen bestimmten Anwendungsfall angepasst wurde, indem es anhand Ihrer eigenen Daten trainiert wurde. Das Ergebnis ist ein KI-Modell, das die allgemeinen Funktionen des ursprünglichen Foundation-Modells beibehält und gleichzeitig domänenspezifisches Wissen, Terminologie, Stil oder Verhalten hinzufügt, die auf Ihre Anforderungen zugeschnitten sind.

**Ressourcen zur Anpassung des KI-Modells**

Ressourcen und Artefakte, die zum Trainieren, Verfeinern und Evaluieren benutzerdefinierter Modelle während der Modellanpassung verwendet werden. Zu diesen Ressourcen gehören **Datensätze**, bei denen es sich um Sammlungen von Trainingsbeispielen (Prompt-Response-Paare, domänenspezifischer Text oder beschriftete Daten) handelt, die zur Feinabstimmung eines Basismodells verwendet werden, um bestimmte Verhaltensweisen, Kenntnisse oder Stile zu erlernen, und **Evaluatoren**, bei denen es sich um Mechanismen zur Bewertung und Verbesserung der Modellleistung handelt, entweder durch ***Belohnungsfunktionen*** (codebasierte Logik, die Modellergebnisse anhand bestimmter Kriterien bewertet, die beim RLVR-Training und bei der Bewertung benutzerdefinierter Punktzahlen verwendet werden) oder durch ***Belohnungsanweisungen*** ( Anweisungen in natürlicher Sprache, die einem LLM helfen, die Qualität der Modellantworten zu beurteilen, die bei der Schulung und LLM-as-a-judge Bewertung von RLAIF verwendet werden).

**Modellpaketgruppe**

Ein Sammelcontainer, der alle protokollierten Modelle aus Trainingsjobs nachverfolgt und einen zentralen Speicherort für Modellversionen und deren Herkunft bietet.

**Protokolliertes Modell**

Die Ausgabe, die von SageMaker KI bei der Ausführung von serverlosen Trainingsaufträgen erzeugt wird. Dabei kann es sich um ein fein abgestimmtes Modell (erfolgreicher Job), einen Checkpoint (fehlgeschlagener Job mit Checkpoint) oder zugehörige Metadaten (fehlgeschlagener Job ohne Checkpoint) handeln.

**Registriertes Modell**

Ein protokolliertes Modell, das für formelle Nachverfolgungs- und Steuerungszwecke markiert wurde und ein vollständiges Herkunfts- und Lebenszyklusmanagement ermöglicht.

**Abstammung**

Die automatisch erfassten Beziehungen zwischen Schulungsaufträgen, Eingabedatensätzen, Ausgabemodellen, Bewertungsjobs und Bereitstellungen in SageMaker KI und Amazon Bedrock.

**Kontoübergreifendes Teilen**

Die Möglichkeit, Modelle, Datensätze und Evaluatoren mithilfe von AWS Resource Access Manager (RAM) AWS kontenübergreifend gemeinsam zu nutzen und gleichzeitig die vollständige Transparenz der Herkunft zu gewährleisten.

# Anpassen von Amazon Nova-Modellen auf Amazon AI SageMaker
<a name="nova-model"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Anpassen von Amazon Nova-Modellen auf Amazon SageMaker AI im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-model.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model.html).

# Amazon-Nova-Rezepte
<a name="nova-model-recipes"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Amazon Nova-Rezepte im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-model-recipes.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model-recipes.html).

# Personalisierung von Amazon Nova bei SageMaker Schulungsjobs
<a name="nova-model-training-job"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Amazon Nova-Anpassung bei SageMaker Schulungsaufträgen im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-model-training-job.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model-training-job.html).

**Topics**
+ [Amazon-Nova-Destillation](nova-distillation.md)
+ [Nova-Anpassungs-SDK](nova-customization-sdk.md)
+ [Feinabstimmung von Amazon Nova-Modellen mithilfe von SageMaker Trainingsjobs](nova-fine-tuning-training-job.md)
+ [Überwachung des Fortschritts über mehrere Iterationen hinweg](nova-model-monitor.md)
+ [Evaluieren Sie Ihr SageMaker KI-trainiertes Modell](nova-model-evaluation.md)

# Amazon-Nova-Destillation
<a name="nova-distillation"></a>

Dieses Thema wurde verschoben. Die neuesten Informationen finden Sie unter Amazon Nova-Destillation im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-distillation.html).

# Nova-Anpassungs-SDK
<a name="nova-customization-sdk"></a>

Das Amazon Nova Customization SDK ist ein umfassendes Python-SDK zur Anpassung von Amazon Nova-Modellen über ihren gesamten Lebenszyklus hinweg — von der Schulung und Evaluierung bis hin zur Bereitstellung und Inferenz.

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Nova Customization SDK im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-customization-sdk.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-customization-sdk.html).

# Feinabstimmung von Amazon Nova-Modellen mithilfe von SageMaker Trainingsjobs
<a name="nova-fine-tuning-training-job"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Feinabstimmung von Amazon Nova-Modellen mithilfe von SageMaker Trainingsaufträgen im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-fine-tune-1.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/smtj-training.html).

# Überwachung des Fortschritts über mehrere Iterationen hinweg
<a name="nova-model-monitor"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Monitoring Progress Across Iterations im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-model-monitor.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model-monitor.html).

# Evaluieren Sie Ihr SageMaker KI-trainiertes Modell
<a name="nova-model-evaluation"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Evaluierung Ihres SageMaker KI-trainierten Modells im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-model-evaluation.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model-evaluation.html).

# Amazon Nova-Anpassung bei Amazon SageMaker HyperPod
<a name="nova-hp"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Amazon Nova-Anpassung bei Amazon SageMaker HyperPod im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp.html).

# Nova-Anpassungs-SDK
<a name="nova-hp-customization-sdk"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Nova Customization SDK im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp-customization-sdk.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp-customization-sdk.html).

# Leitfaden HyperPod für Amazon Essential Commands
<a name="nova-hp-essential-commands-guide"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie im SageMaker HyperPod Essential Commands Guide im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp-essential-commands-guide.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp-essential-commands-guide.html).

# Einen HyperPod EKS-Cluster mit eingeschränkter Instanzgruppe (RIG) erstellen
<a name="nova-hp-cluster"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Erstellen eines SageMaker HyperPod EKS-Clusters mit RIG im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp-cluster.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp-cluster.html).

# Zugang und Einrichtung von Nova Forge für SageMaker KI HyperPod
<a name="nova-forge-hp-access"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Zugriff auf Nova Forge und Einrichtung für SageMaker KI HyperPod im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-forge-hp-access.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-forge-hp-access.html).

# Schulung für Amazon Nova-Modelle
<a name="nova-hp-training"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Training für Amazon Nova-Modelle im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp-training.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp-training.html).

# Feinabstimmung von Amazon Nova-Modellen bei Amazon SageMaker HyperPod
<a name="nova-hp-fine-tune"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Feinabstimmung von Amazon Nova-Modellen bei Amazon SageMaker HyperPod im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp-fine-tune.html).

# Bewerten Ihres trainierten Modells
<a name="nova-hp-evaluate"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Evaluierung Ihres trainierten Modells im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp-evaluate.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp-evaluate.html).

# Iteratives Training
<a name="nova-iterative-training"></a>

Iteratives Training ermöglicht es Ihnen, die Modellleistung durch mehrere Trainingszyklen zu verbessern. Dabei bauen Sie auf früheren Prüfpunkten auf, um Fehlerquellen systematisch zu beheben und sich an sich ändernde Anforderungen anzupassen.

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Iterative Training im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-iterative-training.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-iterative-training.html).

# Amazon-Bedrock-Inferenz
<a name="nova-model-bedrock-inference"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Amazon Bedrock Inference im [Amazon Nova 1.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/userguide/nova-model-bedrock-inference.html) oder im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model-bedrock-inference.html).

# Einschränkungen bei der Anpassung von Amazon Nova-Modellen
<a name="nova-model-limitations"></a>

Dieses Thema wurde verschoben. Aktuelle Informationen finden Sie unter Einschränkungen beim Anpassen von Amazon Nova-Modellen im [Amazon Nova 2.0-Benutzerhandbuch](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model-limitations.html).

# Öffnen Sie die Anpassung des Gewichtsmodells
<a name="model-customize-open-weight"></a>

In diesem Abschnitt erfahren Sie, wie Sie mit der Anpassung von Modellen mit offenem Gewicht beginnen können.

**Topics**
+ [Voraussetzungen](model-customize-open-weight-prereq.md)
+ [Elemente für die Modellanpassung in der Benutzeroberfläche erstellen](model-customize-open-weight-create-assets-ui.md)
+ [Einreichung von Aufträgen zur Anpassung von KI-Modellen](model-customize-open-weight-job.md)
+ [Einreichung von Aufträgen zur Modellbewertung](model-customize-open-weight-evaluation.md)
+ [Modellbereitstellung](model-customize-open-weight-deployment.md)
+ [Beispieldatensätze und Evaluatoren](model-customize-open-weight-samples.md)

# Voraussetzungen
<a name="model-customize-open-weight-prereq"></a>

Stellen Sie vor Beginn sicher, dass die folgenden Voraussetzungen erfüllt sind:
+ Integrieren Sie eine SageMaker KI-Domain mit Studio-Zugriff. Wenn Sie nicht berechtigt sind, Studio als Standardkonfiguration für Ihre Domain festzulegen, wenden Sie sich an Ihren Administrator. Weitere Informationen finden Sie unter [Amazon SageMaker AI-Domainübersicht](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html).
+ Aktualisieren Sie die, AWS CLI indem Sie den Schritten unter [Installation der aktuellen AWS CLI Version](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html#install-tool-bundled) folgen.
+ Führen Sie `aws configure` von Ihrem lokalen Rechner aus und geben Sie Ihre AWS -Anmeldedaten ein. Informationen zu AWS Anmeldeinformationen finden Sie unter [AWS Anmeldeinformationen verstehen und abrufen](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html).

## Erforderliche IAM-Berechtigungen
<a name="model-customize-open-weight-iam"></a>

SageMaker Die Anpassung des KI-Modells erfordert das Hinzufügen entsprechender Berechtigungen für die Ausführung Ihrer SageMaker AI-Domain. Zu diesem Zweck können Sie eine Inline-IAM-Berechtigungsrichtlinie erstellen und diese an die IAM-Rolle anhängen. Informationen zum Hinzufügen von Richtlinien finden Sie unter [Hinzufügen und Entfernen von IAM-Identitätsberechtigungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) im *AWS Identity and Access Management-Benutzerhandbuch*.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowNonAdminStudioActions",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreatePresignedDomainUrl",
                "sagemaker:DescribeDomain",
                "sagemaker:DescribeUserProfile",
                "sagemaker:DescribeSpace",
                "sagemaker:ListSpaces",
                "sagemaker:DescribeApp",
                "sagemaker:ListApps"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:*:domain/*",
                "arn:aws:sagemaker:*:*:user-profile/*",
                "arn:aws:sagemaker:*:*:app/*",
                "arn:aws:sagemaker:*:*:space/*"
             ]
        },
        {
            "Sid": "LambdaListPermissions",
            "Effect": "Allow",
            "Action": [
                "lambda:ListFunctions"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "LambdaPermissionsForRewardFunction",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:InvokeFunction",
                "lambda:GetFunction"
            ],
            "Resource": [
                "arn:aws:lambda:*:*:function:*SageMaker*",
                "arn:aws:lambda:*:*:function:*sagemaker*",
                "arn:aws:lambda:*:*:function:*Sagemaker*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "LambdaLayerForAWSSDK",
            "Effect": "Allow",
            "Action": [
                "lambda:GetLayerVersion"
            ],
            "Resource": [
                "arn:aws:lambda:*:336392948345:layer:AWSSDK*"
            ]
        },
        {
            "Sid": "SageMakerPublicHubPermissions",
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListHubContents"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:aws:hub/SageMakerPublicHub"
            ]
        },
        {
            "Sid": "SageMakerHubPermissions",
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListHubs",
                "sagemaker:ListHubContents",
                "sagemaker:DescribeHubContent",
                "sagemaker:DeleteHubContent",
                "sagemaker:ListHubContentVersions",
                "sagemaker:Search"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "JumpStartAccess",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::jumpstart*"
            ]
        },
        {
            "Sid": "ListMLFlowOperations",
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListMlflowApps",
                "sagemaker:ListMlflowTrackingServers"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "MLFlowAccess",
            "Effect": "Allow",
            "Action": [
                "sagemaker:UpdateMlflowApp",
                "sagemaker:DescribeMlflowApp",
                "sagemaker:CreatePresignedMlflowAppUrl",
                "sagemaker:CallMlflowAppApi",
                "sagemaker-mlflow:*"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:*:mlflow-app/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "BYODataSetS3Access",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        },
        {
            "Sid": "AllowHubPermissions",
            "Effect": "Allow",
            "Action": [
                "sagemaker:ImportHubContent"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:*:hub/*",
                "arn:aws:sagemaker:*:*:hub-content/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "PassRoleForSageMaker",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/service-role/AmazonSageMaker-ExecutionRole-*"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "sagemaker.amazonaws.com",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "PassRoleForAWSLambda",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/service-role/AmazonSageMaker-ExecutionRole-*"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "lambda.amazonaws.com",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "PassRoleForBedrock",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/service-role/AmazonSageMaker-ExecutionRole-*"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "bedrock.amazonaws.com",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "TrainingJobRun",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateTrainingJob",
                "sagemaker:DescribeTrainingJob",
                "sagemaker:ListTrainingJobs"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:*:training-job/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "ModelPackageAccess",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateModelPackage",
                "sagemaker:DescribeModelPackage",
                "sagemaker:ListModelPackages",
                "sagemaker:CreateModelPackageGroup",
                "sagemaker:DescribeModelPackageGroup",
                "sagemaker:ListModelPackageGroups",
                "sagemaker:CreateModel"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:*:model-package-group/*",
                "arn:aws:sagemaker:*:*:model-package/*",
                "arn:aws:sagemaker:*:*:model/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "TagsPermission",
            "Effect": "Allow",
            "Action": [
                "sagemaker:AddTags",
                "sagemaker:ListTags"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:*:model-package-group/*",
                "arn:aws:sagemaker:*:*:model-package/*",
                "arn:aws:sagemaker:*:*:hub/*",
                "arn:aws:sagemaker:*:*:hub-content/*",
                "arn:aws:sagemaker:*:*:training-job/*",
                "arn:aws:sagemaker:*:*:model/*",
                "arn:aws:sagemaker:*:*:endpoint/*",
                "arn:aws:sagemaker:*:*:endpoint-config/*",
                "arn:aws:sagemaker:*:*:pipeline/*",
                "arn:aws:sagemaker:*:*:inference-component/*",
                "arn:aws:sagemaker:*:*:action/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "LogAccess",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:GetLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group*",
                "arn:aws:logs:*:*:log-group:/aws/sagemaker/TrainingJobs:log-stream:*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "BedrockDeploy",
            "Effect": "Allow",
            "Action": [
                "bedrock:CreateModelImportJob"
            ],
            "Resource": [
                "arn:aws:bedrock:*:*:*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "BedrockOperations",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetModelImportJob",
                "bedrock:GetImportedModel",
                "bedrock:ListProvisionedModelThroughputs",
                "bedrock:ListCustomModelDeployments",
                "bedrock:ListCustomModels",
                "bedrock:ListModelImportJobs",
                "bedrock:GetEvaluationJob",
                "bedrock:CreateEvaluationJob", 
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:*:*:evaluation-job/*",
                "arn:aws:bedrock:*:*:imported-model/*",
                "arn:aws:bedrock:*:*:model-import-job/*",
                "arn:aws:bedrock:*:*:foundation-model/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "BedrockFoundationModelOperations",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetFoundationModelAvailability",
                "bedrock:ListFoundationModels"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "SageMakerPipelinesAndLineage",
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListActions",
                "sagemaker:ListArtifacts",
                "sagemaker:QueryLineage",
                "sagemaker:ListAssociations",
                "sagemaker:AddAssociation",
                "sagemaker:DescribeAction",
                "sagemaker:AddAssociation",
                "sagemaker:CreateAction",
                "sagemaker:CreateContext",
                "sagemaker:DescribeTrialComponent"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:*:artifact/*",
                "arn:aws:sagemaker:*:*:action/*",
                "arn:aws:sagemaker:*:*:context/*",
                "arn:aws:sagemaker:*:*:action/*",
                "arn:aws:sagemaker:*:*:model-package/*",
                "arn:aws:sagemaker:*:*:context/*",
                "arn:aws:sagemaker:*:*:pipeline/*",
                "arn:aws:sagemaker:*:*:experiment-trial-component/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "ListOperations",
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListInferenceComponents",
                "sagemaker:ListWorkforces"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "SageMakerInference",
            "Effect": "Allow",
            "Action": [
                "sagemaker:DescribeInferenceComponent",
                "sagemaker:CreateEndpoint",
                "sagemaker:CreateEndpointConfig",
                "sagemaker:DescribeEndpoint",
                "sagemaker:DescribeEndpointConfig",
                "sagemaker:ListEndpoints"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:*:inference-component/*",
                "arn:aws:sagemaker:*:*:endpoint/*",
                "arn:aws:sagemaker:*:*:endpoint-config/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "SageMakerPipelines",
            "Effect": "Allow",
            "Action": [
                "sagemaker:DescribePipelineExecution",
                "sagemaker:ListPipelineExecutions",
                "sagemaker:ListPipelineExecutionSteps",
                "sagemaker:CreatePipeline",
                "sagemaker:UpdatePipeline",
                "sagemaker:StartPipelineExecution"
            ],
            "Resource": [
                "arn:aws:sagemaker:*:*:pipeline/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        }
    ]
}
```

Wenn Sie das [AmazonSageMakerFullAccessPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html)Ihrer Ausführungsrolle zugewiesen haben, können Sie diese reduzierte Richtlinie hinzufügen:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "LambdaListPermissions",
            "Effect": "Allow",
            "Action": [
                "lambda:ListFunctions"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "LambdaPermissionsForRewardFunction",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:InvokeFunction",
                "lambda:GetFunction"
            ],
            "Resource": [
                "arn:aws:lambda:*:*:function:*SageMaker*",
                "arn:aws:lambda:*:*:function:*sagemaker*",
                "arn:aws:lambda:*:*:function:*Sagemaker*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "LambdaLayerForAWSSDK",
            "Effect": "Allow",
            "Action": [
                "lambda:GetLayerVersion"
            ],
            "Resource": [
                "arn:aws:lambda:*:336392948345:layer:AWSSDK*"
            ]
        },
        {
            "Sid": "S3Access",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*",
                "arn:aws:s3:::jumpstart*"
            ]
        },
        {
            "Sid": "PassRoleForSageMakerAndLambdaAndBedrock",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/service-role/AmazonSageMaker-ExecutionRole-*"
            ],
            "Condition": { 
                "StringEquals": { 
                    "iam:PassedToService": [ 
                        "lambda.amazonaws.com", 
                        "bedrock.amazonaws.com"
                     ],
                     "aws:ResourceAccount": "${aws:PrincipalAccount}" 
                 } 
            }
        },
        {
            "Sid": "BedrockDeploy",
            "Effect": "Allow",
            "Action": [
                "bedrock:CreateModelImportJob"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "BedrockOperations",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetModelImportJob",
                "bedrock:GetImportedModel",
                "bedrock:ListProvisionedModelThroughputs",
                "bedrock:ListCustomModelDeployments",
                "bedrock:ListCustomModels",
                "bedrock:ListModelImportJobs",
                "bedrock:GetEvaluationJob",
                "bedrock:CreateEvaluationJob",
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:*:*:evaluation-job/*",
                "arn:aws:bedrock:*:*:imported-model/*",
                "arn:aws:bedrock:*:*:model-import-job/*",
                "arn:aws:bedrock:*:*:foundation-model/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "BedrockFoundationModelOperations",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetFoundationModelAvailability",
                "bedrock:ListFoundationModels"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

Sie müssen dann auf **Vertrauensrichtlinie bearbeiten** klicken und diese durch die folgende Richtlinie ersetzen. Klicken Sie dann auf **Richtlinie aktualisieren**.

```
{
    "Version": "2012-10-17",		 	 	                    
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                 "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                   "Service": "sagemaker.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                  "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

# Elemente für die Modellanpassung in der Benutzeroberfläche erstellen
<a name="model-customize-open-weight-create-assets-ui"></a>

Sie können die Datensatz- und Evaluator-Assets, die Sie für die Modellanpassung verwenden können, in der Benutzeroberfläche erstellen und verwalten.

## Objekte
<a name="model-customize-open-weight-assets"></a>

Wählen Sie im linken Bereich und in der Amazon SageMaker Studio-Benutzeroberfläche **Assets** aus und wählen Sie dann **Datasets** aus.

![\[Ein Bild, das den Zugriff auf die Modellanpassung enthält.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-16.png)


Wählen Sie **Datensatz hochladen**, um den Datensatz hinzuzufügen, den Sie in Ihren Modelanpassungsjobs verwenden werden. Wenn Sie das **erforderliche Dateneingabeformat** auswählen, können Sie auf eine Referenz des zu verwendenden Datensatzformats zugreifen.

![\[Ein Bild, das den Zugriff auf die Modellanpassung enthält.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-15.png)


## Auswertungsprogramme
<a name="model-customize-open-weight-evaluators"></a>

Sie können auch **Prämienfunktionen und **Prämienaufforderungen**** für Ihre Reinforcement-Learning-Anpassungsaufträge hinzufügen.

![\[Ein Bild, das den Zugriff auf die Modellanpassung zeigt.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-14.png)


Die Benutzeroberfläche bietet auch Hinweise zum Format, das für die Belohnungsfunktion oder die Prämienaufforderung erforderlich ist.

![\[Ein Bild, das den Zugriff auf die Modellanpassung enthält.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-13.png)


## Ressourcen für die Modellanpassung mithilfe des AWS SDK
<a name="model-customize-open-weight-create-assets-sdk"></a>

Sie können auch das SageMaker AI Python SDK verwenden, um Assets zu erstellen. Sehen Sie sich unten einen Beispielcodeausschnitt an:

```
from sagemaker.ai_registry.air_constants import REWARD_FUNCTION, REWARD_PROMPT
from sagemaker.ai_registry.dataset import DataSet, CustomizationTechnique
from sagemaker.ai_registry.evaluator import Evaluator

# Creating a dataset example
dataset = DataSet.create(
            name="sdkv3-gen-ds2",
            source="s3://sample-test-bucket/datasets/training-data/jamjee-sft-ds1.jsonl", # or use local filepath as source.
            customization_technique=CustomizationTechnique.SFT
        )

# Refreshes status from hub
dataset.refresh()
pprint(dataset.__dict__)

# Creating an evaluator. Method : Lambda
evaluator = Evaluator.create(
                name = "sdk-new-rf11",
                source="arn:aws:lambda:us-west-2:<>:function:<function-name>8",
                type=REWARD_FUNCTION
        )

# Creating an evaluator. Method : Bring your own code
evaluator = Evaluator.create(
                name = "eval-lambda-test",
                source="/path_to_local/eval_lambda_1.py",
                type = REWARD_FUNCTION
        )

# Optional wait, by default we have wait = True during create call.
evaluator.wait()

evaluator.refresh()
pprint(evaluator)
```

# Einreichung von Aufträgen zur Anpassung von KI-Modellen
<a name="model-customize-open-weight-job"></a>

Auf die Funktion zur Anpassung von SageMaker KI-Modellen kann über die Modellseite von Amazon SageMaker Studio im linken Bereich zugegriffen werden. Sie finden auch die Seite Assets, auf der Sie Ihre Datensätze und Evaluatoren zur Modellanpassung erstellen und verwalten können.

![\[Ein Bild, das den Zugriff auf die Modellanpassung enthält.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-12.png)


Um mit der Einreichung eines Auftrags zur Modellanpassung zu beginnen, wählen Sie die Option Modelle aus, um auf die Registerkarte Jumpstart-Basismodelle zuzugreifen:

![\[Ein Bild, das zeigt, wie das Basismodell ausgewählt wird.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-11.png)


Sie können direkt auf der Modellkarte auf Modell anpassen klicken oder Sie können in Meta nach einem beliebigen Modell suchen, das Sie anpassen möchten.

![\[Ein Bild mit der Modellkarte und Informationen zur Auswahl des Modells, das angepasst werden soll.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-10.png)


Wenn Sie auf die Modellkarte klicken, können Sie auf die Seite mit den Modelldetails zugreifen und den Anpassungsjob starten, indem Sie auf Modell anpassen klicken und dann Mit UI anpassen auswählen, um mit der Konfiguration Ihres RLVR-Jobs zu beginnen.

![\[Ein Bild, das zeigt, wie der Anpassungsjob gestartet wird.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-9.png)


Anschließend können Sie den Namen Ihres benutzerdefinierten Modells eingeben, die zu verwendende Methode zur Modellanpassung auswählen und Ihre Job-Hyperparameter konfigurieren:

![\[Ein Bild mit einer Auswahl von Techniken zur Modellanpassung.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-8.png)


![\[Ein Bild mit einer Auswahl von Techniken zur Modellanpassung.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-7.png)


## Einreichung von Aufträgen zur Anpassung von KI-Modellen mithilfe des SDK
<a name="model-customize-open-weight-job-sdk"></a>

Sie können auch das SageMaker AI Python SDK verwenden, um einen Job zur Modellanpassung einzureichen:

```
# Submit a DPO model customization job

from sagemaker.modules.train.dpo_trainer import DPOTrainer
from sagemaker.modules.train.common import TrainingType

trainer = DPOTrainer(
    model=BASE_MODEL,
    training_type=TrainingType.LORA,
    model_package_group_name=MODEL_PACKAGE_GROUP_NAME,
    training_dataset=TRAINING_DATASET,
    s3_output_path=S3_OUTPUT_PATH,
    sagemaker_session=sagemaker_session,
    role=ROLE_ARN
)
```

## Überwachung Ihres Anpassungsauftrags
<a name="model-customize-open-weight-monitor"></a>

Unmittelbar nach dem Absenden Ihres Jobs werden Sie zu Ihrer Jobseite für die Schulung zur Modellanpassung weitergeleitet.

![\[Ein Bild mit einer Auswahl von Techniken zur Modellanpassung.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-6.png)


Sobald der Job abgeschlossen ist, können Sie zu Ihrer Seite mit den Details zu Ihrem benutzerdefinierten Modell wechseln, indem Sie in der oberen rechten Ecke auf die Schaltfläche Gehe zu **benutzerdefiniertem Modell** klicken.

![\[Ein Bild mit einer Auswahl von Techniken zur Modellanpassung.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-5.png)


Auf der Seite mit den Details zum benutzerdefinierten Modell können Sie wie folgt weiter mit Ihrem benutzerdefinierten Modell arbeiten:

1. Überprüfen von Informationen zur Leistung, zum Speicherort der generierten Artefakte, zu den Hyperparametern der Trainingskonfiguration und zu den Trainingsprotokollen.

1. Starten Sie einen Evaluierungsjob mit einem anderen Datensatz (Fortsetzung der Anpassung).

1. Stellen Sie das Modell mithilfe von SageMaker AI Inference-Endpunkten oder Amazon Bedrock Custom Model Import bereit.  
![\[Ein Bild mit einer Auswahl von Techniken zur Modellanpassung.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-4.png)

# 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:*:*:*"
    }
  ]
}
```

# Modellbereitstellung
<a name="model-customize-open-weight-deployment"></a>

Auf der Detailseite für benutzerdefinierte Modelle können Sie Ihr benutzerdefiniertes Modell auch entweder mithilfe von SageMaker AI Inference-Endpunkten oder Amazon Bedrock bereitstellen.

![\[Ein Bild mit einer Auswahl von Techniken zur Modellanpassung.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-open-model-1.png)


# Beispieldatensätze und Evaluatoren
<a name="model-customize-open-weight-samples"></a>

## Überwachte Feinabstimmung (SFT)
<a name="model-customize-open-weight-samples-sft"></a>
+ Bezeichnung: TAT-QA
+ Lizenz: CC-BY-4.0
+ [Link: https://huggingface. co/datasets/next-tat/TAT-QA](https://huggingface.co/datasets/next-tat/TAT-QA)
+ Vorverarbeitung — Formatierung

**Ein Beispiel**

```
{
    "prompt": "Given a table and relevant text descriptions, answer the following question.\n\nTable:\n<table border=\"1\" class=\"dataframe\">\n  <tbody>\n    <tr>\n      <td></td>\n      <td>2019</td>\n      <td>2018</td>\n    </tr>\n    <tr>\n      <td></td>\n      <td>$'000</td>\n      <td>$'000</td>\n    </tr>\n    <tr>\n      <td>Revenue from external customers</td>\n      <td></td>\n      <td></td>\n    </tr>\n    <tr>\n      <td>Australia</td>\n      <td>144,621</td>\n      <td>129,431</td>\n    </tr>\n    <tr>\n      <td>New Zealand</td>\n      <td>13,036</td>\n      <td>8,912</td>\n    </tr>\n    <tr>\n      <td>Total</td>\n      <td>157,657</td>\n      <td>138,343</td>\n    </tr>\n  </tbody>\n</table>\n\nParagraphs:\n    4. SEGMENT INFORMATION\n\n    During the 2019 and 2018 financial years, the Group operated wholly within one business segment being the operation and management of storage centres in Australia and New Zealand.\n\n    The Managing Director is the Group\u2019s chief operating decision maker and monitors the operating results on a portfolio wide basis. Monthly management reports are evaluated based upon the overall performance of NSR consistent with the presentation within the consolidated financial statements. The Group\u2019s financing (including finance costs and finance income) are managed on a Group basis and not allocated to operating segments.\n\n    The operating results presented in the statement of profit or loss represent the same segment information as reported in internal management information.\n\n    The revenue information above excludes interest income and is based on the location of storage centres.\n\nQuestion: How many business segments were present in 2019 and 2018?\n\nAnswer:",
    "completion": "one",
    "data_idx": "2951"
}
```

## Direkte Präferenzoptimierung (DPO)
<a name="model-customize-open-weight-samples-dpo"></a>
+ Name: Ultrafeedback
+ Lizenz: MIT
+ Link: [https://huggingface. co/datasets/openbmb/UltraFeedback](https://huggingface.co/datasets/openbmb/UltraFeedback)
+ Vorverarbeitungsschritte: Formatierung und Subsampling.

**Eine Probe**

```
{
    "source": "evol_instruct",
    "prompt": "Can you write a C++ program that prompts the user to enter the name of a country and checks if it borders the Mediterranean Sea? Here's some starter code to help you out:\n#include <iostream>\n#include <string>\nusing namespace std;\nint main() {\n    string country;\n    // prompt user for input\n    cout << \"Enter the name of a country: \";\n    cin >> country;\n    // check if country borders the Mediterranean Sea\n    // [C++ code]\n    return 0;\n}",
    "chosen": "Here's a C++ program that prompts the user to enter the name of a country and checks if it borders the Mediterranean Sea:\n\n#include <iostream>\n#include <string>\n#include <set>\n#include <map>\n#include <algorithm>\n\nusing namespace std;\n\nint main() {\n    // store countries and their bordering seas in a map\n    map<string, set<string>> countries;\n    countries[\"Algeria\"] = {\"Mediterranean Sea\", \"North African Coast\"};\n    countries[\"France\"] = {\"Mediterranean Sea\", \"English Channel\"};\n    countries[\"Italy\"] = {\"Mediterranean Sea\", \"Adriatic Sea\"};\n    countries[\"Malta\"] = {\"Mediterranean Sea\", \"North African Coast\"};\n    countries[\"Spain\"] = {\"Mediterranean Sea\", \"Atlantic Ocean\"};\n    countries[\"Tunisia\"] = {\"Mediterranean Sea\", \"North African Coast\"};\n\n    string country;\n    cout << \"Enter the name of a country: \";\n    cin >> country;\n\n    // check if country is in the map\n    if (countries.find(country)!= countries.end()) {\n        // check if country borders the Mediterranean Sea\n        set<string> borders = countries.at(country);\n        if (borders.find(\"Mediterranean Sea\")!= borders.end()) {\n            cout << country << \" borders the Mediterranean Sea.\" << endl;\n        } else {\n            cout << country << \" does not border the Mediterranean Sea.\" << endl;\n        }\n    } else {\n        cout << country << \" is not a recognized country.\" << endl;\n    }\n\n    return 0;\n}\n\nIn this program, we first define a map called countries that stores each country's name as a key and a set of its surrounding seas as the value. We use a set to store each sea name so that we can easily check if a country borders a certain sea.\n\nWe then present the user with a prompt to enter the name of a country. We use a while loop to ensure that the user enters a valid country name. We check if the country is in the map, and if so, we retrieve its bordering seas from the map.\n\nFinally, we check if the Mediterranean Sea is among the set of borders. If it is, we inform the user that the country borders the Mediterranean Sea. If not, we inform the user that the country does not border the Mediterranean Sea.",
    "chosen-rating": 5.0,
    "chosen-model": "starchat",
    "rejected": "Sure, here is the program using the C++11 algorithm \"cds::algorithm::GreaterEqual\":\n#include <iostream>\n#include <string>\n#include <algorithm>\n#include <vector>\n#include <cctype>\n\nusing namespace std;\n\nint main() {\n    string country;\n    cout << \"Enter the name of a country: \";\n    cin >> country;\n    std::vector<string> vec;\n    vec.push_back(country);\n    size_t index = std::find_if(vec.begin(), vec.end(), [](const string& s) {\n        return std::any_of(s.begin(), s.end(), [](const char& c) {\n            return c == '}}';\n    });\n    if (index != vec.end()) {\n        if ((*index)[0] == 'M') {\n            cout << \"Country is bordered by the Mediterranean Sea.\" << endl;\n        } else {\n            cout << \"Country does not border the Mediterranean Sea.\" << endl;\n        }\n    } else {\n        cout << \"Country is not found.\" << endl;\n    }\n    return 0;\n}",
    "rejected-rating": 1.25,
    "rejected-model": "pythia-12b"
}
```

## Verstärktes Lernen durch KI-Feedback (RLAIF) — paarweises Urteilen
<a name="model-customize-open-weight-samples-rlaif"></a>

**Eingabe-Datensatz**

Quelldatensatz: [https://github.com/WeOpenML/PandaLm](https://github.com/WeOpenML/PandaLM)

**Eine Probe**

```
{
    "data_source": "WeOpenML/PandaLM",
    "prompt": [
        {
            "role": "user",
            "content": "Below are two responses for a given task. The task is defined by the Instruction with an Input that provides further context. Evaluate the responses and generate a reference answer for the task.\n\n
            ### Instruction:\nCompare the given products.\n\n### Input:\niPhone 11 and Google Pixel 4\n\n
            ### Response 1:\nThe iPhone 11 has a larger screen size and a longer battery life than the Google Pixel 4.\n\n
            ### Response 2:\nThe iPhone 11 and Google Pixel 4 are both flagship smartphones released in 2018. The iPhone 11 has a 6.1-inch LCD display, while the Google Pixel 4 has a 5.7-inch OLED display. The iPhone 11 has an A13 Bionic chipset, while the Google Pixel 4 has a Qualcomm Snapdragon 845 chipset. The iPhone 11 has a dual-camera system, while the Google Pixel 4 has a single camera system. The iPhone 11 has a longer battery life, while the Google Pixel 4 has a faster processor.\n\n### Evaluation:\n"
        }
    ],
    "ability": "pairwise-judging",
    "reward_model": {
        "style": "llmj",
        "ground_truth": "2\n\n### Reason: Response 2 provides a more detailed and comprehensive comparison of the two products, including their specifications and features. Response 1 only mentions two aspects of the products and does not provide as much information.\n\n### Reference: The iPhone 11 and Google Pixel 4 are both flagship smartphones released in 2018. The iPhone 11 has a 6.1-inch LCD display, while the Google Pixel 4 has a 5.7-inch OLED display. The iPhone 11 has an A13 Bionic chipset, while the Google Pixel 4 has a Qualcomm Snapdragon 845 chipset. The iPhone 11 has a dual-camera system, while the Google Pixel 4 has a single camera system. The iPhone 11 has a longer battery life, while the Google Pixel 4 has a faster processor."
    },
    "extra_info": {
        "split": "train",
        "index": 0,
        "raw_output_sequence": "2\n\n### Reason: Response 2 provides a more detailed and comprehensive comparison of the two products, including their specifications and features. Response 1 only mentions two aspects of the products and does not provide as much information.\n\n### Reference: The iPhone 11 and Google Pixel 4 are both flagship smartphones released in 2018. The iPhone 11 has a 6.1-inch LCD display, while the Google Pixel 4 has a 5.7-inch OLED display. The iPhone 11 has an A13 Bionic chipset, while the Google Pixel 4 has a Qualcomm Snapdragon 845 chipset. The iPhone 11 has a dual-camera system, while the Google Pixel 4 has a single camera system. The iPhone 11 has a longer battery life, while the Google Pixel 4 has a faster processor.\n",
        "llmj": {
            "question": "Below are two responses for a given task. The task is defined by the Instruction with an Input that provides further context. Evaluate the responses and generate a reference answer for the task.\n\n### Instruction:\nCompare the given products.\n\n### Input:\niPhone 11 and Google Pixel 4\n\n### Response 1:\nThe iPhone 11 has a larger screen size and a longer battery life than the Google Pixel 4.\n\n### Response 2:\nThe iPhone 11 and Google Pixel 4 are both flagship smartphones released in 2018. The iPhone 11 has a 6.1-inch LCD display, while the Google Pixel 4 has a 5.7-inch OLED display. The iPhone 11 has an A13 Bionic chipset, while the Google Pixel 4 has a Qualcomm Snapdragon 845 chipset. The iPhone 11 has a dual-camera system, while the Google Pixel 4 has a single camera system. The iPhone 11 has a longer battery life, while the Google Pixel 4 has a faster processor.\n\n### Evaluation:\n",
            "ground_truth": "2\n\n### Reason: Response 2 provides a more detailed and comprehensive comparison of the two products, including their specifications and features. Response 1 only mentions two aspects of the products and does not provide as much information.\n\n### Reference: The iPhone 11 and Google Pixel 4 are both flagship smartphones released in 2018. The iPhone 11 has a 6.1-inch LCD display, while the Google Pixel 4 has a 5.7-inch OLED display. The iPhone 11 has an A13 Bionic chipset, while the Google Pixel 4 has a Qualcomm Snapdragon 845 chipset. The iPhone 11 has a dual-camera system, while the Google Pixel 4 has a single camera system. The iPhone 11 has a longer battery life, while the Google Pixel 4 has a faster processor.",
            "document_in_context": null
        },
        "sample_size": 1980
    }
}
```

## RLAIF - Gedankenkette
<a name="model-customize-open-weight-samples-rlaif2"></a>

**Eingabe-Datensatz**

Quelldaten: [https://huggingface. co/datasets/thesven/gsm8k-reasoning/tree/main/data](https://huggingface.co/datasets/thesven/gsm8k-reasoning/tree/main/data)

**Eine Probe**

```
{
    "data_source": "openai/gsm8k",
    "prompt": [
        {
            "role": "system",
            "content": "\nYou are an AI assistant that uses a Chain of Thought (CoT) approach with reflection to answer queries.\n\nFollow these steps:\n- Think through the problem step by step within the ‹thinking> tags.\n- Reflect on your thinking\n\nto check for any errors or improvements within the ‹reflection› tags.\n- Make any necessary adjustments based on your reflection.\n- Provide your final, concise answer within the ‹output> tags.\n\nImportant: The <thinking> and ‹reflection› sections are for your internal reasoning process only.\nDo not include any part of the final answer in these sections.\nThe actual response to the query must be entirely contained within the ‹output› tags.\n\nUse the following format for your response:\n<thinking>\n[Your initial thought process goes here]\n</thinking›\n\n<reasoning>\n[Your step-by-step reasoning goes here. This is your internal thought process, not the final answer. You can create as many reasoning steps as necessary in your process.]\n</reasoning>\n\n‹reflection>\n[Your reflection on your reasoning, checking for errors or improvements. You can create as many reflection steps as necessary in your process.]\n</ reflection>\n\n<adjustment>\n[Any adjustments to your thinking based on your reflection]\n</adjustment>\n\n<output>\n[Your final, concise answer to the query. This is the only part that will be shown to the user.]\n</output>\n"
        },
        {
            "role": "user",
            "content": "A craft store makes a third of its sales in the fabric section, a quarter of its sales in the jewelry section, and the rest in the stationery section. They made 36 sales today. How many sales were in the stationery section?"
        }
    ],
    "ability": "chain-of-thought",
    "reward_model": {
        "style": "llmj-cot",
        "ground_truth": "Thus, there were 36 - 12 - 9 = <<36-12-9=15>>15 sales in the stationery section."
    },
    "extra_info": {
        "split": "train",
        "index": 0,
        "question": "A craft store makes a third of its sales in the fabric section, a quarter of its sales in the jewelry section, and the rest in the stationery section. They made 36 sales today. How many sales were in the stationery section?",
        "short_answer": "15",
        "model_output": "<thinking>\nTo find the number of sales in the stationery section, I need to first calculate the number of sales in the fabric and jewelry sections. The store makes a third of its sales in the fabric section, which is 1/3 of 36 sales. I can calculate this as 36 * 1/3 = 12 sales in the fabric section. The store makes a quarter of its sales in the jewelry section, which is 1/4 of 36 sales. I can calculate this as 36 * 1/4 = 9 sales in the jewelry section. Since the rest of the sales are in the stationery section, I can subtract the sales from the other two sections from the total number of sales to find the number of sales in the stationery section.\n</thinking>\n\n<reasoning>\n1. Calculate the number of sales in the fabric section: 36 * 1/3 = 12\n2. Calculate the number of sales in the jewelry section: 36 * 1/4 = 9\n3. Calculate the number of sales in the stationery section: 36 - 12 - 9 = 15\n</reasoning>\n\n‹reflection>\nUpon reviewing my reasoning, I noticed that my calculations seem correct, but I should ensure that I understand the question correctly. The question asks for the number of sales in the stationery section, and I believe I have correctly calculated that. However, I should double-check my math to make sure it's accurate.\n</reflection>\n\n<adjustment>\nUpon re-examining my math, I am confident that my calculations are correct. The fabric section makes up 1/3 of the sales, the jewelry section makes up 1/4, and the rest is the stationery section. My math checks out, and I am confident in my answer.\n</adjustment>\n\n<output>\n15\n</output>"
    }
}
```

## RLAIF - Treue
<a name="model-customize-open-weight-samples-rlaif3"></a>

**Eingabe-Datensatz**

Quelle: [https://huggingface. co/datasets/rajpurkar/squad\$1v2/blob/main/squad\$1v2/train-00000-von-00001.parquet](https://huggingface.co/datasets/rajpurkar/squad_v2/blob/main/squad_v2/train-00000-of-00001.parquet)

**Eine Probe**

```
{
    "data_source": "squad_v2",
    "prompt": [
        {
            "role": "system",
            "content": "You are a helpful assistant that answers questions based on the provided context. Only use information from the context."
        },
        {
            "role": "user",
            "content": "Context: Beyoncé Giselle Knowles-Carter (/biːˈjɒnseɪ/ bee-YON-say) (born September 4, 1981) is an American singer, songwriter, record producer and actress. Born and raised in Houston, Texas, she performed in various singing and dancing competitions as a child, and rose to fame in the late 1990s as lead singer of R&B girl-group Destiny's Child. Managed by her father, Mathew Knowles, the group became one of the world's best-selling girl groups of all time. Their hiatus saw the release of Beyoncé's debut album, Dangerously in Love (2003), which established her as a solo artist worldwide, earned five Grammy Awards and featured the Billboard Hot 100 number-one singles \"Crazy in Love\" and \"Baby Boy\".\n\nQuestion: When did Beyonce start becoming popular?"
        }
    ],
    "ability": "faithfulness",
    "reward_model": {
        "style": "llmj-faithfulness",
        "ground_truth": "Beyoncé Giselle Knowles-Carter (/biːˈjɒnseɪ/ bee-YON-say) (born September 4, 1981) is an American singer, songwriter, record producer and actress. Born and raised in Houston, Texas, she performed in various singing and dancing competitions as a child, and rose to fame in the late 1990s as lead singer of R&B girl-group Destiny's Child. Managed by her father, Mathew Knowles, the group became one of the world's best-selling girl groups of all time. Their hiatus saw the release of Beyoncé's debut album, Dangerously in Love (2003), which established her as a solo artist worldwide, earned five Grammy Awards and featured the Billboard Hot 100 number-one singles \"Crazy in Love\" and \"Baby Boy\"."
    },
    "extra_info": {
        "question": "When did Beyonce start becoming popular?",
        "split": "train",
        "index": 0
    }
}
```

## RLAIF — Zusammenfassung
<a name="model-customize-open-weight-samples-rlaif4"></a>

**Eingabe-Datensatz**

[Quelle: Gereinigter GSM8K-Datensatz https://huggingface. co/datasets/thesven/gsm8k-reasoning/tree/main/data](https://huggingface.co/datasets/thesven/gsm8k-reasoning/tree/main/data)

**Eine Probe**

```
{
    "data_source": "cnn_dailymail",
    "prompt": [
        {
            "role": "system",
            "content": "You are a helpful assistant that creates concise, accurate summaries of news articles. Focus on the key facts and main points."
        },
        {
            "role": "user",
            "content": "Summarize the following article:\n\nLONDON, England (Reuters) -- Harry Potter star Daniel Radcliffe gains access to a reported £20 million ($41.1 million) fortune as he turns 18 on Monday, but he insists the money won't cast a spell on him. Daniel Radcliffe as Harry Potter in \"Harry Potter and the Order of the Phoenix\" To the disappointment of gossip columnists around the world, the young actor says he has no plans to fritter his cash away on fast cars, drink and celebrity parties. \"I don't plan to be one of those people who, as soon as they turn 18, suddenly buy themselves a massive sports car collection or something similar,\" he told an Australian interviewer earlier this month. \"I don't think I'll be particularly extravagant. \"The things I like buying are things that cost about 10 pounds -- books and CDs and DVDs.\" At 18, Radcliffe will be able to gamble in a casino, buy a drink in a pub or see the horror film \"Hostel: Part II,\" currently six places below his number one movie on the UK box office chart. Details of how he'll mark his landmark birthday are under wraps. His agent and publicist had no comment on his plans. \"I'll definitely have some sort of party,\" he said in an interview. \"Hopefully none of you will be reading about it.\" Radcliffe's earnings from the first five Potter films have been held in a trust fund which he has not been able to touch. Despite his growing fame and riches, the actor says he is keeping his feet firmly on the ground. \"People are always looking to say 'kid star goes off the rails,'\" he told reporters last month. \"But I try very hard not to go that way because it would be too easy for them.\" His latest outing as the boy wizard in \"Harry Potter and the Order of the Phoenix\" is breaking records on both sides of the Atlantic and he will reprise the role in the last two films.  Watch I-Reporter give her review of Potter's latest » . There is life beyond Potter, however. The Londoner has filmed a TV movie called \"My Boy Jack,\" about author Rudyard Kipling and his son, due for release later this year. He will also appear in \"December Boys,\" an Australian film about four boys who escape an orphanage. Earlier this year, he made his stage debut playing a tortured teenager in Peter Shaffer's \"Equus.\" Meanwhile, he is braced for even closer media scrutiny now that he's legally an adult: \"I just think I'm going to be more sort of fair game,\" he told Reuters. E-mail to a friend . Copyright 2007 Reuters. All rights reserved.This material may not be published, broadcast, rewritten, or redistributed."
        }
    ],
    "ability": "summarization",
    "reward_model": {
        "style": "llmj-summarization",
        "ground_truth": "Harry Potter star Daniel Radcliffe gets £20M fortune as he turns 18 Monday .\nYoung actor says he has no plans to fritter his cash away .\nRadcliffe's earnings from first five Potter films have been held in trust fund ."
    },
    "extra_info": {
        "question": "LONDON, England (Reuters) -- Harry Potter star Daniel Radcliffe gains access to a reported £20 million ($41.1 million) fortune as he turns 18 on Monday, but he insists the money won't cast a spell on him. Daniel Radcliffe as Harry Potter in \"Harry Potter and the Order of the Phoenix\" To the disappointment of gossip columnists around the world, the young actor says he has no plans to fritter his cash away on fast cars, drink and celebrity parties. \"I don't plan to be one of those people who, as soon as they turn 18, suddenly buy themselves a massive sports car collection or something similar,\" he told an Australian interviewer earlier this month. \"I don't think I'll be particularly extravagant. \"The things I like buying are things that cost about 10 pounds -- books and CDs and DVDs.\" At 18, Radcliffe will be able to gamble in a casino, buy a drink in a pub or see the horror film \"Hostel: Part II,\" currently six places below his number one movie on the UK box office chart. Details of how he'll mark his landmark birthday are under wraps. His agent and publicist had no comment on his plans. \"I'll definitely have some sort of party,\" he said in an interview. \"Hopefully none of you will be reading about it.\" Radcliffe's earnings from the first five Potter films have been held in a trust fund which he has not been able to touch. Despite his growing fame and riches, the actor says he is keeping his feet firmly on the ground. \"People are always looking to say 'kid star goes off the rails,'\" he told reporters last month. \"But I try very hard not to go that way because it would be too easy for them.\" His latest outing as the boy wizard in \"Harry Potter and the Order of the Phoenix\" is breaking records on both sides of the Atlantic and he will reprise the role in the last two films.  Watch I-Reporter give her review of Potter's latest » . There is life beyond Potter, however. The Londoner has filmed a TV movie called \"My Boy Jack,\" about author Rudyard Kipling and his son, due for release later this year. He will also appear in \"December Boys,\" an Australian film about four boys who escape an orphanage. Earlier this year, he made his stage debut playing a tortured teenager in Peter Shaffer's \"Equus.\" Meanwhile, he is braced for even closer media scrutiny now that he's legally an adult: \"I just think I'm going to be more sort of fair game,\" he told Reuters. E-mail to a friend . Copyright 2007 Reuters. All rights reserved.This material may not be published, broadcast, rewritten, or redistributed.",
        "split": "train",
        "index": 0,
        "source_id": "42c027e4ff9730fbb3de84c1af0d2c50"
    }
}
```

## RLAIF — Benutzerdefinierter Prompt
<a name="model-customize-open-weight-samples-rlaif5"></a>

In diesem Beispiel wird erläutert, wie eine benutzerdefinierte Jinja-Aufforderung eine der voreingestellten Eingabeaufforderungen ersetzen kann. [RLAIF - Gedankenkette](#model-customize-open-weight-samples-rlaif2)

**Im Folgenden finden Sie ein Beispiel für eine benutzerdefinierte Eingabeaufforderung für CoT:**

```
You are an expert logical reasoning evaluator specializing in Chain-of-Thought (CoT) analysis. 

Given: A problem prompt and a model's reasoning-based response. 

Goal: Assess the quality and structure of logical reasoning, especially for specialized domains (law, medicine, finance, etc.).

Scoring rubric (start at 0.0, then add or subtract):

Core Components:

Structural Completeness (0.3 max)
- Clear problem statement: +0.05
- Defined variables/terminology: +0.05
- Organized given information: +0.05
- Explicit proof target: +0.05
- Step-by-step reasoning: +0.05
- Clear conclusion: +0.05

Logical Quality (0.4 max)
- Valid logical flow: +0.1
- Proper use of if-then relationships: +0.1
- Correct application of domain principles: +0.1
- No logical fallacies: +0.1

Technical Accuracy (0.3 max)
- Correct use of domain terminology: +0.1
- Accurate application of domain rules: +0.1
- Proper citation of relevant principles: +0.1

Critical Deductions:
A. Invalid logical leap: -0.3
B. Missing critical steps: -0.2
C. Incorrect domain application: -0.2
D. Unclear/ambiguous reasoning: -0.1

Additional Instructions:
- Verify domain-specific terminology and principles
- Check for logical consistency throughout
- Ensure conclusions follow from premises
- Flag potential domain-specific compliance issues
- Consider regulatory/professional standards where applicable

Return EXACTLY this JSON (no extra text):
{
    "score": <numerical score 0.0-1.0>,
    "component_scores": {
        "structural_completeness": <score>,
        "logical_quality": <score>,
        "technical_accuracy": <score>
    },
    "steps_present": {
        "problem_statement": <true/false>,
        "variable_definitions": <true/false>,
        "given_information": <true/false>,
        "proof_target": <true/false>,
        "step_reasoning": <true/false>,
        "conclusion": <true/false>
    },
    "reasoning": "<explain scoring decisions and identify any logical gaps>",
    "domain_flags": ["<any domain-specific concerns or compliance issues>"]
}

### (Prompt field from dataset)
Problem Prompt: {{ prompt }}

Model's Response: {{ model_output }}

### Ground truth (if applicable):
{{ ground_truth }}
```

## Verstärktes Lernen anhand verifizierbarer Prämien (RLVR) — Exact Match
<a name="model-customize-open-weight-samples-RLVR"></a>

**Eingabe-Datensatz**

Quelle: [https://huggingface. co/datasets/openai/gsm8k](https://huggingface.co/datasets/openai/gsm8k)

**Probe**

```
{
  "data_source": "openai/gsm8k",
  "prompt": [
    {
      "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",
  "reward_model": {
    "ground_truth": "72",
    "style": "rule"
  },
  "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"
  }
}
```

## RLVR — Codeausführung
<a name="model-customize-open-weight-samples-RLVR2"></a>

**Eingabe-Datensatz**

Quelle: [https://huggingface. co/datasets/open-r1/codeforces](https://huggingface.co/datasets/open-r1/codeforces)

**Stichprobe**

```
{
  "data_source": "codeforces",
  "prompt": [
    {
      "content": "\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",
      "role": "system"
    },
    {
      "content": "Title: Zebras\n\nTime Limit: None seconds\n\nMemory Limit: None megabytes\n\nProblem Description:\nOleg writes down the history of the days he lived. For each day he decides if it was good or bad. Oleg calls a non-empty sequence of days a zebra, if it starts with a bad day, ends with a bad day, and good and bad days are alternating in it. Let us denote bad days as 0 and good days as 1. Then, for example, sequences of days 0, 010, 01010 are zebras, while sequences 1, 0110, 0101 are not.\n\nOleg tells you the story of days he lived in chronological order in form of string consisting of 0 and 1. Now you are interested if it is possible to divide Oleg's life history into several subsequences, each of which is a zebra, and the way it can be done. Each day must belong to exactly one of the subsequences. For each of the subsequences, days forming it must be ordered chronologically. Note that subsequence does not have to be a group of consecutive days.\n\nInput Specification:\nIn the only line of input data there is a non-empty string *s* consisting of characters 0 and 1, which describes the history of Oleg's life. Its length (denoted as |*s*|) does not exceed 200<=000 characters.\n\nOutput Specification:\nIf there is a way to divide history into zebra subsequences, in the first line of output you should print an integer *k* (1<=\u2264<=*k*<=\u2264<=|*s*|), the resulting number of subsequences. In the *i*-th of following *k* lines first print the integer *l**i* (1<=\u2264<=*l**i*<=\u2264<=|*s*|), which is the length of the *i*-th subsequence, and then *l**i* indices of days forming the subsequence. Indices must follow in ascending order. Days are numbered starting from 1. Each index from 1 to *n* must belong to exactly one subsequence. If there is no way to divide day history into zebra subsequences, print -1.\n\nSubsequences may be printed in any order. If there are several solutions, you may print any of them. You do not have to minimize nor maximize the value of *k*.\n\nDemo Input:\n['0010100\\n', '111\\n']\n\nDemo Output:\n['3\\n3 1 3 4\\n3 2 5 6\\n1 7\\n', '-1\\n']\n\nNote:\nnone\n\nWrite Python code to solve the problem. Present the code in \n```python\nYour code\n```\nat the end.",
      "role": "user"
    }
  ],
  "ability": "code",
  "reward_model": {
    "ground_truth": "{\"inputs\": [\"0010100\", \"111\", \"0\", \"1\", \"0101010101\", \"010100001\", \"000111000\", \"0101001000\", \"0000001000\", \"0101\", \"000101110\", \"010101010\", \"0101001010\", \"0100101100\", \"0110100000\", \"0000000000\", \"1111111111\", \"0010101100\", \"1010000\", \"0001110\", \"0000000000011001100011110101000101000010010111000100110110000011010011110110001100100001001001010010\", \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\", \"0010011100000000\"], \"outputs\": [\"3\\n1 1\\n5 2 3 4 5 6\\n1 7\", \"-1\", \"1\\n1 1\", \"-1\", \"-1\", \"-1\", \"3\\n3 1 6 7\\n3 2 5 8\\n3 3 4 9\", \"4\\n5 1 2 3 4 5\\n3 6 7 8\\n1 9\\n1 10\", \"8\\n1 1\\n1 2\\n1 3\\n1 4\\n1 5\\n3 6 7 8\\n1 9\\n1 10\", \"-1\", \"-1\", \"1\\n9 1 2 3 4 5 6 7 8 9\", \"2\\n5 1 2 3 4 5\\n5 6 7 8 9 10\", \"2\\n5 1 2 3 8 9\\n5 4 5 6 7 10\", \"-1\", \"10\\n1 1\\n1 2\\n1 3\\n1 4\\n1 5\\n1 6\\n1 7\\n1 8\\n1 9\\n1 10\", \"-1\", \"2\\n3 1 8 9\\n7 2 3 4 5 6 7 10\", \"-1\", \"-1\", \"22\\n1 1\\n1 2\\n1 3\\n1 4\\n1 5\\n1 6\\n1 7\\n1 8\\n7 9 24 25 26 27 28 29\\n7 10 13 14 17 18 23 30\\n11 11 12 15 16 19 22 31 32 33 34 35\\n3 20 21 36\\n3 37 46 47\\n9 38 39 40 45 48 57 58 75 76\\n17 41 42 43 44 49 50 51 54 55 56 59 72 73 74 77 80 81\\n9 52 53 60 71 78 79 82 83 84\\n7 61 64 65 66 67 70 85\\n5 62 63 68 69 86\\n3 87 88 89\\n3 90 91 92\\n5 93 94 95 96 97\\n3 98 99 100\", \"1\\n245 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 ...\", \"8\\n3 1 8 9\\n5 2 3 4 7 10\\n3 5 6 11\\n1 12\\n1 13\\n1 14\\n1 15\\n1 16\"]}",
    "style": "rule"
  },
  "extra_info": {
    "index": 49,
    "split": "train"
  }
}
```

**Funktion belohnen**

Belohnungsfunktion: [https://github.com/volcengine/verl/tree/main/verl/utils/reward\$1score/prime\$1code](https://github.com/volcengine/verl/tree/main/verl/utils/reward_score/prime_code)

## RLVR - Mathematische Antwort
<a name="model-customize-open-weight-samples-RLVR3"></a>

**Eingabe-Datensatz**

[Quelle: Gereinigter GSM8K-Datensatz https://huggingface. co/datasets/thesven/gsm8k-reasoning/tree/main/data](https://huggingface.co/datasets/thesven/gsm8k-reasoning/tree/main/data)

**Stichprobe**

```
[
    {
        "content": "\nYou are an AI assistant that uses a Chain of Thought (CoT) approach with reflection to answer queries...",
        "role": "system"
    },
    {
        "content": "A craft store makes a third of its sales in the fabric section, a quarter of its sales in the jewelry section, and the rest in the stationery section. They made 36 sales today. How many sales were in the stationery section?",
        "role": "user"
    },
    {
        "content": "\nTo find the number of sales in the stationery section, I need to first calculate the number of sales in the fabric and jewelry sections...\n\n\n<reasoning>\n1. Calculate the number of sales in the fabric section: 36 * 1/3 = 12\n2. Calculate the number of sales in the jewelry section: 36 * 1/4 = 9\n3. Calculate the number of sales in the stationery section: 36 - 12 - 9 = 15\n</reasoning>\n\n<reflection>\nUpon reviewing my reasoning, I noticed that my calculations seem correct...\n</reflection>\n\n<adjustment>\nUpon re-examining my math, I am confident that my calculations are correct...\n</adjustment>\n\n<output>\n15\n</output>",
        "role": "assistant"
    }
]
```

**Berechnung der Belohnung**

Belohnungsfunktion: [https://github.com/volcengine/verl/blob/main/verl/utils/reward\$1score/gsm8k.py](https://github.com/volcengine/verl/blob/main/verl/utils/reward_score/gsm8k.py)

## RLVR - Benutzerdefiniertes Lambda
<a name="model-customize-open-weight-samples-RLVR4"></a>

**Eingabe-Datensatz**

[Quelle: Gereinigter GSM8K-Datensatz https://huggingface. co/datasets/thesven/gsm8k-reasoning/tree/main/data](https://huggingface.co/datasets/thesven/gsm8k-reasoning/tree/main/data)

**Stichprobe**

```
[
  {
    "content": "\nYou are an AI assistant that uses a Chain of Thought (CoT) approach with reflection to answer queries.\n\nFollow these steps:\n- Think through the problem step by step within the ‹thinking> tags.\n- Reflect on your thinking\n\nto check for any errors or improvements within the ‹reflection› tags.\n- Make any necessary adjustments based on your reflection.\n- Provide your final, concise answer within the ‹output> tags.\n\nImportant: The <thinking> and ‹reflection› sections are for your internal reasoning process only.\nDo not include any part of the final answer in these sections.\nThe actual response to the query must be entirely contained within the ‹output› tags.\n\nUse the following format for your response:\n<thinking>\n[Your initial thought process goes here]\n</thinking›\n\n<reasoning>\n[Your step-by-step reasoning goes here. This is your internal thought process, not the final answer. You can create as many reasoning steps as necessary in your process.]\n</reasoning>\n\n‹reflection>\n[Your reflection on your reasoning, checking for errors or improvements. You can create as many reflection steps as necessary in your process.]\n</ reflection>\n\n<adjustment>\n[Any adjustments to your thinking based on your reflection]\n</adjustment>\n\n<output>\n[Your final, concise answer to the query. This is the only part that will be shown to the user.]\n</output>\n",
    "role": "system"
  },
  {
    "content": "A craft store makes a third of its sales in the fabric section, a quarter of its sales in the jewelry section, and the rest in the stationery section. They made 36 sales today. How many sales were in the stationery section?",
    "role": "user"
  },
  {
    "content": "<thinking>\nTo find the number of sales in the stationery section, I need to first calculate the number of sales in the fabric and jewelry sections. The store makes a third of its sales in the fabric section, which is 1/3 of 36 sales. I can calculate this as 36 * 1/3 = 12 sales in the fabric section. The store makes a quarter of its sales in the jewelry section, which is 1/4 of 36 sales. I can calculate this as 36 * 1/4 = 9 sales in the jewelry section. Since the rest of the sales are in the stationery section, I can subtract the sales from the other two sections from the total number of sales to find the number of sales in the stationery section.\n</thinking>\n\n<reasoning>\n1. Calculate the number of sales in the fabric section: 36 * 1/3 = 12\n2. Calculate the number of sales in the jewelry section: 36 * 1/4 = 9\n3. Calculate the number of sales in the stationery section: 36 - 12 - 9 = 15\n</reasoning>\n\n‹reflection>\nUpon reviewing my reasoning, I noticed that my calculations seem correct, but I should ensure that I understand the question correctly. The question asks for the number of sales in the stationery section, and I believe I have correctly calculated that. However, I should double-check my math to make sure it's accurate.\n</reflection>\n\n<adjustment>\nUpon re-examining my math, I am confident that my calculations are correct. The fabric section makes up 1/3 of the sales, the jewelry section makes up 1/4, and the rest is the stationery section. My math checks out, and I am confident in my answer.\n</adjustment>\n\n<output>\n15\n</output>",
    "role": "assistant"
  }
]
```

**Beispiel für die Berechnung einer Prämie**

```
# RLVR Evaluator for OSS

# lambda_grader.py
import json
import re
import uuid
from typing import Any, Dict, List
 
def custom_reward(assistant_answer: str, ground_truth: str) -> float:
    """
    Add custom reward computation here
 
    Example:-
    Reward = fraction of ground-truth words that are correct
    in the correct position.
 
    Example:
      gt:   "the cat sat"
      ans:  "the dog sat"
 
      word-by-word:
        "the" == "the"  -> correct
        "dog" != "cat"  -> wrong
        "sat" == "sat"  -> correct
 
      correct = 2 out of 3 -> reward = 2/3 ≈ 0.67
    """
    ans_words = assistant_answer.strip().lower().split()
    gt_words = ground_truth.strip().lower().split()
 
    if not gt_words:
        return 0.0
 
    correct = 0
    for aw, gw in zip(ans_words, gt_words):
        if aw == gw:
            correct += 1
 
    return correct / len(gt_words)
 
 
# Lambda utility functions
def _ok(body: Any, code: int = 200) -> Dict[str, Any]:
    return {
        "statusCode": code,
        "headers": {
            "content-type": "application/json",
            "access-control-allow-origin": "*",
            "access-control-allow-methods": "POST,OPTIONS",
            "access-control-allow-headers": "content-type",
        },
        "body": json.dumps(body),
    }
 
def _assistant_text(sample: Dict[str, Any]) -> str:
    """Extract assistant text from sample messages."""
    for m in reversed(sample.get("messages", [])):
        if m.get("role") == "assistant":
            return (m.get("content") or "").strip()
    return ""
 
def _sample_id(sample: Dict[str, Any]) -> str:
    """Generate or extract sample ID."""
    if isinstance(sample.get("id"), str) and sample["id"]:
        return sample["id"]
 
    return str(uuid.uuid4())
 
def _ground_truth(sample: Dict[str, Any]) -> str:
    """Extract ground truth from sample or metadata if available"""
 
    if isinstance(sample.get("reference_answer"), str) and sample["reference_answer"]:
        return sample["reference_answer"].strip()
 
    md = sample.get("metadata") or {}
    gt = md.get("reference_answer", None) or md.get("ground_truth", None)
    if gt is None:
        return ""
    return str(gt).strip()
 
 
def _score_and_metrics(sample: Dict[str, Any]) -> Dict[str, Any]:
    sid = _sample_id(sample)
    solution_text = _assistant_text(sample)
 
    # Extract ground truth
    gt = _ground_truth(sample)
 
    metrics_list: List[Dict[str, Any]] = []
 
    # Custom rlvr scoring
    if solution_text and gt:
        
        # Compute score
        reward_score = custom_reward(
            assistant_answer=solution_text,
            ground_truth=gt
        )
        
        # Add detailed metrics
        metrics_list.append({
            "name": "custom_reward_score", 
            "value": float(reward_score), 
            "type": "Reward"
        })
       
        # The aggregate reward score is the custom reward score
        aggregate_score = float(reward_score)
        
    else:
        # No solution text or ground truth - default to 0
        aggregate_score = 0.0
        metrics_list.append({
            "name": "default_zero", 
            "value": 0.0, 
            "type": "Reward"
        })
    print("detected score", {
        "id": sid,
        "aggregate_reward_score": float(aggregate_score),
        "metrics_list": metrics_list,
    })
    return {
        "id": sid,
        "aggregate_reward_score": float(aggregate_score),
        "metrics_list": metrics_list,
    }
 
def lambda_handler(event, context):
    """AWS Lambda handler for custom reward lambda grading."""
    # CORS preflight
    if event.get("requestContext", {}).get("http", {}).get("method") == "OPTIONS":
        return _ok({"ok": True})
 
    # Body may be a JSON string (API GW/Function URL) or already a dict (Invoke)
    raw = event.get("body") or "{}"
    try:
        body = json.loads(raw) if isinstance(raw, str) else raw
    except Exception as e:
        return _ok({"error": f"invalid JSON body: {e}"}, 400)
 
    # Accept top-level list, {"batch":[...]}, or single sample object
    if isinstance(body, dict) and isinstance(body.get("batch"), list):
        samples = body["batch"]
    else:
        return _ok({
            "error": "Send a sample object, or {'batch':[...]} , or a top-level list of samples."
        }, 400)
 
    try:
        results = [_score_and_metrics(s) for s in samples]
    except Exception as e:
        return _ok({"error": f"Custom scoring failed: {e}"}, 500)
 
    return _ok(results)
```

**Beispiel für einen Code für eine Belohnungsfunktion**

```
# RLVR Evaluator for OSS
# lambda_grader.py

import json
import re
import uuid from typing 
import Any, Dict, List
 
def custom_reward(assistant_answer: str, ground_truth: str) -> float:
    """
    Add custom reward computation here
 
    Example:-
    Reward = fraction of ground-truth words that are correct
    in the correct position.
 
    Example:
      gt:   "the cat sat"
      ans:  "the dog sat"
 
      word-by-word:
        "the" == "the"  -> correct
        "dog" != "cat"  -> wrong
        "sat" == "sat"  -> correct
 
      correct = 2 out of 3 -> reward = 2/3 ≈ 0.67
    """
    ans_words = assistant_answer.strip().lower().split()
    gt_words = ground_truth.strip().lower().split()
 
    if not gt_words:
        return 0.0
 
    correct = 0
    for aw, gw in zip(ans_words, gt_words):
        if aw == gw:
            correct += 1
 
    return correct / len(gt_words)
 
 
# Lambda utility functions
def _ok(body: Any, code: int = 200) -> Dict[str, Any]:
    return {
        "statusCode": code,
        "headers": {
            "content-type": "application/json",
            "access-control-allow-origin": "*",
            "access-control-allow-methods": "POST,OPTIONS",
            "access-control-allow-headers": "content-type",
        },
        "body": json.dumps(body),
    }
 
def _assistant_text(sample: Dict[str, Any]) -> str:
    """Extract assistant text from sample messages."""
    for m in reversed(sample.get("messages", [])):
        if m.get("role") == "assistant":
            return (m.get("content") or "").strip()
    return ""
 
def _sample_id(sample: Dict[str, Any]) -> str:
    """Generate or extract sample ID."""
    if isinstance(sample.get("id"), str) and sample["id"]:
        return sample["id"]
 
    return str(uuid.uuid4())
 
def _ground_truth(sample: Dict[str, Any]) -> str:
    """Extract ground truth from sample or metadata if available"""
 
    if isinstance(sample.get("reference_answer"), str) and sample["reference_answer"]:
        return sample["reference_answer"].strip()
 
    md = sample.get("metadata") or {}
    gt = md.get("reference_answer", None) or md.get("ground_truth", None)
    if gt is None:
        return ""
    return str(gt).strip()
 
 
def _score_and_metrics(sample: Dict[str, Any]) -> Dict[str, Any]:
    sid = _sample_id(sample)
    solution_text = _assistant_text(sample)
 
    # Extract ground truth
    gt = _ground_truth(sample)
 
    metrics_list: List[Dict[str, Any]] = []
 
    # Custom rlvr scoring
    if solution_text and gt:
        
        # Compute score
        reward_score = custom_reward(
            assistant_answer=solution_text,
            ground_truth=gt
        )
        
        # Add detailed metrics
        metrics_list.append({
            "name": "custom_reward_score", 
            "value": float(reward_score), 
            "type": "Reward"
        })
       
        # The aggregate reward score is the custom reward score
        aggregate_score = float(reward_score)
        
    else:
        # No solution text or ground truth - default to 0
        aggregate_score = 0.0
        metrics_list.append({
            "name": "default_zero", 
            "value": 0.0, 
            "type": "Reward"
        })
    print("detected score", {
        "id": sid,
        "aggregate_reward_score": float(aggregate_score),
        "metrics_list": metrics_list,
    })
    return {
        "id": sid,
        "aggregate_reward_score": float(aggregate_score),
        "metrics_list": metrics_list,
    }
 
def lambda_handler(event, context):
    """AWS Lambda handler for custom reward lambda grading."""
    # CORS preflight
    if event.get("requestContext", {}).get("http", {}).get("method") == "OPTIONS":
        return _ok({"ok": True})
 
    # Body may be a JSON string (API GW/Function URL) or already a dict (Invoke)
    raw = event.get("body") or "{}"
    try:
        body = json.loads(raw) if isinstance(raw, str) else raw
    except Exception as e:
        return _ok({"error": f"invalid JSON body: {e}"}, 400)
 
    # Accept top-level list, {"batch":[...]}, or single sample object
    if isinstance(body, dict) and isinstance(body.get("batch"), list):
        samples = body["batch"]
    else:
        return _ok({
            "error": "Send a sample object, or {'batch':[...]} , or a top-level list of samples."
        }, 400)
 
    try:
        results = [_score_and_metrics(s) for s in samples]
    except Exception as e:
        return _ok({"error": f"Custom scoring failed: {e}"}, 500)
 
    return _ok(results)
```

**Beispiel für eine Aufforderung zur Belohnung**

```
You are an expert RAG response evaluator specializing in faithfulness and relevance assessment.
Given: Context documents, a question, and response statements.
Goal: Evaluate both statement-level faithfulness and overall response relevance to the question.

Scoring rubric (start at 0.0, then add or subtract):

Core Components:

Faithfulness Assessment (0.6 max)
Per statement evaluation:
- Direct support in context: +0.2
- Accurate inference from context: +0.2
- No contradictions with context: +0.2
Deductions:
- Hallucination: -0.3
- Misrepresentation of context: -0.2
- Unsupported inference: -0.1

Question Relevance (0.4 max)
- Direct answer to question: +0.2
- Appropriate scope/detail: +0.1
- Proper context usage: +0.1
Deductions:
- Off-topic content: -0.2
- Implicit/meta responses: -0.2
- Missing key information: -0.1

Critical Flags:
A. Complete hallucination
B. Context misalignment
C. Question misinterpretation
D. Implicit-only responses

Additional Instructions:
- Evaluate each statement independently
- Check for direct textual support
- Verify logical inferences
- Assess answer completeness
- Flag any unsupported claims

Return EXACTLY this JSON (no extra text):
{
    "statements_evaluation": [
        {
            "statement": "<statement_text>",
            "verdict": <0 or 1>,
            "reason": "<detailed explanation>",
            "context_support": "<relevant context quote or 'None'>"
        }
    ],
    "overall_assessment": {
        "question_addressed": <0 or 1>,
        "reasoning": "<explanation>",
        "faithfulness_score": <0.0-1.0>,
        "relevance_score": <0.0-1.0>
    },
    "flags": ["<any critical issues>"]
}

## Current Evaluation Task

### Context
{{ ground_truth }}

### Question
{{ extra_info.question }}

### Model's Response
{{ model_output }}
```

# Hinweis zur Veröffentlichung
<a name="model-customize-release-note"></a>

**Die Bilder zur Anpassung des SageMaker KI-Modells**

**Unterstützungsplan**
+ Hauptversionen: 12 Monate nach der nächsten Hauptversion
+ Nebenversionen: 6 Monate nach der nächsten Nebenversion
+ Patch-Versionen: Kein garantierter Support (Upgrade auf den neuesten Patch)

Im Folgenden finden Sie die Versionshinweise für Base Deep Learning Containers for Amazon EKS (EKS) und SageMaker AI Training Jobs (SMTJ):


****  

| Version | Typ | Service | Bild-URL | 
| --- | --- | --- | --- | 
|  1.0.0  | CUDA | EKS |  `652744875666.dkr.ecr.amazonaws.com/hyperpod-model-customization:verl-eks-v1.0.0`  | 
|  1.0.0  | CUDA | SMTJ |  `652744875666.dkr.ecr.amazonaws.com/hyperpod-model-customization:verl-smtj-v1.0.0`  | 
|  1.0.0  | CUDA | SMJT |  `652744875666.dkr.ecr.amazonaws.com/hyperpod-model-customization:v1-v1.0.0`  | 
|  1.0.0  | CUDA | SMTJ |  `652744875666.dkr.ecr.amazonaws.com/hyperpod-model-customization:llama-90b-v1.0.0`  | 

**AWS-Regionen unterstützen**


****  

| Region | Code | Serverlose SMTJ-Unterstützung | 
| --- | --- | --- | 
| Asien-Pazifik (Mumbai) | ap-south-1 | Nein | 
| Asien-Pazifik (Singapur) | ap-southeast-1 | Nein | 
| Asien-Pazifik (Sydney) | ap-southeast-2 | Nein | 
| Asien-Pazifik (Tokio) | ap-northeast-1 | Ja | 
| Europa (Frankfurt) | eu-central-1 | Nein | 
| Europa (Irland) | eu-west-1 | Ja | 
| Europa (Stockholm) | eu-north-1 | Nein | 
| Südamerika (São Paulo) | sa-east-1 | Nein | 
| USA Ost (Nord-Virginia) | us-east-1 | Ja | 
| USA Ost (Ohio) | us-east-2 | Nein | 
| USA West (Nordkalifornien) | us-west-1 | Nein | 
| USA West (Oregon) | us-west-2 | Ja | 