View a markdown version of this page

Valuta con Inspect AI Container - Amazon Nova

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Valuta con Inspect AI Container

Il contenitore SageMaker Inspect AI esegue le valutazioni del modello LLM su Training Jobs. SageMaker Il contenitore utilizza Inspect AI per fornire un processo di valutazione standardizzato per i modelli distribuiti sugli endpoint di SageMaker inferenza o Amazon Bedrock, inclusi i modelli Amazon Nova 1.0 (Micro, Lite, Pro) e 2.0 (Lite 2).

I precedenti approcci di valutazione (basati su lighteval) combinavano strettamente inferenza offline e logica di valutazione, il che limitava la flessibilità nel modo in cui i modelli potevano essere utilizzati e testati. Il contenitore Inspect AI separa completamente la logica di valutazione dall'inferenza.

Panoramica di

I vantaggi principali includono:

  • Crea i tuoi benchmark: scrivi le attività di valutazione nel formato Inspect AI, quindi inserisci le attività di valutazione specifiche del dominio senza dipendere da un team centralizzato che le integri.

  • Valuta con diverse opzioni di inferenza: funziona con SageMaker Inference (endpoint esistente o creato al volo), Amazon Bedrock e altri backend di inferenza in arrivo.

  • Esegui iterazioni più velocemente: passa dallo sviluppo di benchmark alla valutazione della produzione senza modifiche all'infrastruttura. L'onboarding di un nuovo benchmark, che in precedenza richiedeva giorni, avviene in pochi minuti.

  • Esegui su larga scala: concatena più benchmark in un unico lavoro, combina i benchmark standard della libreria inspect-evals con le tue attività personalizzate nello stesso lavoro.

  • Un unico punto di partenza per tutte le tecniche di formazione: indipendentemente dal fatto che il modello sia stato ottimizzato con SFT (SMTJ, SMHP), CPT (SMHP) o RFT (SMTJ, SMHP), il contenitore lo valuta tramite la stessa interfaccia. È inoltre possibile valutare i checkpoint intermedi dell'allenamento salvati in fasi specifiche (ad esempio, passaggio 500, passaggio 1000) indicando il percorso del checkpoint. model_s3_uri

Come funziona

Fornisci due input al contenitore:

  1. Un file di configurazione YAML (ricetta) che definisce il fornitore di inferenza, i benchmark e i parametri di valutazione

  2. File di benchmark (script Python con decoratore) caricati su Amazon S3 @task

Il contenitore gestisce la gestione degli endpoint, l'esecuzione della valutazione e la raccolta dei risultati. Al termine del processo di formazione, i risultati vengono scritti nella posizione di output S3 specificata.

Immagine del contenitore

La tabella seguente elenca gli URI delle immagini del contenitore Inspect AI per AWS regione.

Region URI dell'immagine del contenitore
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

Prerequisiti

Prima di iniziare, assicurati di disporre delle seguenti risorse e accessi.

Requisito Description
AWS account con SageMaker accesso Un attivo Account AWS con autorizzazioni per creare lavori di SageMaker formazione
Bucket S3 Un bucket per archiviare le ricette di valutazione, i file di benchmark e i risultati di output
Ruolo di esecuzione IAM Un ruolo che SageMaker può assumere per accedere alle tue risorse
SageMaker endpoint di inferenza o accesso ad Amazon Bedrock Un endpoint del modello distribuito o un accesso al modello Amazon Bedrock per il modello che desideri valutare
AWS CLI o Python SDK SageMaker Strumenti per inviare lavori di formazione e gestire le risorse
Prenotazione della capacità (modelli di grandi dimensioni) Per i modelli che richiedono istanze accelerate (come p5 per Nova Lite 2), contatta l' AWS assistenza per riservare la capacità per SageMaker Inference o Amazon Bedrock

Passaggio 1: configura le autorizzazioni IAM

Il SageMaker Training Job viene eseguito nell'ambito di un ruolo di esecuzione fornito dall'utente. Questo ruolo richiede le autorizzazioni per leggere i benchmark da S3, scrivere risultati, richiamare l'endpoint di inferenza e scrivere i log. CloudWatch

