View a markdown version of this page

Ottieni consigli sull'implementazione dell'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à.

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 true per 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" )