View a markdown version of this page

Imposta una configurazione del carico di lavoro per i consigli di inferenza generativa dell'intelligenza artificiale - Amazon SageMaker AI

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à.

Imposta una configurazione del carico di lavoro per i consigli di inferenza generativa dell'intelligenza artificiale

Una configurazione del carico di lavoro definisce i modelli di traffico e i parametri di benchmark utilizzati dall' SageMaker IA per valutare il modello o l'endpoint. È necessario creare una configurazione del carico di lavoro prima di eseguire un processo di raccomandazione o un processo di benchmark. La stessa configurazione del carico di lavoro può essere riutilizzata in più job.

Puoi definire il tuo carico di lavoro in due modi:

  • Specificazione in linea. Specificate le distribuzioni dei token e i parametri del traffico direttamente nella chiamata API.

  • Set di dati da Amazon S3. Fornisci un set di dati rappresentativo di richieste reali utilizzando il parametro. DatasetConfig

Crea una configurazione del carico di lavoro con parametri in linea

Utilizza i parametri in linea per specificare le distribuzioni dei token quando non disponi di un set di dati rappresentativo.

Python (boto3)

import boto3 import json client = boto3.client("sagemaker", region_name="us-west-2") workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "prompt_input_tokens_mean": 550, "prompt_input_tokens_stddev": 150, "output_tokens_mean": 150, "output_tokens_stddev": 50, }, } response = client.create_ai_workload_config( AIWorkloadConfigName="my-workload-config", AIWorkloadConfigs={ "WorkloadSpec": {"Inline": json.dumps(workload_spec)} }, ) print(response["AIWorkloadConfigArn"])

AWS CLI

aws sagemaker create-ai-workload-config \ --ai-workload-config-name "my-workload-config" \ --ai-workload-configs '{"WorkloadSpec": {"Inline": "{\"benchmark\": {\"type\": \"aiperf\"}, \"parameters\": {\"prompt_input_tokens_mean\": 550, \"output_tokens_mean\": 150}}"}}' \ --region us-west-2

Crea una configurazione del carico di lavoro con un set di dati

Se disponi di un set di dati rappresentativo di richieste reali, forniscilo tramite Amazon S3 utilizzando DatasetConfig il parametro con InputDataConfig un canale.

response = client.create_ai_workload_config( AIWorkloadConfigName="my-dataset-workload", DatasetConfig={ "InputDataConfig": [ { "ChannelName": "traffic", "DataSource": { "S3DataSource": { "S3Uri": "s3://DOC-EXAMPLE-BUCKET/datasets/traffic-trace/" } } } ] }, AIWorkloadConfigs={ "WorkloadSpec": {"Inline": json.dumps(workload_spec)} }, )

Per impostazione predefinita, vengono generati prompt sintetici. Puoi anche utilizzare un set di dati pubblico o fornire un set di dati personalizzato da Amazon S3.

Configurazione del carico di lavoro per il benchmarking

Quando si crea una configurazione del carico di lavoro per il benchmarking di un endpoint esistente, è possibile specificare parametri aggiuntivi come tokenizer, concorrenza, numero di richieste e frequenza delle richieste.

workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "tokenizer": "TinyLlama/TinyLlama-1.1B-Chat-v1.0", "concurrency": 1, "request_count": 10, "streaming": True, "prompt_input_tokens_mean": 550, "prompt_input_tokens_stddev": 150, "output_tokens_mean": 50, "output_tokens_stddev": 10, "request_rate": 1.0, "benchmark_duration": 60, }, "tooling": {"api_standard": "openai", "version": "0.6.0"}, }

Gestisci le configurazioni dei carichi di lavoro

Utilizza le seguenti operazioni per gestire le configurazioni del carico di lavoro.

# List workload configurations response = client.list_ai_workload_configs(MaxResults=10) for config in response["AIWorkloadConfigs"]: print(f"{config['AIWorkloadConfigName']} - {config['AIWorkloadConfigArn']}") # Describe a workload configuration response = client.describe_ai_workload_config( AIWorkloadConfigName="my-workload-config" ) # Delete a workload configuration client.delete_ai_workload_config( AIWorkloadConfigName="my-workload-config" )