1.1 Creare la politica di fiducia

Salva quanto segue con nometrust_policy.json:

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

1.2 Creare il ruolo

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

1.3 Allega la politica delle autorizzazioni

Salva quanto segue con nomeeval_policy.json, sostituendo tutti i valori segnaposto (REGION,ACCOUNT_ID, nomi dei bucket) con i tuoi valori:

Riduci l'ambito alle risorse in uso

Riduci l'ARN di ogni risorsa alle sole risorse di cui hai bisogno. La politica seguente fornisce un modello di partenza: limita i nomi dei bucket, gli ARN degli endpoint e altre risorse in modo che corrispondano al tuo ambiente.

{ "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/*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint-config/*" ] }, { "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/*" } ] }

Collegare la policy al ruolo:

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

Fase 2: Scrivi la tua ricetta di valutazione

La ricetta eval è un file di configurazione YAML che definisce il modo in cui il contenitore esegue le valutazioni. La ricetta specifica il provider di inferenza, i benchmark, i parametri di valutazione e le impostazioni di output.

Per esempi completi, consulta i seguenti notebook nel repository Amazon Nova Samples su: https://github.com/aws-samples/amazon-nova-samples GitHub

Opzione A: valuta un endpoint esistente SageMaker

Usa questa opzione quando hai già un modello distribuito su un endpoint di SageMaker inferenza.

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/"

Opzione B: crea un endpoint, valuta, quindi pulisci

Usa questa opzione per fare in modo che il container distribuisca una base o un modello ottimizzato di Amazon Nova, esegua valutazioni e scomponga automaticamente l'endpoint. Questo è l'approccio consigliato per le esecuzioni di valutazione una tantum. Recupera il contenitore di SageMaker inferenza più recente dalla documentazione sulle immagini del contenitore Amazon Nova SageMaker Inference.

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/"
Nota su model_s3_uri
  • Modelli Amazon Nova GA (checkpoint di base): ad esempio, s3://escrow-nova-model-708977205387-us-east-1/nova-lite-2/prod/ — SageMaker gestisce l'accesso automaticamente, senza bisogno di autorizzazioni S3 aggiuntive.

  • Modelli Amazon Nova personalizzati (punti di controllo post-formazione): s3://customer-escrow-ACCOUNT_ID-SUFFIX/YOUR_RUN_NAME/outputs/checkpoints/step_N/ — questo è il percorso di escrow bucket in base ai risultati del lavoro di formazione.

Risorse gestite per gli endpoint

Concedi la seguente autorizzazione opzionale al tuo ruolo di esecuzione in modo che il contenitore possa etichettare le risorse di inferenza gestite con il nome del job di formazione e l'ARN di origine. Le risorse contrassegnate includono l'endpoint, la configurazione dell'endpoint e il modello. Questo aiuta a identificare le risorse in caso di interruzione della pulizia. Il contenitore applica i tag solo quando viene eseguito come SageMaker Training Job.

{ "Sid": "SageMakerTagManagedResources", "Effect": "Allow", "Action": "sagemaker:AddTags", "Resource": [ "arn:aws:sagemaker:REGION:ACCOUNT_ID:model/*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint-config/*" ] }

Il contenitore applica i seguenti tag alle risorse gestite:

Chiave tag Valore di esempio
sagemaker-inspect-ai:TrainingJobName my-eval-job-20260828-145940
sagemaker-inspect-ai:TrainingJobArn arn:aws:sagemaker:us-east-1:123456789012:training-job/my-eval-job-20260828-145940

Le fonti esterne possono interrompere la gestione delle risorse durante il runtime. Per informazioni sulla gestione delle risorse rimanenti, vedere. Risoluzione dei problemi

Opzione C: valutazione tramite Amazon Bedrock Runtime

Usa questa opzione per valutare un modello disponibile tramite Amazon Bedrock Runtime senza gestire un endpoint. Per ulteriori informazioni sulle opzioni per gli endpoint di Amazon Bedrock, consulta Amazon Bedrock endpoint.

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/

