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
I precedenti approcci di valutazione (basati su lighteval
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:
-
Un file di configurazione YAML (ricetta) che definisce il fornitore di inferenza, i benchmark e i parametri di valutazione
-
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
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 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 |
Sì | — | Un nome descrittivo per l'esecuzione del benchmark |
path |
Sì | — | 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 |
Sì | — | 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
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:
-
Avvio: inizializzazione del contenitore e convalida della configurazione
-
Download del benchmark: download dei file di benchmark e installazione delle dipendenze
-
Configurazione dell'endpoint: creazione o connessione all'endpoint di inferenza
-
Valutazione: esecuzione di attività di benchmark con indicatori di progresso
-
Caricamento dei risultati: scrittura dei risultati su S3 e facoltativamente accesso a MLFlow
-
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
-
Installa l'estensione dal marketplace VS Code (cerca «Inspect AI»)
-
Nella barra Inspect Activity, individua il riquadro Logs e scegli l'icona della cartella
-
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
Per scrivere i tuoi benchmark, consulta la documentazione sulla scrittura delle attività di Inspect AI. https://inspect.aisi.org.uk/tasks.html
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:
-
Implementa un endpoint con la chiamata agli strumenti abilitata
-
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) -
Configura
timeoutla tua ricettamax_tokenscon valori appropriati per interazioni a più turni
Endpoint Amazon Bedrock
-
Per una configurazione e una distribuzione complete, consulta Amazon Bedrock endpoint.
-
Per assistenza nella chiamata agli strumenti, consulta la sezione relativa alle chiamate agli strumenti lato client in Uso degli strumenti con 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:
-
SWE-bench con Inspect AI SDK
: valuta le capacità di ingegneria del software utilizzando la sandbox Docker
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.xlargeinvece 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.rproxy.goskope.comconsente 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.0per 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: truenella 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 | Sì | 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. |