Riferimento alle specifiche del carico di lavoro

Questa sezione fornisce lo schema completo per il documento JSON con le specifiche del carico di lavoro che viene passato WorkloadSpec.Inline sul campo durante la creazione di una configurazione del carico di lavoro.

Sintassi

Di seguito è riportato un esempio rappresentativo di una specifica del carico di lavoro con parametri di uso comune. Tutti i parametri sono documentati nella tabella di riferimento riportata di seguito.

{ "benchmark": { "type": "aiperf" }, "parameters": { "prompt_input_tokens_mean": 550, "prompt_input_tokens_stddev": 150.0, "output_tokens_mean": 150, "output_tokens_stddev": 50.0, "concurrency": 10, "request_count": 100, "request_rate": 5.0, "benchmark_duration": 120, "streaming": true, "tokenizer": "meta-llama/Llama-3.2-1B" }, "secrets": { "hf_token": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-hf-token-AbCdEf" }, "tooling": { "api_standard": "openai" } }

Chiavi per le specifiche del carico di lavoro

La specifica del carico di lavoro contiene le seguenti chiavi di primo livello. Le chiavi sconosciute vengono rifiutate.

benchmark

Mappatura obbligatoria. Identifica lo strumento di benchmarking da utilizzare.

benchmark/type

Obbligatorio. Il motore di riferimento. L’unico valore valido è aiperf.

parametri

Mappatura opzionale. Parametri di benchmark passati al motore AIPerf. I nomi di parametri sconosciuti vengono rifiutati. Tutti i parametri sono opzionali se non diversamente specificato.

Distribuzione dei token

prompt_input_tokens_mean

Numero intero. Numero medio di token di input per richiesta per la generazione di prompt sintetici. Alias:,. synthetic_input_tokens_mean isl

prompt_input_tokens_stddev

Galleggiante. Deviazione standard del conteggio dei token di input. Alias:synthetic_input_tokens_stddev,. isl_stddev

output_tokens_mean

Numero intero. Numero medio di token di output per richiesta. Alias:prompt_output_tokens_mean,. osl

output_tokens_stddev

Galleggiante. Deviazione standard del conteggio dei token di output. Alias:prompt_output_tokens_stddev,. osl_stddev

Modellamento del traffico

concurrency

Numero intero. Numero di richieste simultanee da inviare durante il benchmark.

request_count

Numero intero. Numero totale di richieste da inviare. Pseudonimo:num_requests.

request_rate

Galleggiante. Richieste target al secondo.

benchmark_duration

Numero intero. Durata del benchmark in secondi.

max_concurrency

Numero intero. Numero massimo di richieste simultanee consentite.

request_rate_mode

Stringa. Schema di arrivo delle richieste. Pseudonimo:arrival_pattern.

arrival_smoothness

Galleggiante. Controlla la frequenza degli arrivi delle richieste. Valori più alti producono un traffico più fluido. Pseudonimo:. vllm_burstiness

prefill_concurrency

Numero intero. Numero di richieste di precompilazione simultanee.

Ambito generale

streaming

booleano. Se utilizzare le risposte in streaming. Default: true.

tokenizer

Stringa. HuggingFace nome del modello o percorso della directory locale per il tokenizer utilizzato per contare i token. Esempio: meta-llama/Llama-3.2-1B.

hf_token

Stringa. Token di accesso Hugging Face per scaricare modelli e tokenizzatori recintati. HF_TOKENPseudonimo:. Per i valori sensibili, usa la secrets sezione invece di passare il token in testo semplice.

request_timeout_seconds

Numero intero. Timeout in secondi per richieste individuali.

benchmark_grace_period

Numero intero. Periodo di tolleranza in secondi dopo il completamento del benchmark per consentire il completamento delle richieste in volo.

extra_inputs

Stringa. JSON-encoded Ingressi aggiuntivi da includere nel payload di ogni richiesta.

random_seed

Numero intero. Seme per la generazione di numeri casuali. Default: 42.

verbose

booleano. Abilita la registrazione dettagliata. Default: false.

num_conversations

Numero intero. Numero di conversazioni a più turni da simulare. Pseudonimi:,. conversation_num num_sessions

model_selection_strategy

Stringa. Strategia per la selezione dei modelli quando sull'endpoint sono disponibili più modelli.

Riscaldamento

I parametri di riscaldamento controllano una fase di riscaldamento opzionale che precede il benchmark misurato. Questo prepara le cache del server modello e la compilazione JIT.

warmup_duration

Numero intero. Durata della fase di riscaldamento in secondi.

warmup_request_count

Numero intero. Numero di richieste di riscaldamento. Pseudonimo:. num_warmup_requests

warmup_concurrency

Numero intero. Livello di concorrenza durante il riscaldamento.

warmup_prefill_concurrency

Numero intero. Precompila la concorrenza durante il riscaldamento.

warmup_request_rate

Galleggiano. Richiedi la tariffa durante il riscaldamento.

warmup_arrival_pattern

Stringa. Schema di arrivo durante il riscaldamento.

warmup_grace_period

Galleggiante. Periodo di grazia in secondi dopo il completamento del riscaldamento.

num_warmup_sessions

Numero intero. Numero di sessioni di riscaldamento.

Set di dati

public_dataset

Stringa. Nome di un set di dati pubblico da utilizzare per i prompt di benchmark anziché per la generazione sintetica.

custom_dataset_type

Stringa. Formato di un set di dati personalizzato fornito tramite Amazon S3.

input_file

Stringa. Percorso del file del set di dati di input all'interno del contenitore di benchmark. Quando si fornisce un set di dati tramite il DatasetConfig parametro, i dati vengono montati su. /opt/ml/input/data/{ChannelName}/ Utilizzate questo parametro per puntare a un file specifico all'interno di quel percorso di montaggio.

Ingressi di immagini

Parametri per il benchmarking di modelli multimodali che accettano input di immagini.

image_width_mean

Fluttuano. Larghezza media delle immagini sintetiche in pixel.

image_width_stddev

Fluttua. Deviazione standard della larghezza dell'immagine.

image_height_mean

Galleggiante. Altezza media delle immagini sintetiche in pixel.

image_height_stddev

Fluttua. Deviazione standard dell'altezza dell'immagine.

image_batch_size

Numero intero. Numero di immagini per richiesta. Pseudonimo:batch_size_image.

image_format

Stringa. Formato dell'immagine (ad esempiopng,jpeg).

Ingressi video

Parametri per il benchmarking dei modelli multimodali che accettano ingressi video.

video_batch_size

Numero intero. Numero di video per richiesta. Pseudonimo:batch_size_video.

video_duration

Galleggiante. Durata dei video sintetici in secondi.

video_fps

Numero intero. Fotogrammi al secondo per video sintetici.

video_width

Numero intero. Larghezza dei video sintetici in pixel.

video_height

Numero intero. Altezza dei video sintetici in pixel.

video_synth_type

Stringa. Tipo di generazione di video sintetici.

video_format

Stringa. Formato contenitore video.

video_codec

Stringa. Codec video.

video_audio_sample_rate

Numero intero. Frequenza di campionamento audio in Hz.

video_audio_num_channels

Numero intero. Numero di canali audio.

video_audio_codec

Stringa. Codec audio.

video_audio_depth

Stringa. Profondità di bit audio.

segreti

Mappatura opzionale. Utilizzate questa sezione per trasmettere valori sensibili (come i token di accesso Hugging Face) facendo riferimento ai segreti di Secrets Manager invece di AWS includerli come testo semplice. parameters

Ogni chiave è un nome di parametro e il valore è l'ARN del segreto in AWS Secrets Manager. All'inizio del processo, il servizio risolve il segreto e inserisce il valore nell'ambiente di riferimento.

"secrets": { "hf_token": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-hf-token-AbCdEf" }

utensili

Mappatura opzionale. Speciifica lo standard dell'API e la versione dello strumento.

tooling/api_standard

Opzionale. Lo standard API utilizzato dall'endpoint. Ad esempio, openai.

tooling/version

Opzionale. La versione dello strumento di benchmarking. L'impostazione predefinita è l'ultima versione disponibile.