Opzione D: effettua una valutazione tramite Amazon Bedrock Mantle

Amazon Bedrock Mantle fornisce un endpoint di inferenza OpenAI compatibile per i modelli disponibili tramite Amazon Bedrock. Questa opzione non richiede una credenziale memorizzata. Il contenitore genera un token al portatore di breve durata dalle credenziali IAM del ruolo di esecuzione e lo aggiorna automaticamente tra un benchmark e l'altro.

inference_provider: openai_compatible_endpoint: auth: "bedrock_mantle" region: "us-east-1" model_name: "us.amazon.nova-pro-v1:0" benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu eval: max_connections: 10 max_retries: 50 timeout: 600 output: s3_path: s3://your-bucket/eval/output/

Aggiungi la seguente autorizzazione al tuo ruolo di esecuzione (vedi): Passaggio 1: configura le autorizzazioni IAM

{ "Sid": "BedrockMantleInference", "Effect": "Allow", "Action": [ "bedrock-mantle:CreateInference", "bedrock-mantle:CallWithBearerToken" ], "Resource": "*" }

Per informazioni sulle autorizzazioni, consulta le autorizzazioni di inferenza di Amazon Bedrock e il controllo delle autorizzazioni delle chiavi API nella documentazione di Amazon Bedrock.

Opzione E: valuta un OpenAI-endpoint compatibile

Usa questa opzione per effettuare la valutazione tramite qualsiasi endpoint API OpenAI compatibile, incluso SageMaker Inference (AWS blog) o altri provider compatibili. OpenAI Questa opzione utilizza il provider di API OpenAI compatibile con Inspect AI sul sito Web di Inspect AI, che invia la credenziale configurata come token al portatore nell'intestazione a ogni richiesta di inferenza. Authorization I token al portatore non vengono registrati per impostazione predefinita.

Guida ai fornitori di token

Prima di configurare la consegna delle credenziali, consulta sempre la documentazione del tuo fornitore di token per conoscere le pratiche di gestione delle chiavi, le politiche di rotazione e le linee guida sulla sicurezza consigliate.

Requisito HTTPS

HTTPS è richiesto per tutti gli endpoint che utilizzano l'autenticazione con token al portatore. L'HTTP è consentito solo per gli indirizzi localhost.

Utilizzo AWS Secrets Manager (consigliato)

AWS Secrets Manager fornisce archiviazione crittografata, controllo degli accessi e rotazione automatica per le chiavi API e altri segreti. CloudTrail Memorizza la chiave API in Secrets Manager e referenziala tramite ARN nella ricetta. Il contenitore recupera la chiave in fase di esecuzione e si aggiorna automaticamente tra un benchmark e l'altro.

inference_provider: openai_compatible_endpoint: model_name: "my-model" base_url: "https://my-endpoint/v1" auth: api_key api_key_secret_arn: "arn:aws:secretsmanager:us-east-1:123456789012:secret:prod/my-api-key" region: "us-east-1" benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu eval: max_connections: 10 max_retries: 50 timeout: 600 output: s3_path: s3://your-bucket/eval/output/

Aggiungi la seguente autorizzazione al tuo ruolo di esecuzione (vedi): Passaggio 1: configura le autorizzazioni IAM

{ "Sid": "GetApiKeySecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:REGION:ACCOUNT_ID:secret:YOUR_SECRET_NAME" }

Utilizzo delle variabili di ambiente

La chiave API può essere passata attraverso la variabile di ambienteINFERENCE_API_KEY. Consulta la documentazione dell'ambiente di runtime per sapere come vengono passate le variabili di ambiente e le implicazioni sulla sicurezza. Per i SageMaker Training Jobs, le variabili di ambiente sono visibili nelle risposte DescribeTrainingJob API e sono limitate a 512 caratteri. Per ulteriori informazioni, consulta Variabili di ambiente di SageMaker Training Job.

inference_provider: openai_compatible_endpoint: model_name: "my-model" base_url: "https://my-endpoint/v1" auth: api_key # No key source specified — reads from INFERENCE_API_KEY environment variable benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu eval: max_connections: 10 max_retries: 50 timeout: 600 output: s3_path: s3://your-bucket/eval/output/

