

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
<a name="generative-ai-inference-recommendations-get-started"></a>

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
<a name="generative-ai-inference-recommendations-get-started-prereqs"></a>

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
<a name="generative-ai-inference-recommendations-get-started-create"></a>

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
<a name="generative-ai-inference-recommendations-get-started-monitor"></a>

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
<a name="generative-ai-inference-recommendations-get-started-results"></a>

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 statistica`Value`, un e un campo opzionale`Unit`. Le statistiche comuni includono: `average``p50`,`p90`,`p95`, `p99``max`, e`min`.

## Gestisci le risorse di raccomandazione
<a name="generative-ai-inference-recommendations-get-started-manage"></a>

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"
)
```