View a markdown version of this page

Mit Inspect AI Container auswerten - Amazon Nova

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.

Mit Inspect AI Container auswerten

Der SageMaker Inspect AI-Container führt LLM-Modellevaluierungen für SageMaker Schulungsjobs durch. Der Container verwendet Inspect AI, um einen standardisierten Bewertungsprozess für Modelle bereitzustellen, die auf SageMaker Inferenzendpunkten oder Amazon Bedrock eingesetzt werden — einschließlich der Modelle Amazon Nova 1.0 (Micro, Lite, Pro) und 2.0 (Lite 2).

Frühere Bewertungsansätze (basierend auf Lighteval) verknüpften Offline-Inferenz- und Bewertungslogik eng miteinander, was die Flexibilität bei der Bereitstellung und Prüfung von Modellen einschränkte. Der Inspect AI-Container entkoppelt die Bewertungslogik vollständig von der Inferenz.

-Übersicht

Zu den wichtigsten Vorteilen gehören:

  • Bringen Sie Ihre eigenen Benchmarks mit — schreiben Sie Bewertungsaufgaben im Inspect AI-Format und fügen Sie dann domänenspezifische Bewertungsaufgaben hinzu, ohne auf ein zentrales Team angewiesen zu sein, um sie zu integrieren.

  • Evaluieren Sie mit verschiedenen Inferenzoptionen — funktioniert mit SageMaker Inference (vorhandener Endpunkt oder On-the-fly erstellen), Amazon Bedrock und weiteren eingehenden Inferenz-Backends.

  • Iterieren Sie schneller — gehen Sie ohne Änderungen an der Infrastruktur von der Benchmark-Entwicklung zur Produktionsevaluierung über. Das Onboarding neuer Benchmarks, das zuvor Tage gedauert hat, erfolgt innerhalb von Minuten.

  • Skalierbare Ausführung — verketten Sie mehrere Benchmarks in einem Job, kombinieren Sie Standard-Benchmarks aus der Inspect-Evals-Bibliothek mit Ihren eigenen benutzerdefinierten Aufgaben im selben Job.

  • Ein Einstiegspunkt für alle Trainingstechniken — unabhängig davon, ob Ihr Modell mit SFT (SMTJ, SMHP), CPT (SMHP) oder RFT (SMTJ, SMHP) optimiert wurde, der Container bewertet es über dieselbe Schnittstelle. Die Auswertung von Checkpoints während des Trainings, die in bestimmten Schritten gespeichert wurden, wird ebenfalls unterstützt (z. B. Schritt 500, Schritt 1000), indem auf den Checkpoint-Pfad verwiesen wird. model_s3_uri

Funktionsweise

Sie geben zwei Eingaben in den Container ein:

  1. Eine YAML-Konfigurationsdatei (Rezept), die den Inferenzanbieter, die Benchmarks und die Bewertungsparameter definiert

  2. Benchmark-Dateien (Python-Skripte mit dem @task Decorator), die auf Amazon S3 hochgeladen wurden

Der Container kümmert sich um die Endpunktverwaltung, die Ausführung der Evaluierung und die Erfassung der Ergebnisse. Wenn der Trainingsjob abgeschlossen ist, werden die Ergebnisse an den angegebenen S3-Ausgabespeicherort geschrieben.

Container-Bild

In der folgenden Tabelle sind die Inspect AI-Container-Image-URIs nach AWS Regionen aufgeführt.

Region URI für das Container-Image
us-east-1 763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest
us-west-2 763104351884.dkr.ecr.us-west-2.amazonaws.com/sagemaker-inspect-ai:latest
eu-west-2 763104351884.dkr.ecr.eu-west-2.amazonaws.com/sagemaker-inspect-ai:latest

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie über die folgenden Ressourcen und den folgenden Zugriff verfügen.

Anforderung Description
AWS Konto mit SageMaker Zugriff Ein aktives Mitglied AWS-Konto mit der Erlaubnis, SageMaker Schulungsjobs zu erstellen
S3-Bucket Ein Bucket zum Speichern Ihrer Bewertungsrezepte, Benchmark-Dateien und Ausgabeergebnisse
IAM-Ausführungsrolle Eine Rolle, die den Zugriff auf Ihre Ressourcen übernehmen SageMaker kann
SageMaker Inferenzendpunkt oder Amazon Bedrock-Zugriff Ein bereitgestellter Modellendpunkt oder Amazon Bedrock-Modellzugriff für das Modell, das Sie evaluieren möchten
AWS CLI oder SageMaker Python SDK Tools zum Einreichen von Schulungsaufträgen und zum Verwalten von Ressourcen
Kapazitätsreservierung (große Modelle) Wenden Sie sich für Modelle, die beschleunigte Instances benötigen (z. B. p5 für Nova Lite 2), an den AWS Support, um Kapazität für SageMaker Inference oder Amazon Bedrock zu reservieren

Schritt 1: Richten Sie IAM-Berechtigungen ein