Ad esempio, su SageMaker Training Jobs:

aws sagemaker create-training-job \ ... --environment '{"INFERENCE_API_KEY": "your-api-key"}'

Configurazione dei benchmark

La benchmarks sezione definisce quali attività di valutazione eseguire. È possibile concatenare più benchmark in un unico processo.

Campo Obbligatorio Predefinita Description
name Un nome descrittivo per l'esecuzione del benchmark
path Percorso relativo al file Python del benchmark nella directory dei benchmark di S3
limit No Nessuno (tutti gli esempi) Numero massimo di campioni da valutare. Da utilizzare per i test prima delle esecuzioni complete.
epochs No 1 Numero di volte in cui ripetere la valutazione per verificarne la significatività statistica
task_args No Key-value coppie passate come argomenti alla funzione benchmark task

Valuta la configurazione

La eval sezione controlla il modo in cui il contenitore esegue le valutazioni.

Parametro Obbligatorio Predefinita Description
fail_on_error No false Interrompe la valutazione se un campione fallisce. Impostato su true per una convalida rigorosa.
max_connections No 10 Numero di richieste parallele all'endpoint di inferenza
max_retries No 3 Numero di tentativi di nuovo tentativo per richieste di inferenza non riuscite
timeout No 600 Timeout della richiesta in secondi per ogni chiamata di inferenza
extra_args No Coppie chiave-valore aggiuntive passate direttamente al comando Inspect AI eval

Parametri di decodifica

Configura i parametri di decodifica del modello all'interno della sezioneeval.decoding:

Parametro Obbligatorio Predefinita Description
temperature No 0,0 Controlla la casualità nella generazione. Da utilizzare 0.0 per risultati di benchmark deterministici e riproducibili.
top_p No 1.0 Soglia di campionamento del nucleo. 1.0significa nessuna restrizione.
top_k No -1 Limita la scelta delle parole ai primi K token più probabili. -1disabilita questo filtro.
max_tokens No 8192 Numero massimo di token da generare per risposta. Aumento per i benchmark che richiedono lunghe catene di ragionamento.
reasoning_effort No null Controlla la profondità di ragionamento per i modelli che lo supportano (ad esempio, i modelli Amazon Nova con pensiero esteso). Opzioni:low,high, o null per disabilitare.

Configurazione di uscita

La output sezione definisce dove e come vengono archiviati i risultati della valutazione.

Campo Obbligatorio Predefinita Description
s3_path URI S3 in cui vengono scritti i risultati della valutazione
output_format No eval Formato per i file dei risultati. Per le opzioni, consultate la seguente tabella.

Sono disponibili i seguenti formati di output:

Formato Description
eval Formato AI nativo di Inspect. Compatibile con inspect view per l'analisi interattiva.
csv Comma-separated valori. Adatto per l'analisi di fogli di calcolo e pipeline di dati.
jsonl Formato JSON Lines. Un oggetto JSON per riga per l'elaborazione in streaming.
json Formato JSON standard. Risultati completi in un unico file strutturato.

Configurazione MLFlow

Facoltativamente, è possibile registrare le metriche di valutazione su un server di tracciamento MLFlow. Aggiungi la tracking sezione alla tua ricetta:

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
Campo Obbligatorio Predefinita Description
mlflow_tracking_arn No null ARN del tuo server di tracciamento SageMaker MLFlow. L'impostazione di questo abilita la registrazione MLFlow. Ometti o imposta su per disabilitare. null
mlflow_experiment_name No ispezionare una lente Nome dell'esperimento MLFlow in cui registrare le esecuzioni.
mlflow_tracing No true Quandotrue, registra request/response le tracce complete per ogni campione.
mlflow_log_artifacts No true Quandotrue, carica i file di .eval registro come artefatti MLFlow.

Riferimento completo alla ricetta

L'esempio seguente mostra una ricetta completa con tutte le opzioni di configurazione disponibili:

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

Fase 3: Preparare i file di benchmark

