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à.
Ottieni consigli sull'implementazione dell'inferenza generativa dell'intelligenza artificiale
I processi di raccomandazione basati sull'intelligenza artificiale analizzano le caratteristiche del modello e del carico di lavoro per generare configurazioni di implementazione ottimizzate per costi, latenza o produttività. Il servizio valuta i tipi di istanze, applica ottimizzazioni come la decodifica speculativa e confronta ogni configurazione su un'infrastruttura GPU reale.
Prerequisiti
Prima di creare un processo di raccomandazione, è necessario quanto segue:
-
Modella gli artefatti archiviati in Amazon S3 HuggingFace in formato checkpoint con pesi SafeTensor
-
Un bucket Amazon S3 per l'output dei consigli
-
Un ruolo di esecuzione di AWS Identity and Access Management (IAM) che SageMaker garantisce all'IA l'accesso agli artefatti del modello e al bucket di output
Fase 1: Creare un lavoro di raccomandazione
Un processo di raccomandazione analizza il modello e genera consigli di implementazione. È necessario specificare la posizione del modello, la posizione di output, la configurazione del carico di lavoro e un obiettivo prestazionale.
Python (boto3)
response = client.create_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job", ModelSource={ "S3": { "S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/", } }, OutputConfig={ "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/" }, PerformanceTarget={ "Constraints": [ {"Metric": "ttft-ms"} ] }, AIWorkloadConfigIdentifier="my-recommendation-workload", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", ) print(response["AIRecommendationJobArn"])
AWS CLI
aws sagemaker create-ai-recommendation-job \ --ai-recommendation-job-name "my-recommendation-job" \ --model-source '{"S3": {"S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/"}}' \ --output-config '{"S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"}' \ --performance-target '{"Constraints": [{"Metric": "ttft-ms"}]}' \ --ai-workload-config-identifier "my-recommendation-workload" \ --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \ --region us-west-2
È inoltre possibile specificare i parametri opzionali seguenti:
ComputeSpec-
Limita i tipi di istanza da valutare (massimo tre). Ad esempio:
{"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]} OptimizeModel-
Impostato
trueper consentire ottimizzazioni del modello come la decodifica speculativa. InferenceSpecification-
Specificare il framework di inferenza. Valori validi:
LMI,VLLM.
Fase 2: Monitoraggio dello stato del lavoro
Controlla lo stato del lavoro fino a quando non raggiunge lo stato terminale.
Python (boto3)
import time while True: response = client.describe_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) status = response["AIRecommendationJobStatus"] print(f"Status: {status}") if status in ("Completed", "Failed", "Stopped"): break time.sleep(30)
AWS CLI
aws sagemaker describe-ai-recommendation-job \ --ai-recommendation-job-name "my-recommendation-job" \ --region us-west-2
Fase 3: Rivedi i consigli
Al termine del processo, la risposta di descrizione include un Recommendations array. Ogni raccomandazione contiene una configurazione pronta per l'implementazione con le seguenti informazioni:
DeploymentConfiguration-
URI dell'immagine del contenitore, tipo di istanza, numero di istanze e variabili di ambiente. Puoi utilizzare questa configurazione per eseguire l'implementazione direttamente su un endpoint SageMaker AI.
ExpectedPerformance-
Metriche prestazionali convalidate, tra cui Time to First Token (TTFT), latenza delle richieste a P90 e P99, velocità effettiva in token al secondo e velocità effettiva delle richieste.
OptimizationDetails-
Tecniche di ottimizzazione applicate come la decodifica speculativa o l'ottimizzazione del kernel, con i relativi parametri di configurazione.
È possibile applicare le seguenti tecniche di ottimizzazione:
- Decodifica speculativa
-
La decodifica speculativa accelera la generazione di testo elaborando più token in parallelo anziché un token alla volta. Uno speculatore leggero propone diversi token candidati in un unico passaggio e il modello primario li verifica insieme in un unico passaggio, mantenendo i candidati che concordano con la sua distribuzione e scartando il resto. Lo speculatore viene addestrato ad allinearsi alla distribuzione dei dati del modello primario in modo da accettare un maggior numero di proposte, il che si traduce direttamente in token più utili prodotti con ogni passaggio in avanti. La distribuzione dell'output del modello primario viene preservata, quindi la qualità della risposta rimane invariata. Il risultato è un aumento dei token di output al secondo e una minore latenza tra i token (ITL), migliorando così le metriche di throughput.
- Ottimizzazione del kernel
-
L'ottimizzazione del kernel inizia con l'analisi del grafico di esecuzione del modello per identificare i kernel critici per le prestazioni che sono buoni candidati per il tuning, come i kernel di attenzione e con operatori fusi. I loro parametri di avvio e tiling vengono quindi ottimizzati in modo che l'implementazione corrisponda meglio all'hardware della GPU di destinazione e al modello di traffico previsto, ad esempio la concorrenza. Questi parametri influiscono sul riutilizzo della memoria, sulla localizzazione della cache e sul parallelismo, migliorando l'efficienza dell'esecuzione. Viene inoltre ottimizzato il numero di fasi della pipeline utilizzate per il caricamento dei dati e l'elaborazione, in modo da sovrapporre lo spostamento della memoria al calcolo. Ottimizzando questi parametri per la combinazione specifica di modello, hardware e carico di lavoro di servizio, il kernel tuning migliora il throughput e la latenza garantendo il pieno utilizzo della GPU.
Sono disponibili le seguenti metriche relative agli obiettivi prestazionali:
ttft-ms-
Tempo di creazione del primo token in millisecondi.
throughput-
Token al secondo.
cost-
Costo orario della configurazione di implementazione.
Ogni metrica della ExpectedPerformance risposta include un Stat campo che indica la misura statisticaValue, un e un campo opzionaleUnit. Le statistiche comuni includono: averagep50,p90,p95, p99max, emin.
Gestisci le risorse di raccomandazione
Utilizza le seguenti operazioni per gestire i processi di raccomandazione e le configurazioni dei carichi di lavoro.
# List recommendation jobs response = client.list_ai_recommendation_jobs(MaxResults=10) for job in response["AIRecommendationJobs"]: print(f"{job['AIRecommendationJobName']} - {job['AIRecommendationJobStatus']}") # Stop a running job client.stop_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) # Delete a job (must be in a terminal state) client.delete_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) # List workload configurations response = client.list_ai_workload_configs(MaxResults=10) for config in response["AIWorkloadConfigs"]: print(f"{config['AIWorkloadConfigName']} - {config['AIWorkloadConfigArn']}") # Delete a workload configuration client.delete_ai_workload_config( AIWorkloadConfigName="my-recommendation-workload" )