Der SageMaker Trainingsjob wird unter einer Ausführungsrolle ausgeführt, die Sie angeben. Diese Rolle benötigt Berechtigungen zum Lesen von Benchmarks aus S3, zum Schreiben von Ergebnissen, zum Aufrufen des Inferenzendpunkts und zum Schreiben von Protokollen. CloudWatch

1.1 Erstellen Sie die Vertrauensrichtlinie

Speichern Sie Folgendes untertrust_policy.json:

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

1.2 Erstellen Sie die Rolle

aws iam create-role \ --role-name InspectLensEvalRole \ --assume-role-policy-document file://trust_policy.json

1.3 Hängen Sie die Berechtigungsrichtlinie an

Speichern Sie Folgendes unter eval_policy.json und ersetzen Sie alle Platzhalterwerte (REGION,ACCOUNT_ID, Bucket-Namen) durch Ihre Werte:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ReadBenchmarkData", "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::YOUR_BENCHMARK_BUCKET", "arn:aws:s3:::YOUR_BENCHMARK_BUCKET/*" ] }, { "Sid": "S3WriteResults", "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::YOUR_RESULTS_BUCKET", "arn:aws:s3:::YOUR_RESULTS_BUCKET/*" ] }, { "Sid": "SageMakerInvokeExistingEndpoint", "Effect": "Allow", "Action": [ "sagemaker:InvokeEndpoint", "sagemaker:InvokeEndpointWithResponseStream", "sagemaker:DescribeEndpoint" ], "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/*" }, { "Sid": "BedrockInference", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:REGION::foundation-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:inference-profile/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:provisioned-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:imported-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model-deployment/*" ] }, { "Sid": "BedrockCustomModelAccess", "Effect": "Allow", "Action": [ "bedrock:GetCustomModel", "bedrock:GetImportedModel", "bedrock:GetProvisionedModelThroughput", "bedrock:GetCustomModelDeployment", "bedrock:GetInferenceProfile" ], "Resource": [ "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:imported-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:provisioned-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model-deployment/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:inference-profile/*" ] }, { "Sid": "SageMakerCreateEndpointLifecycle", "Effect": "Allow", "Action": [ "sagemaker:CreateModel", "sagemaker:DescribeModel", "sagemaker:DeleteModel", "sagemaker:CreateEndpointConfig", "sagemaker:DescribeEndpointConfig", "sagemaker:DeleteEndpointConfig", "sagemaker:CreateEndpoint", "sagemaker:DescribeEndpoint", "sagemaker:DeleteEndpoint", "sagemaker:InvokeEndpoint", "sagemaker:InvokeEndpointWithResponseStream" ], "Resource": [ "arn:aws:sagemaker:REGION:ACCOUNT_ID:model/inspectlens-*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/inspectlens-*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint-config/inspectlens-*" ] }, { "Sid": "ECRAuth", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" }, { "Sid": "PassRoleToSageMaker", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::ACCOUNT_ID:role/InspectLensEvalRole", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } }, { "Sid": "VPCNetworkingForEndpoint", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Sid": "CloudWatchLogs", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:REGION:ACCOUNT_ID:log-group:/aws/sagemaker/TrainingJobs:*", "arn:aws:logs:REGION:ACCOUNT_ID:log-group:/aws/sagemaker/Endpoints/*" ] }, { "Sid": "MLflowTrackingServer", "Effect": "Allow", "Action": [ "sagemaker:DescribeMlflowTrackingServer", "sagemaker:CreatePresignedMlflowTrackingServerUrl" ], "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:mlflow-tracking-server/*" }, { "Sid": "MLflowTrackingOperations", "Effect": "Allow", "Action": [ "sagemaker-mlflow:AccessUI", "sagemaker-mlflow:CreateExperiment", "sagemaker-mlflow:GetExperiment", "sagemaker-mlflow:GetExperimentByName", "sagemaker-mlflow:SearchExperiments", "sagemaker-mlflow:CreateRun", "sagemaker-mlflow:GetRun", "sagemaker-mlflow:UpdateRun", "sagemaker-mlflow:SearchRuns", "sagemaker-mlflow:LogMetric", "sagemaker-mlflow:LogParam", "sagemaker-mlflow:LogBatch", "sagemaker-mlflow:SetTag", "sagemaker-mlflow:LogArtifact", "sagemaker-mlflow:ListArtifacts" ], "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:mlflow-tracking-server/*" }, { "Sid": "KMSForVolumeEncryption", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "arn:aws:kms:REGION:ACCOUNT_ID:key/*" } ] }

Fügen Sie die Richtlinie an die Rolle an:

aws iam put-role-policy \ --role-name InspectLensEvalRole \ --policy-name InspectLensEvalPolicy \ --policy-document file://eval_policy.json

Schritt 2: Schreiben Sie Ihr Evaluationsrezept

Das Eval-Rezept ist eine YAML-Konfigurationsdatei, die definiert, wie der Container Ihre Evaluierungen ausführt. Das Rezept spezifiziert den Inferenzanbieter, die Benchmarks, die Evaluierungsparameter und die Ausgabeeinstellungen.

Ausführliche Beispiele finden Sie in den folgenden Notizbüchern:

Option A: Evaluieren Sie einen vorhandenen Endpunkt SageMaker

Verwenden Sie diese Option, wenn Sie bereits ein Modell auf einem SageMaker Inferenzendpunkt implementiert haben.

inference_provider: sagemaker_endpoint: endpoint_name: "my-existing-endpoint" region: "us-east-1" benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu eval: max_connections: 10 max_retries: 100 timeout: 600 output: s3_path: "s3://your-bucket/eval-results/"

Option B: Endpunkt erstellen, auswerten und dann bereinigen

Verwenden Sie diese Option, damit der Container ein Amazon Nova-Basismodell oder ein fein abgestimmtes Modell bereitstellt, Evaluierungen durchführt und den Endpunkt automatisch herunterfährt. Dies ist der empfohlene Ansatz für einmalige Evaluierungsläufe. Rufen Sie den neuesten SageMaker Inferenzcontainer aus der Amazon Nova SageMaker Inference Container-Image-Dokumentation ab.

inference_provider: sagemaker_endpoint: endpoint_name: null # null = create new endpoint model_s3_uri: "s3://your-bucket/models/nova-micro/" inference_image_uri: "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-inference-repo:SM-Inference-latest" instance_type: "ml.p5.48xlarge" instance_count: 1 execution_role_arn: "arn:aws:iam::ACCOUNT_ID:role/InspectLensEvalRole" region: "us-east-1" context_length: "16000" max_concurrency: "32" cleanup_endpoint: true # Auto-delete after eval benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu_pro - name: arc_c - name: boolq eval: fail_on_error: false decoding: temperature: 0.0 top_p: 1.0 top_k: -1 max_tokens: 16000 reasoning_effort: null max_connections: 16 max_retries: 100 timeout: 600 extra_args: - "-M" - "completion_mode=True" - "--logprobs" - "--top-logprobs" - "5" output: s3_path: "s3://your-bucket/eval-results/"

Hinweis zu: model_s3_uri

  • Amazon Nova GA-Modelle (Basis-Checkpoints): Zum Beispiel s3://escrow-nova-model-708977205387-us-east-1/nova-lite-2/prod/ — SageMaker verwaltet den Zugriff automatisch, es sind keine zusätzlichen S3-Berechtigungen erforderlich.

  • Maßgeschneiderte Amazon Nova-Modelle (Checkpoints nach dem Training): s3://customer-escrow-ACCOUNT_ID-SUFFIX/YOUR_RUN_NAME/outputs/checkpoints/step_N/ — Dies ist der Escrow-Bucket-Pfad aus Ihrer Trainingsjob-Ausgabe.

Option C: Evaluieren über Amazon Bedrock

Verwenden Sie diese Option, um ein über Amazon Bedrock verfügbares Modell zu evaluieren, ohne einen Endpunkt verwalten zu müssen.

inference_provider: bedrock: model_id: amazon.nova-pro-v1:0 region: us-east-1 benchmarks: - name: mmlu path: benchmarks/mmlu_pro.py limit: 100 eval: fail_on_error: false decoding: temperature: 0.0 top_p: 1.0 top_k: -1 max_tokens: 8192 reasoning_effort: null max_connections: 10 max_retries: 50 timeout: 600 extra_args: - "--display" - "plain" output: s3_path: s3://your-bucket/eval/output/

Benchmarks-Konfiguration

benchmarksIn diesem Abschnitt wird definiert, welche Bewertungsaufgaben ausgeführt werden sollen. Sie können mehrere Benchmarks in einem einzigen Job verketten.

Feld Erforderlich Standard Description
name Ja Ein aussagekräftiger Name für den Benchmark-Lauf
path Ja Relativer Pfad zur Benchmark-Python-Datei in Ihrem S3-Benchmark-Verzeichnis
limit Nein Keine (alle Beispiele) Maximale Anzahl der auszuwertenden Proben. Zum Testen vor vollständigen Durchläufen verwenden.
epochs Nein 1 Häufigkeit, mit der die Auswertung auf statistische Signifikanz wiederholt werden soll
task_args Nein Key-value Paare, die als Argumente an die Benchmark-Aufgabenfunktion übergeben wurden

Eval-Konfiguration

Der eval Abschnitt steuert, wie der Container Evaluierungen durchführt.

Parameter Erforderlich Standard Description
fail_on_error Nein false Beenden Sie die Auswertung, wenn eine Probe fehlschlägt. trueFür strikte Validierung auf einstellen.
max_connections Nein 10 Anzahl der parallel Anfragen an den Inferenzendpunkt
max_retries Nein 3 Anzahl der Wiederholungsversuche für fehlgeschlagene Inferenzanfragen
timeout Nein 600 Anforderungs-Timeout in Sekunden für jeden Inferenzaufruf
extra_args Nein Zusätzliche Schlüssel-Wert-Paare werden direkt an den Befehl Inspect AI eval übergeben

Parameter dekodieren

Konfigurieren Sie die Parameter für die Modelldekodierung im eval.decoding Abschnitt:

Parameter Erforderlich Standard Description
temperature Nein 0.0 Steuert die Zufälligkeit bei der Generierung. Wird 0.0 für deterministische, reproduzierbare Benchmark-Ergebnisse verwendet.
top_p Nein 1,0 Schwellenwert für die Kernprobenahme. 1.0bedeutet keine Einschränkung.
top_k Nein -1 Beschränkt die Wortwahl auf die K wahrscheinlichsten Tokens. -1deaktiviert diesen Filter.
max_tokens Nein 8192 Maximale Anzahl von Token, die pro Antwort generiert werden können. Erhöhung bei Benchmarks, die lange Argumentationsketten erfordern.
reasoning_effort Nein Null Steuert die Argumentationstiefe für Modelle, die dies unterstützen (z. B. Amazon Nova-Modelle mit erweitertem Denken). Optionen: lowhigh, oder null zum Deaktivieren.

Konfiguration der Ausgabe

outputIn diesem Abschnitt wird definiert, wo und wie die Bewertungsergebnisse gespeichert werden.

Feld Erforderlich Standard Description
s3_path Ja S3-URI, in den die Bewertungsergebnisse geschrieben werden
output_format Nein eval Format für Ergebnisdateien. Die Optionen finden Sie in der folgenden Tabelle.

Die folgenden Ausgabeformate sind verfügbar:

Format Description
eval Natives Inspect AI-Format. Kompatibel mit inspect view für interaktive Analysen.
csv Comma-separated Werte. Geeignet für Tabellenkalkulationsanalysen und Daten-Pipelines.
jsonl Format der JSON-Zeilen. Ein JSON-Objekt pro Zeile für die Streaming-Verarbeitung.
json Standard-JSON-Format. Vollständige Ergebnisse in einer einzigen strukturierten Datei.

MLflow-Konfiguration

Optional können Sie Bewertungsmetriken auf einem MLFlow-Tracking-Server protokollieren. Fügen Sie den tracking Abschnitt zu Ihrem Rezept hinzu:

tracking: mlflow_tracking_arn: null # ARN of SageMaker MLflow tracking server mlflow_experiment_name: "inspectlens" # experiment name mlflow_tracing: true # log full request/response traces mlflow_log_artifacts: true # upload .eval files to MLflow
Feld Erforderlich Standard Description
mlflow_tracking_arn Nein Null ARN Ihres SageMaker MLFlow-Tracking-Servers. Diese Einstellung aktiviert die MLflow-Protokollierung. Auslassen oder auf setzen, um null zu deaktivieren.
mlflow_experiment_name Nein inspiziert die Linse Name des MLflow-Experiments, unter dem Läufe protokolliert werden sollen.
mlflow_tracing Nein true Wanntrue, protokolliert die vollständigen request/response Spuren für jede Probe.
mlflow_log_artifacts Nein true Wanntrue, lädt .eval Protokolldateien als MLflow-Artefakte hoch.

Vollständige Rezeptreferenz

Das folgende Beispiel zeigt ein vollständiges Rezept mit allen verfügbaren Konfigurationsoptionen:

inference_provider: sagemaker_endpoint: endpoint_name: my-nova-endpoint model_s3_uri: s3://your-bucket/models/my-model/ inference_image_uri: "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-inference-repo:SM-Inference-latest" instance_type: ml.g5.12xlarge cleanup_endpoint: true region: us-west-2 benchmarks: - name: mmlu path: benchmarks/mmlu_pro.py limit: 100 epochs: 3 task_args: subject: math - name: truthfulqa path: benchmarks/truthfulqa.py limit: 50 eval: fail_on_error: false decoding: temperature: 0.0 top_p: 1.0 top_k: -1 max_tokens: 8192 reasoning_effort: null max_connections: 256 max_retries: 50 timeout: 600 extra_args: - "--display" - "plain" output: s3_path: s3://your-bucket/eval/output/ output_format: eval tracking: mlflow_tracking_arn: "arn:aws:sagemaker:us-west-2:123456789012:mlflow-tracking-server/my-server" mlflow_experiment_name: "inspectlens" mlflow_tracing: true mlflow_log_artifacts: true

Schritt 3: Bereiten Sie die Benchmark-Dateien vor

Benchmarks sind Python-Dateien, die den Inspect @task AI-Decorator verwenden, um Bewertungsaufgaben zu definieren. Das inspect-evals Repository bietet mehr als 128 gebrauchsfertige Benchmarks, oder Sie können Ihre eigenen schreiben.

Beispiel-Benchmark

Das folgende Beispiel zeigt einen Minimal-Benchmark, der die Multiple-Choice-Leistung für einen Datensatz bewertet: HuggingFace

from inspect_ai import task, Task from inspect_ai.dataset import hf_dataset from inspect_ai.scorer import choice from inspect_ai.solver import multiple_choice @task def my_benchmark(): return Task( dataset=hf_dataset( path="cais/mmlu", name="abstract_algebra", split="test", ), solver=multiple_choice(), scorer=choice(), )

Abhängigkeiten

Wenn Ihr Benchmark zusätzliche Abhängigkeiten benötigt, fügen Sie ein pyproject.toml oder requirements.txt in dasselbe S3-Verzeichnis ein:

[project] name = "my-benchmark" version = "0.1.0" requires-python = ">=3.12" dependencies = [ "datasets>=2.14.0", ]

Pre-installed Pakete

Der Container enthält die folgenden Pakete. Sie müssen diese nicht in Ihrem auflistenpyproject.toml.

Package Version
Python 3.12
inspizieren 0.3.220
boto3 1,40,61
Aioboto 3 15.5.0
Openai 2.36.0
mlflow 3.12.0
Pyyaml 6.0.3

Auswahl der Aufgabe

Das tasks Feld in Ihrem Rezept steuert, welche Aufgaben innerhalb einer Benchmark-Datei ausgeführt werden sollen.

Konfiguration Beispiel Behavior
Leer tasks tasks: [] Führt alle in der Benchmark-Datei definierten Aufgaben aus
Filter benennen tasks: ["algebra"] Führt Aufgaben aus, deren Name die Teilzeichenfolge „Algebra“ enthält
limit limit: 50 Begrenzt die Anzahl der pro Aufgabe ausgewerteten Stichproben
epochs epochs: 3 Wiederholt die Auswertung mehrmals, um die Varianz zu messen

Schritt 4: Bereiten Sie Ihre S3-Struktur vor

Die folgende Struktur ist eine Empfehlung für die Organisation von Konfigurationen, Benchmarks und Ergebnissen. Sie können den Container auf eine beliebige S3-Position richten — die Struktur selbst ist nicht erforderlich.

s3://your-bucket/ ├── config/ │ └── inspect_config.yaml # Your eval recipe ├── benchmarks/ │ └── my_benchmarks/ # Your benchmark Python files │ ├── pyproject.toml # Optional: benchmark dependencies │ ├── my_task.py # @task decorated functions │ └── _helpers.py # Shared utilities └── output/ # Results written here

Laden Sie Ihre Dateien auf S3 hoch:

# Upload benchmark files aws s3 cp my_benchmarks/ s3://your-bucket/benchmarks/my_benchmarks/ --recursive # Upload your eval recipe aws s3 cp inspect_config.yaml s3://your-bucket/config/inspect_config.yaml

Schritt 5: Reichen Sie den Ausbildungsjob ein

Reichen Sie einen SageMaker Schulungsjob ein, um Ihre Bewertung durchzuführen. Sie können das AWS CLI oder das SageMaker Python-SDK verwenden.

Option A: AWS CLI

aws sagemaker create-training-job \ --training-job-name inspect-eval-$(date +%Y%m%d-%H%M%S) \ --algorithm-specification \ TrainingImage=763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest,TrainingInputMode=File \ --role-arn arn:aws:iam::123456789012:role/SageMakerInspectAIRole \ --resource-config \ InstanceType=ml.m5.large,InstanceCount=1,VolumeSizeInGB=30 \ --stopping-condition MaxRuntimeInSeconds=86400 \ --input-data-config '[ { "ChannelName": "config", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://your-bucket/eval/config/", "S3DataDistributionType": "FullyReplicated" } } } ]' \ --output-data-config S3OutputPath=s3://your-bucket/eval/output/ \ --region us-west-2

Option B: SageMaker Python-SDK V3

from sagemaker.train import ModelTrainer from sagemaker.train.configs import InputData, Compute from sagemaker.core.shapes.shapes import StoppingCondition, OutputDataConfig trainer = ModelTrainer( training_image="763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest", compute=Compute( instance_type="ml.m5.large", instance_count=1, volume_size_in_gb=30, ), output_data_config=OutputDataConfig( s3_output_path="s3://your-bucket/eval/output/" ), role="arn:aws:iam::123456789012:role/SageMakerInspectAIRole", stopping_condition=StoppingCondition(max_runtime_in_seconds=86400), ) trainer.train( input_data_config=[ InputData( channel_name="config", data_source="s3://your-bucket/eval/config/", ) ] )

Die wichtigsten Parameter

Parameter Wert Description
TrainingImage 763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest Das Inspect AI-Container-Image
InstanceType ml.m5.large Orchestrator-Instanztyp (nicht die Inferenzinstanz)
VolumeSizeInGB 30 Speicher für Benchmark-Daten und -Protokolle
MaxRuntimeInSeconds 86400 Maximale Auftragsdauer (24 Stunden)
ChannelName config Eingangskanal, der Ihre Rezept- und Benchmark-Dateien enthält

Anleitung zum Orchestrator-Instanztyp

In der Trainingsjob-Instanz wird die Orchestrierungslogik für die Evaluierung ausgeführt, nicht die Modellinferenz. Wählen Sie einen Instanztyp, der auf Ihrem Evaluierungs-Workload basiert.

Instance-Typ Anwendungsfall Empfehlung
ml.m5.large Empfohlener Standard Ausreichend für die meisten Evaluierungs-Workloads mit mäßiger Parallelität
ml.m5.4xlarge Große Benchmark-Suiten Wird verwendet, wenn viele Benchmarks mit hohen max_connections Werten ausgeführt werden
ml.c5.large Cost-sensitive Kostengünstigere Alternative für einfache Evaluierungen mit geringer Parallelität

Umgebungsvariablen

Sie können Umgebungsvariablen zur Authentifizierung oder Konfiguration an den Container übergeben. Fügen Sie dem AWS CLI Befehl den --environment Parameter hinzu:

aws sagemaker create-training-job \ ... --environment '{ "HF_TOKEN": "hf_your_token_here", "HF_HUB_DOWNLOAD_TIMEOUT": "300" }'

Schritt 6: Überwachen Sie den Job

Nachdem Sie den Schulungsjob eingereicht haben, können Sie dessen Fortschritt anhand der CloudWatch Protokolle AWS CLI oder verfolgen.

Überprüfen Sie den Jobstatus

aws sagemaker describe-training-job \ --training-job-name your-job-name \ --query "TrainingJobStatus" \ --output text

Streamen Sie Protokolle

aws logs tail /aws/sagemaker/TrainingJobs \ --log-stream-name-prefix your-job-name \ --follow

Was erwartet Sie in Logs

Die Container-Logs zeigen den Fortschritt in den folgenden Phasen:

  1. Start — Container-Initialisierung und Konfigurationsvalidierung

  2. Benchmark-Download — Benchmark-Dateien werden heruntergeladen und Abhängigkeiten installiert

  3. Endpunkt-Setup — Den Inferenz-Endpunkt erstellen oder eine Verbindung zu ihm herstellen

  4. Bewertung — Ausführung von Benchmark-Aufgaben mit Fortschrittsindikatoren

  5. Ergebnisse hochladen — Ergebnisse in S3 schreiben und optional in MLflow protokollieren

  6. Säuberung — Temporäre Endpunkte werden gelöscht, wenn cleanup_endpoint: true

Geschätzte Zeitpläne

Stage Geschätzte Dauer
Start des Containers 2—5 Minuten
Erstellung von Endpunkten (falls zutreffend) 15—30 Minuten
Bewertung Variiert je nach Benchmark-Größe und Modelllatenz
Bereinigen 1—2 Minuten

Schritt 7: Ergebnisse anzeigen und interpretieren

Sehen Sie sich nach Abschluss des Jobs Ihre Bewertungsergebnisse an.

Mit Inspect AI anzeigen

Verwenden Sie den Inspect AI-Viewer, um interaktiv Ergebnisse direkt aus S3 heraus zu untersuchen:

inspect view --log-dir s3://your-bucket/eval-results/

Dieser Befehl öffnet eine lokale Weboberfläche, in der Sie Ergebnisse durchsuchen, einzelne Stichproben ansehen und Durchläufe vergleichen können.

Herunterladen und teilen

So laden Sie Ergebnisse lokal herunter:

aws s3 cp s3://your-bucket/eval/output/ ./results/ --recursive INSPECT_LOG_DIR=./results inspect view

VS Code-Erweiterung

Mit der Inspect AI VS Code-Erweiterung können Sie Evaluationsprotokolle direkt von S3 aus durchsuchen, ohne sie zuerst herunterladen zu müssen.

  1. Installieren Sie die Erweiterung vom VS Code Marketplace (suchen Sie nach „Inspect AI“)

  2. Suchen Sie in der Inspect Activity Bar den Bereich Logs und wählen Sie das Ordnersymbol

  3. Geben Sie Ihren S3-Pfad ein: s3://your-bucket/eval-results/

Struktur der Ausgabe

Bei jeder Auswertung wird eine .eval Protokolldatei erstellt, die die folgenden Abschnitte enthält:

  • results.scores— Aggregierte Ergebnisse für jede Metrik

  • samples— Individuelle Bewertungsstichproben mit Eingaben, Ergebnissen und Ergebnissen

  • stats— Laufzeitstatistiken einschließlich Token-Nutzung und Latenz

  • eval.config— Die für den Testlauf verwendete Konfiguration

Ergebnisse in MLflow anzeigen (optional)

Wenn Sie MLflow in Ihrem Rezept konfiguriert haben, generieren Sie eine vorsignierte URL für den Zugriff auf den Tracking-Server:

aws sagemaker create-presigned-mlflow-tracking-server-url \ --tracking-server-name my-server \ --region us-west-2

Öffnen Sie die zurückgegebene URL in Ihrem Browser, um Messwerte anzusehen, Läufe zu vergleichen und Trends in allen Bewertungen zu analysieren.

Verfügbare Benchmarks

Der Inspect AI-Container funktioniert mit jedem Benchmark, der im Inspect AI-Aufgabenformat geschrieben wurde. Das Inspect-Evals-Repository bietet über 128 gebrauchsfertige Benchmarks aus Bereichen wie Argumentation, Wissen, Codierung und Sicherheit.

Informationen zum Schreiben eigener Benchmarks finden Sie in der Dokumentation zum Schreiben von Inspect AI-Aufgaben. Wenn Sie einen öffentlichen Benchmark finden, der noch nicht in inspect-evals verfügbar ist, können Sie die Onboarding-Aufforderung des KI-Assistenten verwenden, um ihn in das Inspect AI-Format zu konvertieren.

Bewertungen durch Agenturen

Mit behördlichen Benchmarks wird die Fähigkeit eines Modells getestet, mehrstufige Aufgaben zu erledigen, die den Einsatz von Tools, Planung und iteratives Denken erfordern. Diese Bewertungen simulieren reale Szenarien, in denen das Modell Tools aufrufen, Ergebnisse interpretieren und über die nächsten Maßnahmen entscheiden muss.

Anforderungen an Endgeräte

Für behördliche Evaluierungen sind Endgeräte erforderlich, die die folgenden Funktionen unterstützen:

  • Werkzeugaufruf — Der Endpunkt muss Funktionsaufrufen unterstützen, damit das Modell während der Evaluierung Tools aufrufen kann

  • Große Kontextgröße — Multi-turn Konversationen mit Toolergebnissen erfordern eine ausreichende Kontextlänge, um den Konversationsverlauf zu verwalten

SageMaker Konfiguration des Inferenzendpunkts

Wenn Sie einen SageMaker Inferenzendpunkt für Agentenauswertungen verwenden, konfigurieren Sie die folgenden Umgebungsvariablen auf Ihrem Endpunkt:

Umgebungsvariable Wert Description
ENABLE_TOOL_CALLING True Aktiviert die Unterstützung von Toolaufrufen auf dem Inferenzendpunkt
CONTEXT_LENGTH Ausreichend für Multi-Turn Stellen Sie einen Wert ein, der groß genug ist, um Multi-Turn-Konversationen mit Toolergebnissen zu ermöglichen

Informationen zur Einrichtung von Amazon Nova-Endpunkten auf SageMaker Inference finden Sie unter Bereitstellen von Amazon Nova-Modellen auf. SageMaker Informationen zu den Funktionen und der Konfiguration von Containern finden Sie unter Container-Funktionen.

Amazon Bedrock-Endpunkte

Für Amazon Bedrock-Endpunkte wird das Aufrufen von Tools für kompatible Modelle nativ unterstützt. Weitere Informationen finden Sie unter Verwendung von Tools mit Amazon Bedrock.

Erste Schritte mit behördlichen Bewertungen

Um behördliche Bewertungen durchzuführen, müssen Sie die folgenden Voraussetzungen erfüllen:

  1. Stellen Sie einen Endpunkt mit aktiviertem Tool-Calling bereit

  2. Wählen Sie einen Agenten-Benchmark aus dem Inspect-Evals-Repository aus (suchen Sie nach Benchmarks, die Tool-Calling-Solver verwenden)

  3. Konfiguriere dein Rezept mit geeigneten Werten für Interaktionen mit mehreren Runden timeout max_tokens

Amazon Bedrock-Endpunkt

Beispiel-Notizbücher

Das folgende Notizbuch zeigt, wie ein Agenten-Benchmark mit dem Inspect AI-Container ausgeführt wird, der Tools aufruft:

Verwenden Sie für behördliche Benchmarks, die eine Docker-Sandbox erfordern, das Inspect AI SDK:

Wichtig

Agentische Benchmarks, für die eine Docker-Sandbox erforderlich ist (z. B. SWE-bench), werden in der Inspect AI-Container-Umgebung nicht unterstützt. Die SageMaker Training Job-Umgebung bietet keine Docker-in-Docker Funktionen. Um diese Benchmarks auszuführen, verwenden Sie das Inspect AI SDK in einer Rechenumgebung mit Docker-Zugriff (z. B. einer Amazon EC2 EC2-Instance oder einem SageMaker Notebook mit installiertem Docker).

Fehlerbehebung

Dieser Abschnitt bietet Lösungen für häufig auftretende Probleme bei der Durchführung von Evaluierungen mit dem Inspect AI-Container.

Tipp zur schnellen Iteration

Bevor Sie einen SageMaker Schulungsjob einreichen, testen Sie Ihre Benchmarks lokal mit dem Inspect AI SDK. Führen Sie es inspect eval my_benchmark.py auf Ihrem lokalen Computer aus, um Aufgabendefinitionen, Abhängigkeiten und Bewertungslogik zu validieren, bevor Sie es im großen Maßstab ausführen.

InsufficientInstanceCapacity error

Dieser Fehler tritt auf, wenn AWS die Kapazität für den angeforderten Instanztyp in Ihrer Region nicht ausreicht.

  • Versuchen Sie es mit einem anderen Instance-Typ oder reichen Sie den Job in einer anderen AWS Region ein

  • Verwenden Sie einen anderen Instanztyp (z. B. ml.m5.xlarge anstelle vonml.m5.large)

  • Versuchen Sie die Anfrage nach ein paar Minuten erneut

AccessDenied error

Wenn der Trainingsjob mit der Fehlermeldung „Zugriff verweigert“ fehlschlägt, überprüfen Sie Folgendes:

  • Die Rolle ARN in Ihrer Jobkonfiguration ist korrekt

  • Die Vertrauensrichtlinie ermöglicht essagemaker.amazonaws.com, die Rolle zu übernehmen

  • Ihr Benutzer oder Ihre Rolle hat die iam:PassRole Berechtigung für die Ausführungsrolle

  • Die Ausführungsrolle hat Berechtigungen für den Zugriff auf den S3-Bucket, den Inferenzendpunkt oder das Amazon Bedrock-Modell

Die Endpunkterstellung schlägt feh

Bei der Verwendung cleanup_endpoint: true mit automatischer Endpunkterstellung können die folgenden Probleme auftreten:

Fehler Lösung
ResourceLimitExceeded Beantragen Sie eine Erhöhung des Servicekontingents für den Inferenzinstanztyp in Ihrer Region
OutOfMemoryError Verwenden Sie einen größeren Inferenzinstanztyp oder reduzieren Sie die Modellgröße
Falsch model_s3_uri Stellen Sie sicher, dass der S3-Pfad auf ein gültiges Modellartefaktverzeichnis verweist
Falscher URI für das Inferenzbild Stellen Sie sicher, dass die Bild-URI für Ihre Region und Ihr Modell-Framework korrekt ist
Der Endpunkt blieb beim Erstellen hängen Überprüfen Sie die CloudWatch Protokolle für den Endpunkt. Das Modell kann die Integritätsprüfungen nicht bestehen. Erhöhen MaxRuntimeInSeconds Sie den Wert, wenn der Endpunkt mehr Zeit benötigt.

HuggingFace Timeouts beim Herunterladen

Wenn bei Benchmarks, bei denen Datensätze vom HuggingFace Hub heruntergeladen werden, eine Zeitüberschreitung eintritt, setzen Sie die HF_HUB_DOWNLOAD_TIMEOUT Umgebungsvariable auf einen höheren Wert (in Sekunden):

--environment '{"HF_HUB_DOWNLOAD_TIMEOUT": "600"}'

Job wurde beendet, aber der Endpunkt läuft immer noch

Wenn der Trainingsjob unterbrochen wird, bevor die Bereinigung abgeschlossen ist, bleibt der Inferenzendpunkt möglicherweise aktiv. Löschen Sie den Endpunkt manuell, um laufende Gebühren zu vermeiden:

# List endpoints to find the orphaned one aws sagemaker list-endpoints \ --name-contains inspect \ --query "Endpoints[].EndpointName" \ --output table # Delete the endpoint aws sagemaker delete-endpoint \ --endpoint-name your-endpoint-name # Delete the endpoint configuration aws sagemaker delete-endpoint-config \ --endpoint-config-name your-endpoint-name # Delete the model aws sagemaker delete-model \ --model-name your-endpoint-name

Konflikte zwischen Benchmark-Abhängigkeiten

Wenn ein Benchmark aufgrund von Abhängigkeitskonflikten mit vorinstallierten Paketen fehlschlägt, erstellen Sie pyproject.toml im Benchmark-Verzeichnis einen mit expliziten Versionseinschränkungen. Der Container installiert Benchmark-Abhängigkeiten isoliert, um Konflikte zu minimieren.

Die Evaluationsergebnisse sehen falsch aus

Wenn die Bewertungsergebnisse unerwartet niedrig oder inkonsistent sind, überprüfen Sie die folgenden Einstellungen in Ihrem Rezept:

  • Temperatur — Auf einstellen, um deterministische, 0.0 reproduzierbare Ergebnisse zu erhalten

  • max_tokens — Stellen Sie sicher, dass der Wert groß genug ist, damit das Modell seine Antwort abschließen kann

  • completion_mode — Legen Sie für Basismodelle (ohne Chat) completion_mode: true in Ihrem Rezept fest, dass anstelle des Chat-Formats die Eingabeaufforderung im Completion-Stil verwendet wird

Datenschutz

Ihre Bewertungsdaten werden je nach verwendetem Inferenzanbieter unterschiedlich behandelt.

SageMaker Endpunkt

Wenn Sie einen SageMaker Inferenzendpunkt verwenden, bleiben alle Daten innerhalb Ihres. AWS-Konto Bewertungsaufforderungen und Modellantworten werden nicht außerhalb Ihres Kontos gesendet und nicht zur Verbesserung AWS der Dienste verwendet. Es ist keine Opt-Out-Richtlinie erforderlich.

Amazon Bedrock

Wenn Sie Amazon Bedrock als Inferenzanbieter verwenden, unterliegen Ihre Daten der AWS Opt-Out AI-Services-Richtlinie. Um zu verhindern, dass Ihre Daten zur Verbesserung von AWS KI-Diensten verwendet werden, aktivieren Sie die Opt-Out-Richtlinie auf AWS Organisationsebene. Weitere Informationen finden Sie unter Richtlinien zur Deaktivierung von KI-Diensten.

Anbieter von Inferenzen Opt-out erforderlich Details
SageMaker Endpunkt Nein Daten bleiben in Ihrem Konto. Nicht durch die AI-Opt-Out-Richtlinie abgedeckt.
Amazon Bedrock Ja Aktivieren Sie die AWS Opt-Out KI-Servicerichtlinie auf Organisationsebene, um zu verhindern, dass Daten zur Serviceverbesserung verwendet werden.