I benchmark sono file Python che utilizzano il @task decoratore Inspect AI per definire le attività di valutazione. Il repository inspect-evals fornisce oltre 128 benchmark pronti all'uso, oppure puoi scriverne uno tuo.

Esempio di benchmark

L'esempio seguente mostra un benchmark minimo che valuta le prestazioni a scelta multipla su un set di dati: 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(), )

Dipendenze

Se il tuo benchmark richiede dipendenze aggiuntive, includi un pyproject.toml or requirements.txt nella stessa directory S3:

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

Pre-installed pacchetti

Il contenitore include i seguenti pacchetti. Non è necessario elencarli nel tuopyproject.toml.

Pacchetto Versione
Python 3.12
ispezione-ai 0.3.220
boto3 1,40,61
aioboto 3 15.5.0
openai 2.36.0
mlflow 3.12.0
pyaml 6.0.3

Selezione delle attività

Il tasks campo della tua ricetta controlla quali attività all'interno di un file di benchmark eseguire.

Configurazione Esempio Comportamento
Vuoto tasks tasks: [] Esegue tutte le attività definite nel file di benchmark
Filtro dei nomi tasks: ["algebra"] Esegue attività il cui nome contiene la sottostringa «algebra»
limit limit: 50 Limita il numero di campioni valutati per attività
epochs epochs: 3 Ripete la valutazione più volte per misurare la varianza

Fase 4: Prepara la tua struttura S3

La seguente struttura è consigliata per mantenere organizzate configurazioni, benchmark e risultati. Puoi puntare il contenitore in qualsiasi posizione S3: la struttura stessa non è richiesta.

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

Carica i tuoi file su S3:

# 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

Fase 5: Invia il lavoro di formazione

Invia un lavoro SageMaker di formazione per eseguire la valutazione. Puoi usare AWS CLI o SageMaker Python SDK.

Opzione 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

Opzione B: SageMaker Python SDK v3

from sagemaker.train.evaluate import InspectAIEvaluator evaluator = InspectAIEvaluator( model="nova-textgeneration-lite-v2", bedrock_model_id="us.amazon.nova-lite-v2:0", benchmarks_path="s3://your-bucket/benchmarks/my_benchmarks/", tasks=[{"name": "my_task", "limit": 100}], s3_output_path="s3://your-bucket/eval/output/", instance_type="ml.m5.large", ) execution = evaluator.evaluate() execution.wait() execution.show_results()

Parametri chiave

Parametro Valore Description
TrainingImage 763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest L'immagine del contenitore Inspect AI
InstanceType ml.m5.large Tipo di istanza Orchestrator (non l'istanza di inferenza)
VolumeSizeInGB 30 Archiviazione per dati e log di benchmark
MaxRuntimeInSeconds 86400 Durata massima del lavoro (24 ore)
ChannelName config Canale di ingresso contenente i file di ricetta e benchmark

Indicazioni sul tipo di istanza di Orchestrator

L'istanza del training job esegue la logica di orchestrazione della valutazione, non l'inferenza del modello. Scegli un tipo di istanza in base al carico di lavoro di valutazione.

Tipo di istanza Caso d’uso Linee guida
ml.m5.large Impostazione predefinita consigliata Sufficiente per la maggior parte dei carichi di lavoro di valutazione con parallelismo moderato
ml.m5.4xlarge Ampie suite di benchmark Da utilizzare quando si eseguono molti benchmark con valori elevati max_connections
ml.c5.large Cost-sensitive Alternativa a basso costo per valutazioni semplici con basso parallelismo

Variabili di ambiente

È possibile passare variabili di ambiente al contenitore per l'autenticazione o la configurazione. Aggiungete il --environment parametro al AWS CLI comando:

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

Fase 6: Monitora il lavoro

Dopo aver inviato il lavoro di formazione, puoi monitorarne l'avanzamento tramite i CloudWatch log AWS CLI o.

Controlla lo stato del lavoro

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

Registri dello streaming

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

Cosa aspettarsi dai log

I log del contenitore mostrano i progressi nelle seguenti fasi:

  1. Avvio: inizializzazione del contenitore e convalida della configurazione

  2. Download del benchmark: download dei file di benchmark e installazione delle dipendenze

  3. Configurazione dell'endpoint: creazione o connessione all'endpoint di inferenza

  4. Valutazione: esecuzione di attività di benchmark con indicatori di progresso

  5. Caricamento dei risultati: scrittura dei risultati su S3 e facoltativamente accesso a MLFlow

  6. Pulizia: eliminazione degli endpoint temporanei se cleanup_endpoint: true

Tempistiche stimate

Stage Durata stimata
Avvio del container 2—5 minuti
Creazione di endpoint (se applicabile) 15-30 minuti
Valutazione Varia in base alle dimensioni del benchmark e alla latenza del modello
Pulizia 1—2 minuti

Fase 7: Visualizzazione e interpretazione dei risultati

Al termine del lavoro, visualizza i risultati della valutazione.

Visualizza con Inspect AI

Usa il visualizzatore Inspect AI per esplorare in modo interattivo i risultati direttamente da S3:

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

Questo comando apre un'interfaccia web locale in cui è possibile sfogliare i punteggi, visualizzare singoli campioni e confrontare le esecuzioni.

Scarica e condividi

Per scaricare i risultati localmente:

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

Estensione VS Code

L'estensione Inspect AI VS Code consente di sfogliare i registri di valutazione direttamente da S3 senza prima scaricarli.

  1. Installa l'estensione dal marketplace VS Code (cerca «Inspect AI»)

  2. Nella barra Inspect Activity, individua il riquadro Logs e scegli l'icona della cartella

  3. Inserisci il tuo percorso S3: s3://your-bucket/eval-results/

Struttura dell'output

Ogni valutazione produce un file di .eval registro che contiene le seguenti sezioni:

  • results.scores— Punteggi aggregati per ogni metrica

  • samples— Campioni di valutazione individuali con input, output e punteggi

  • stats— Statistiche di runtime, tra cui l'utilizzo e la latenza dei token

  • eval.config— La configurazione utilizzata per l'esecuzione della valutazione

Visualizza i risultati in MLFlow (opzionale)

Se hai configurato MLFlow nella tua ricetta, genera un URL prefirmato per accedere al server di tracciamento:

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

Apri l'URL restituito nel browser per visualizzare le metriche, confrontare le esecuzioni e analizzare le tendenze tra le valutazioni.

Parametri di riferimento disponibili

Il contenitore Inspect AI funziona con qualsiasi benchmark scritto nel formato di attività Inspect AI. L'archivio inspect-evals fornisce oltre 128 benchmark pronti all'uso che coprono aree come ragionamento, conoscenza, codifica e sicurezza.

Per scrivere i tuoi benchmark, consulta la documentazione sulla scrittura delle attività di Inspect AI. https://inspect.aisi.org.uk/tasks.html Se trovi un benchmark pubblico che non è ancora disponibile in inspect-evals, puoi utilizzare il prompt di onboarding dell'assistente AI per convertirlo nel formato Inspect AI.

Valutazioni agentiche

I benchmark agentici testano la capacità di un modello di completare attività in più fasi che richiedono l'uso di strumenti, pianificazione e ragionamento iterativo. Queste valutazioni simulano scenari reali in cui il modello deve chiamare strumenti, interpretare i risultati e decidere le azioni successive.

Requisiti degli endpoint

Le valutazioni agentiche richiedono endpoint che supportino le seguenti funzionalità:

  • Chiamata degli strumenti: l'endpoint deve supportare la chiamata di funzione per consentire al modello di richiamare gli strumenti durante la valutazione

  • Contesto di grandi dimensioni: Multi-turn le conversazioni con i risultati degli strumenti richiedono una lunghezza del contesto sufficiente per conservare la cronologia delle conversazioni

SageMaker Configurazione degli endpoint di inferenza

Quando utilizzi un endpoint di SageMaker inferenza per le valutazioni agentiche, configura le seguenti variabili di ambiente sull'endpoint:

Variabile di ambiente Valore Description
ENABLE_TOOL_CALLING True Attiva il supporto per le chiamate agli strumenti sull'endpoint di inferenza
CONTEXT_LENGTH Sufficiente per più giri Impostato su un valore sufficientemente elevato da consentire conversazioni a più turni con i risultati degli strumenti

Per informazioni sulla configurazione degli endpoint Amazon Nova su SageMaker Inference, consulta Distribuire i modelli Amazon Nova su. SageMaker Per informazioni sulle caratteristiche e sulla configurazione dei container, consulta Funzionalità del container.

Endpoint Amazon Bedrock

Per gli endpoint Amazon Bedrock, la chiamata agli strumenti è supportata in modo nativo per i modelli compatibili. Per ulteriori informazioni, consulta Uso degli strumenti con Amazon Bedrock.

Guida introduttiva alle valutazioni agentiche

Per eseguire le valutazioni agentiche, completa i seguenti prerequisiti:

  1. Implementa un endpoint con la chiamata agli strumenti abilitata

  2. Scegli un benchmark agentico dal repository https://github.com/UKGovernmentBEIS/inspect_evals inspect-evals (cerca i benchmark che utilizzano risolutori per la chiamata di strumenti)

  3. Configura timeout la tua ricetta max_tokens con valori appropriati per interazioni a più turni

Endpoint Amazon Bedrock

Taccuini di esempio

Il seguente notebook dimostra l'esecuzione di un benchmark agentico che chiama strumenti con il contenitore Inspect AI:

  • tau-bench (basato sul lavoro): valuta il ragionamento potenziato da strumenti sulle attività del servizio clienti utilizzando il contenitore Inspect AI

Per i benchmark agentici che richiedono una sandbox Docker, usa l'Inspect AI SDK:

Importante

I benchmark agentici che richiedono una sandbox Docker (ad esempio SWE-bench) non sono supportati nell'esperienza del contenitore Inspect AI. L'ambiente SageMaker Training Job non fornisce funzionalità. Docker-in-Docker Per eseguire questi benchmark, utilizza l'Inspect AI SDK in un ambiente di calcolo con accesso Docker (ad esempio, un'istanza o SageMaker un notebook Amazon EC2 con Docker installato).

Risoluzione dei problemi

Questa sezione fornisce soluzioni ai problemi più comuni durante l'esecuzione di valutazioni con il contenitore Inspect AI.

Suggerimento per l'iterazione rapida

Prima di inviare un lavoro di SageMaker formazione, testate i vostri benchmark localmente con Inspect AI SDK. Eseguilo inspect eval my_benchmark.py sul tuo computer locale per convalidare le definizioni delle attività, le dipendenze e la logica di punteggio prima di eseguirlo su larga scala.

InsufficientInstanceCapacity error

Questo errore si verifica quando non AWS dispone di una capacità sufficiente per il tipo di istanza richiesto nella regione.

  • Prova un tipo di istanza diverso o invia il lavoro in un'altra AWS regione

  • Usa un tipo di istanza diverso (ad esempio, ml.m5.xlarge invece diml.m5.large)

  • Riprova la richiesta dopo alcuni minuti

AccessDenied error

Se il processo di formazione fallisce con un errore di accesso negato, verifica quanto segue:

  • Il ruolo ARN nella configurazione del lavoro è corretto

  • La politica di fiducia sagemaker.amazonaws.com consente di assumere il ruolo

  • L'utente o il ruolo dispone dell'iam:PassRoleautorizzazione per il ruolo di esecuzione

  • Il ruolo di esecuzione dispone delle autorizzazioni per accedere al bucket S3, all'endpoint di inferenza o al modello Amazon Bedrock

La creazione dell'endpoint non riesce

Quando si utilizza cleanup_endpoint: true la creazione automatica degli endpoint, potrebbero verificarsi i seguenti problemi:

Errore Soluzione
ResourceLimitExceeded Richiedi un aumento della quota di servizio per il tipo di istanza di inferenza nella tua regione
OutOfMemoryError Utilizza un tipo di istanza di inferenza più grande o riduci le dimensioni del modello
Sbagliato model_s3_uri Verificate che il percorso S3 punti a una directory di artefatti del modello valida
URI dell'immagine di inferenza errato Verifica che l'URI dell'immagine sia corretto per la tua regione e il framework del modello
Endpoint bloccato in fase di creazione Controlla CloudWatch i log per l'endpoint. Il modello potrebbe non superare i controlli di integrità. Aumenta MaxRuntimeInSeconds se l'endpoint richiede più tempo.

Pulizia manuale delle risorse gestite

Con gli endpoint gestiti abilitati, le informazioni sulle risorse gestite vengono registrate CloudWatch con il termine del filtro. INFRA I registri includono AWS CLI comandi per la pulizia manuale se il contenitore non può completare lo smontaggio. Esegui le fasi di terminazione manuale solo dopo che il processo non è più in esecuzione.

Esempio di output del registro:

[WARNING] [INFRA] Managed SMI resources created; auto-deleted on normal completion or stop. If this job is force-killed or stopped mid-creation, delete them manually: aws sagemaker delete-endpoint --endpoint-name inspectlens-ep-1787856688 --region us-east-1 aws sagemaker delete-endpoint-config --endpoint-config-name inspectlens-config-1787856688 --region us-east-1 aws sagemaker delete-model --model-name inspectlens-model-1787856688 --region us-east-1

In caso di interruzione manuale del lavoro tramite stop-training-job, il container esegue una pulizia ottimale delle risorse gestite entro il periodo di tolleranza di 120 secondi. Se le risorse non possono essere ripulite, il processo termina con uno stato di errore. Se la pulizia viene completata correttamente, il processo termina in uno stato interrotto.

HuggingFace timeout di download

Se i benchmark che scaricano set di dati da HuggingFace Hub scadono, imposta la variabile di HF_HUB_DOWNLOAD_TIMEOUT ambiente su un valore più alto (in secondi):

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

Conflitti di dipendenza nel benchmark

Se un benchmark fallisce a causa di conflitti di dipendenza con i pacchetti preinstallati, creane uno pyproject.toml nella directory del benchmark con vincoli di versione espliciti. Il contenitore installa le dipendenze del benchmark in modo isolato per ridurre al minimo i conflitti.

I punteggi di valutazione sembrano sbagliati

Se i punteggi di valutazione sono inaspettatamente bassi o incoerenti, controlla le seguenti impostazioni nella tua ricetta:

  • temperatura: impostata su 0.0 per risultati deterministici e riproducibili

  • max_tokens — Assicurati che il valore sia sufficientemente grande da consentire al modello di completare la sua risposta

  • completion_mode — Per i modelli base (senza chat), imposta completion_mode: true nella tua ricetta l'uso del prompt in stile completamento anziché del formato chat

Privacy dei dati

I dati di valutazione vengono gestiti in modo diverso a seconda del fornitore di inferenze utilizzato.

SageMaker endpoint

Quando utilizzi un endpoint SageMaker Inference, tutti i dati rimangono all'interno del tuo. Account AWS Le richieste di valutazione e le risposte dei modelli non vengono inviati all'esterno dell'account e non vengono utilizzati per migliorare i servizi. AWS Non è necessaria alcuna politica di opt-out.

Amazon Bedrock

Quando utilizzi Amazon Bedrock come fornitore di inferenze, i tuoi dati sono soggetti alla Politica sui servizi di AWS intelligenza artificiale. Opt-Out Per evitare che i tuoi dati vengano utilizzati per migliorare i servizi di AWS intelligenza artificiale, abilita la politica di opt-out a livello di organizzazione. AWS Per ulteriori informazioni, consulta le politiche di esclusione dei servizi AI.

Provider di inferenze Opt-out richiesto Informazioni
SageMaker endpoint No I dati rimangono nel tuo account. Non coperto dalla politica di esclusione dell'IA.
Amazon Bedrock Abilita la Opt-Out politica sui servizi di AWS intelligenza artificiale a livello di organizzazione per impedire l'uso dei dati per il miglioramento del servizio.