

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

# Inferenza asincrona
<a name="async-inference"></a>

Amazon SageMaker Asynchronous Inference è una funzionalità dell' SageMaker intelligenza artificiale che mette in coda le richieste in entrata e le elabora in modo asincrono. Questa opzione è ideale per richieste con payload di grandi dimensioni (fino a 1 GB), tempi di elaborazione lunghi (fino a un'ora) e requisiti di latenza quasi in tempo reale. L'inferenza asincrona consente di risparmiare sui costi ridimensionando automaticamente il numero di istanze a zero quando non ci sono richieste da elaborare, in modo da pagare solo quando l'endpoint sta elaborando le richieste.

## Come funziona
<a name="async-inference-how-it-works"></a>

La creazione di un endpoint di inferenza asincrona è simile alla creazione di endpoint di inferenza in tempo reale. Puoi utilizzare i tuoi modelli di SageMaker intelligenza artificiale esistenti e devi solo specificare l'`AsyncInferenceConfig`oggetto durante la creazione della configurazione dell'endpoint con il campo nell'API. `EndpointConfig` `CreateEndpointConfig` Il seguente diagramma mostra l'architettura e il flusso di lavoro di inferenza asincrona.

![\[Diagramma di architettura dell’inferenza asincrona che mostra come un utente invoca un endpoint.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/async-architecture.png)


Per invocare l’endpoint, è necessario inserire il payload della richiesta in Amazon S3. È inoltre necessario fornire un puntatore a questo payload nell’ambito della richiesta `InvokeEndpointAsync`. Al momento della chiamata, l' SageMaker IA mette in coda la richiesta per l'elaborazione e restituisce un identificatore e una posizione di output come risposta. Al momento dell'elaborazione, l' SageMaker intelligenza artificiale colloca il risultato nella posizione Amazon S3. Facoltativamente, puoi scegliere di ricevere notifiche di successo o di errore con Amazon SNS. Per ulteriori informazioni su come configurare le notifiche asincrone, consulta [Controllo dei risultati della previsione](async-inference-check-predictions.md).

**Nota**  
La presenza di un oggetto di configurazione di inferenza asincrona (`AsyncInferenceConfig`) nella configurazione dell'endpoint implica che l'endpoint può ricevere solo chiamate asincrone.

## Come si inizia?
<a name="async-inference-how-to-get-started"></a>

Se sei un utente alle prime armi di Amazon SageMaker Asynchronous Inference, ti consigliamo di fare quanto segue:
+ Leggi [Operazioni asincrone degli endpoint](async-inference-create-invoke-update-delete.md) per informazioni su come creare, richiamare, aggiornare ed eliminare un endpoint asincrono.
+ [Esplora il notebook di esempio di [Asynchronous](https://github.com/aws/amazon-sagemaker-examples/blob/main/async-inference/Async-Inference-Walkthrough.ipynb) Inference nel repository aws/. amazon-sagemaker-examples](https://github.com/aws/amazon-sagemaker-examples) GitHub 

Tieni presente che se l'endpoint utilizza una delle funzionalità elencate nella pagina [Esclusioni](deployment-guardrails-exclusions.md), non puoi utilizzare l’inferenza asincrona.

# Operazioni asincrone degli endpoint
<a name="async-inference-create-invoke-update-delete"></a>

Questa guida illustra i prerequisiti da soddisfare per creare un endpoint asincrono e spiega come creare, richiamare ed eliminare gli endpoint asincroni. [Puoi creare, aggiornare, eliminare e richiamare endpoint asincroni con l'SDK AWS SDKs Amazon Python. SageMaker ](https://sagemaker.readthedocs.io/en/stable/overview.html#sagemaker-asynchronous-inference)

**Topics**
+ [Completa i prerequisiti](async-inference-create-endpoint-prerequisites.md)
+ [Come creare un endpoint di inferenza asincrona](async-inference-create-endpoint.md)
+ [Richiama un endpoint asincrono](async-inference-invoke-endpoint.md)
+ [Aggiorna un endpoint asincrono](async-inference-update-endpoint.md)
+ [Elimina un endpoint asincrono](async-inference-delete-endpoint.md)

# Completa i prerequisiti
<a name="async-inference-create-endpoint-prerequisites"></a>

Il seguente argomento descrive i prerequisiti che è necessario completare prima di creare un endpoint asincrono. Questi prerequisiti includono la corretta memorizzazione degli artefatti del modello, la configurazione di un AWS IAM con le autorizzazioni corrette e la selezione di un'immagine del contenitore.

**Per completare i prerequisiti**

1. **Crea un ruolo IAM per Amazon SageMaker AI.**

   L'inferenza asincrona richiede l'accesso all'URI del bucket Amazon S3. Per facilitare questa operazione, crea un ruolo IAM in grado di eseguire l' SageMaker intelligenza artificiale e che disponga dell'autorizzazione per accedere ad Amazon S3 e Amazon SNS. Utilizzando questo ruolo, l' SageMaker intelligenza artificiale può funzionare sul tuo account e accedere al tuo bucket Amazon S3 e agli argomenti di Amazon SNS.

   Puoi creare un ruolo IAM utilizzando la console IAM, AWS SDK per Python (Boto3) oppure. AWS CLI Di seguito è riportato un esempio di come creare un ruolo IAM e collegare le policy necessarie alla console IAM.

   1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. Nel pannello di navigazione della console IAM, scegliere **Ruoli** e quindi **Crea ruolo**.

   1. Per **Seleziona tipo di entità attendibile**, seleziona **Servizio AWS **.

   1. Scegliere il servizio a cui concedere l'autorizzazione ad assumere il ruolo. In questo caso, scegli **SageMaker AI**. Quindi scegliere **Next: Permissions (Successivo: Autorizzazioni)**.
      + Questo crea automaticamente una policy IAM che garantisce l'accesso a servizi correlati come Amazon S3, Amazon ECR e Logs. CloudWatch 

   1. Scegli **Successivo: Tag**.

   1. (Facoltativo) Aggiungere metadati al ruolo collegando i tag come coppie chiave-valore. Per ulteriori informazioni sull'utilizzo dei tag con IAM, consulta [Tagging delle risorse IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_tags.html).

   1. Scegli **Prossimo: Rivedi**.

   1. Digita un **Nome ruolo**. 

   1. Se possibile, digitare un nome del ruolo o un suffisso del nome del ruolo. I nomi dei ruoli devono essere univoci all'interno del tuo account. AWS Non si distinguono per caso. Ad esempio, non è possibile creare ruoli denominati sia `PRODROLE` che `prodrole`. Poiché altre AWS risorse potrebbero fare riferimento al ruolo, non è possibile modificare il nome del ruolo dopo che è stato creato.

   1. (Facoltativo) In **Role description (Descrizione ruolo)**, immettere una descrizione per il nuovo ruolo.

   1. Rivedere il ruolo e scegliere **Crea ruolo**.

      Nota il ruolo dell' SageMaker IA ARN. Per trovare il ruolo ARN tramite la console, effettua le seguenti operazioni:

      1. Vai alla console IAM: [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

      1. Seleziona **Ruoli**.

      1. Cerca il ruolo appena creato digitando il nome del ruolo nel campo di ricerca.

      1. Seleziona il ruolo.

      1. L'ARN del ruolo si trova nella parte superiore della pagina **Riepilogo**.

1. **Aggiungi le autorizzazioni Amazon SageMaker AI, Amazon S3 e Amazon SNS al tuo ruolo IAM.**

   Una volta creato il ruolo, concedi le autorizzazioni SageMaker AI, Amazon S3 e, facoltativamente, Amazon SNS al tuo ruolo IAM.

   Nella console IAM, scegli **Ruoli**. Cerca il ruolo creato digitando il nome del ruolo nel campo **Cerca**.

   1. Scegli il tuo ruolo.

   1. Quindi, scegli **Collega policy**.

   1. Amazon SageMaker Asynchronous Inference necessita dell'autorizzazione per eseguire le seguenti azioni:`"sagemaker:CreateModel"`,, `"sagemaker:CreateEndpointConfig"` e. `"sagemaker:CreateEndpoint"` `"sagemaker:InvokeEndpointAsync"` 

      Queste azioni sono incluse nella policy. `AmazonSageMakerFullAccess` Aggiungi questa policy al tuo ruolo IAM. Cerca `AmazonSageMakerFullAccess` nel campo **Cerca**. Seleziona `AmazonSageMakerFullAccess`.

   1. Scegli **Collega policy**.

   1. Quindi, scegli **Collega policy** per aggiungere le autorizzazioni Amazon S3.

   1. Seleziona **Crea policy**.

   1. Seleziona la scheda `JSON`.

   1. Aggiungi la seguente dichiarazione di policy:

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Action": [
                      "s3:GetObject",
                      "s3:PutObject",
                      "s3:AbortMultipartUpload",
                      "s3:ListBucket"  
                  ],
                  "Effect": "Allow",
                  "Resource": "arn:aws:s3:::bucket_name/*"
              }
          ]
      }
      ```

------

   1. Scegli **Successivo: Tag**.

   1. Digitare un **Nome policy**.

   1. Scegli **Crea policy**.

   1. Ripeti le stesse fasi che hai già completato per aggiungere le autorizzazioni Amazon S3 al fine di aggiungere le autorizzazioni Amazon SNS. Per la dichiarazione sulla policy, collega quanto segue:

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Action": [
                      "sns:Publish"
                  ],
                  "Effect": "Allow",
      "Resource": "arn:aws:sns:us-east-1:111122223333:SNS_Topic"
              }
          ]
      }
      ```

------

1. **Carica i tuoi dati di inferenza (ad es. modello di machine learning, dati di esempio) **su Amazon S3**.**

1. **Seleziona un'immagine di inferenza Docker predefinita o crea la tua immagine Docker di inferenza.**

   SageMaker L'intelligenza artificiale fornisce contenitori per i suoi algoritmi integrati e immagini Docker predefinite per alcuni dei framework di machine learning più comuni, come Apache, e Chainer. MXNet TensorFlow PyTorch Per un elenco completo delle immagini SageMaker AI disponibili, consulta Available [Deep Learning Containers Images](https://github.com/aws/deep-learning-containers/blob/master/available_images.md). Se scegli di utilizzare un contenitore fornito dall' SageMaker IA, puoi aumentare il timeout dell'endpoint e le dimensioni del payload rispetto ai valori predefiniti impostando le variabili di ambiente nel contenitore. Per informazioni su come impostare le diverse variabili di ambiente per ogni framework, consulta la fase Creazione di un modello per la creazione di un endpoint asincrono.

   Se nessuno dei contenitori SageMaker AI esistenti soddisfa le tue esigenze e non disponi di un container personale, potresti dover creare un nuovo contenitore Docker. Per informazioni su come creare un'immagine Docker, consulta [Container con codice di inferenza personalizzato](your-algorithms-inference-main.md).

1. **Creare un argomento Amazon SNS (opzionale)**

   Crea un argomento Amazon Simple Notification Service (Amazon SNS) che invii notifiche relative alle richieste che hanno completato l'elaborazione. Amazon SNS è un servizio di notifica per applicazioni orientate alla messaggistica, con più abbonati che richiedono e ricevono notifiche «push» di messaggi urgenti tramite una scelta di protocolli di trasporto, tra cui HTTP, Amazon SQS ed e-mail. Puoi specificare gli argomenti di Amazon SNS quando crei un oggetto `EndpointConfig` quando specifichi `AsyncInferenceConfig` utilizzando l'API `EndpointConfig`. 

   Completa la procedura per creare e sottoscrivere un argomento Amazon SNS.

   1. Utilizzando la console di Amazon SNS, crea un argomento. Per le istruzioni, consulta la sezione [Creazione di un argomento Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) nella *Guida per gli sviluppatori* di *Amazon Simple Notification Service*.

   1. Effettuare la sottoscrizione all'argomento. Per le istruzioni, consulta la sezione [Sottoscrizione a un argomento di Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) nella *Guida per gli sviluppatori* di *Amazon Simple Notification Service*.

   1. Quando ricevi un'e-mail in cui è richiesto di confermare la sottoscrizione all'argomento, conferma l'iscrizione.

   1. Prendi nota del nome della risorsa Amazon (ARN) dell'argomento. L'argomento Amazon SNS che hai creato è un'altra risorsa del tuo AWS account e ha un ARN unico. Il nome ARN presenta il formato seguente:

      ```
      arn:aws:sns:aws-region:account-id:topic-name
      ```

   Per ulteriori informazioni su Amazon SNS, consulta la [Guida per gli sviluppatori di Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html).

# Come creare un endpoint di inferenza asincrona
<a name="async-inference-create-endpoint"></a>

Crea un endpoint asincrono nello stesso modo in cui creeresti un endpoint utilizzando i servizi di hosting AI: SageMaker 
+ Crea un modello in AI con. SageMaker `CreateModel`
+ Crea una configurazione endpoint con `CreateEndpointConfig`.
+ Crea un endpoint HTTPS con `CreateEndpoint`.

Per creare un endpoint, devi prima creare un modello con [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html), in cui punti all'artefatto del modello e a un percorso di registro Docker (immagine). Quindi crei una configurazione specificando uno o più modelli creati utilizzando l'`CreateModel`API per la distribuzione e le risorse di cui desideri che l' SageMaker IA fornisca. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) Crea un endpoint con [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) utilizzando la configurazione specificata nella richiesta. Puoi aggiornare un endpoint asincrono con l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html). Invia e ricevi richieste di inferenza dal modello ospitato sull'endpoint con `InvokeEndpointAsync`. Puoi eliminare i tuoi endpoint con l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html).

Per un elenco completo delle SageMaker immagini disponibili, consulta Available [Deep Learning Containers Images](https://github.com/aws/deep-learning-containers/blob/master/available_images.md). Per informazioni su come creare un'immagine Docker, consulta [Container con codice di inferenza personalizzato](your-algorithms-inference-main.md).

**Topics**
+ [Creazione di un modello](async-inference-create-endpoint-create-model.md)
+ [Creazione di una configurazione endpoint](async-inference-create-endpoint-create-endpoint-config.md)
+ [Creazione endpoint](async-inference-create-endpoint-create-endpoint.md)

# Creazione di un modello
<a name="async-inference-create-endpoint-create-model"></a>

L'esempio seguente mostra come creare un modello utilizzando AWS SDK per Python (Boto3). Le prime righe definiscono:
+ `sagemaker_client`: Un oggetto client SageMaker AI di basso livello che semplifica l'invio e la ricezione di richieste ai AWS servizi.
+ `sagemaker_role`: una variabile stringa con il ruolo SageMaker AI IAM Amazon Resource Name (ARN).
+ `aws_region`: una variabile di stringa con il nome della tua AWS regione.

```
import boto3

# Specify your AWS Region
aws_region='<aws_region>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Role to give SageMaker permission to access AWS services.
sagemaker_role= "arn:aws:iam::<account>:role/*"
```

Successivamente, specifica la posizione del modello preformato archiviato in Amazon S3. In questo esempio, utilizziamo un XGBoost modello pre-addestrato denominato`demo-xgboost-model.tar.gz`. L'URI completo di Amazon S3 è memorizzato in una variabile stringa `model_url`:

```
#Create a variable w/ the model S3 URI
s3_bucket = '<your-bucket-name>' # Provide the name of your S3 bucket
bucket_prefix='saved_models'
model_s3_key = f"{bucket_prefix}/demo-xgboost-model.tar.gz"

#Specify S3 bucket w/ model
model_url = f"s3://{s3_bucket}/{model_s3_key}"
```

Specifica un container principale. Per il container principale, specifica l'immagine Docker contenente il codice di inferenza, gli artefatti (dall’addestramento precedente) e la mappa dell'ambiente personalizzata che il codice di inferenza utilizza quando distribuisci il modello per le previsioni.

 In questo esempio, specifichiamo un'immagine del contenitore dell'algoritmo XGBoost integrato: 

```
from sagemaker import image_uris

# Specify an AWS container image. 
container = image_uris.retrieve(region=aws_region, framework='xgboost', version='0.90-1')
```

Crea un modello in Amazon SageMaker AI con`CreateModel`. Specificare le impostazioni seguenti:
+ `ModelName`: un nome per il modello (in questo esempio viene memorizzato come una variabile di stringa chiamata `model_name`).
+ `ExecutionRoleArn`: Amazon Resource Name (ARN) del ruolo IAM che Amazon SageMaker AI può assumere per accedere agli artefatti del modello e alle immagini Docker per la distribuzione su istanze di calcolo ML o per lavori di trasformazione in batch.
+ `PrimaryContainer`: il percorso dell'immagine docker principale contenente il codice di inferenza, gli artefatti associati e la mappa dell'ambiente personalizzata che il codice di inferenza utilizza quando il modello è distribuito per le previsioni.

```
model_name = '<The_name_of_the_model>'

#Create model
create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url,
    })
```

Per un elenco completo dei parametri SageMaker API, consulta la [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)descrizione nella Guida di riferimento delle API.

Se utilizzi un contenitore fornito dall' SageMaker intelligenza artificiale, puoi aumentare il timeout del server del modello e le dimensioni del payload dai valori predefiniti ai valori massimi supportati dal framework impostando le variabili di ambiente in questo passaggio. Potresti non essere in grado di sfruttare le dimensioni massime di timeout e payload supportate da Asynchronous Inference se non imposti esplicitamente queste variabili. L'esempio seguente mostra come impostare le variabili di ambiente per un contenitore di inferenza basato su. PyTorch TorchServe

```
model_name = '<The_name_of_the_model>'

#Create model
create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url,
        'Environment': {
            'TS_MAX_REQUEST_SIZE': '100000000',
            'TS_MAX_RESPONSE_SIZE': '100000000',
            'TS_DEFAULT_RESPONSE_TIMEOUT': '1000'
        },
    })
```

Dopo aver finito di creare l'endpoint, dovresti verificare di aver impostato correttamente le variabili di ambiente stampandole dallo script `inference.py`. La tabella seguente elenca le variabili di ambiente per diversi framework che potete impostare per modificare i valori predefiniti.


| Framework | Variabili di ambiente | 
| --- | --- | 
|  PyTorch 1.8 (basato su TorchServe)  |  'TS\$1MAX\$1REQUEST\$1SIZE': '100000000' 'TS\$1MAX\$1RESPONSE\$1SIZE': '100000000' 'TS\$1DEFAULT\$1RESPONSE\$1TIMEOUT': '1000'  | 
|  PyTorch 1.4 (basato su MMS)  |  'MMS\$1MAX\$1REQUEST\$1SIZE': '1000000000' 'MMS\$1MAX\$1RESPONSE\$1SIZE': '1000000000' 'MMS\$1DEFAULT\$1RESPONSE\$1TIMEOUT': '900'  | 
|  HuggingFace Contenitore di inferenza (basato su MMS)  |  'MMS\$1MAX\$1REQUEST\$1SIZE': '2000000000' 'MMS\$1MAX\$1RESPONSE\$1SIZE': '2000000000' 'MMS\$1DEFAULT\$1RESPONSE\$1TIMEOUT': '900'  | 

# Creazione di una configurazione endpoint
<a name="async-inference-create-endpoint-create-endpoint-config"></a>

Una volta creato un modello, crea una configurazione dell'endpoint con [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html). I servizi di hosting Amazon SageMaker AI utilizzano questa configurazione per distribuire modelli. Nella configurazione, identifichi uno o più modelli, creati utilizzando with [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html), per distribuire le risorse di cui desideri che Amazon SageMaker AI fornisca. Specifica l'oggetto `AsyncInferenceConfig` e fornisci una posizione di output Amazon S3 per `OutputConfig`. Facoltativamente, puoi specificare gli argomenti di [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) su cui inviare notifiche sui risultati delle previsioni. Per ulteriori informazioni sugli argomenti Amazon SNS, consulta [Configurazione di Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-configuring.html).

Nell'esempio seguente viene illustrato come creare una configurazione endpoint utilizzando AWS SDK per Python (Boto3):

```
import datetime
from time import gmtime, strftime

# Create an endpoint config name. Here we create one based on the date  
# so it we can search endpoints based on creation time.
endpoint_config_name = f"XGBoostEndpointConfig-{strftime('%Y-%m-%d-%H-%M-%S', gmtime())}"

# The name of the model that you want to host. This is the name that you specified when creating the model.
model_name='<The_name_of_your_model>'

create_endpoint_config_response = sagemaker_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name, # You will specify this name in a CreateEndpoint request.
    # List of ProductionVariant objects, one for each model that you want to host at this endpoint.
    ProductionVariants=[
        {
            "VariantName": "variant1", # The name of the production variant.
            "ModelName": model_name, 
            "InstanceType": "ml.m5.xlarge", # Specify the compute instance type.
            "InitialInstanceCount": 1 # Number of instances to launch initially.
        }
    ],
    AsyncInferenceConfig={
        "OutputConfig": {
            # Location to upload response outputs when no location is provided in the request.
            "S3OutputPath": f"s3://{s3_bucket}/{bucket_prefix}/output"
            # (Optional) specify Amazon SNS topics
            "NotificationConfig": {
                "SuccessTopic": "arn:aws:sns:aws-region:account-id:topic-name",
                "ErrorTopic": "arn:aws:sns:aws-region:account-id:topic-name",
            }
        },
        "ClientConfig": {
            # (Optional) Specify the max number of inflight invocations per instance
            # If no value is provided, Amazon SageMaker will choose an optimal value for you
            "MaxConcurrentInvocationsPerInstance": 4
        }
    }
)

print(f"Created EndpointConfig: {create_endpoint_config_response['EndpointConfigArn']}")
```

Nell'esempio precedente, si specificano le seguenti chiavi `OutputConfig` per il campo `AsyncInferenceConfig`:
+ `S3OutputPath`: posizione in cui caricare gli output di risposta quando nella richiesta non viene fornita alcuna posizione.
+ `NotificationConfig`: (facoltativo) Argomenti SNS che inviano notifiche all'utente quando una richiesta di inferenza ha esito positivo (`SuccessTopic`) o negativo (`ErrorTopic`).

È inoltre possibile specificare il seguente argomento opzionale per `ClientConfig` nel campo `AsyncInferenceConfig`:
+ `MaxConcurrentInvocationsPerInstance`: (Facoltativo) Il numero massimo di richieste simultanee inviate dal client SageMaker AI al contenitore del modello.

# Creazione endpoint
<a name="async-inference-create-endpoint-create-endpoint"></a>

Una volta completata la configurazione del modello e dell'endpoint, utilizza l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)per creare l'endpoint. Il nome dell'endpoint deve essere univoco all'interno di una AWS regione del tuo AWS account. 

L’esempio seguente crea un endpoint utilizzando la configurazione endpoint specificata nella richiesta. Amazon SageMaker AI utilizza l'endpoint per fornire risorse e distribuire modelli.

```
# The name of the endpoint.The name must be unique within an AWS Region in your AWS account.
endpoint_name = '<endpoint-name>' 

# The name of the endpoint configuration associated with this endpoint.
endpoint_config_name='<endpoint-config-name>'

create_endpoint_response = sagemaker_client.create_endpoint(
                                            EndpointName=endpoint_name, 
                                            EndpointConfigName=endpoint_config_name)
```

Quando chiami l'`CreateEndpoint`API, Amazon SageMaker Asynchronous Inference invia una notifica di test per verificare che tu abbia configurato un argomento Amazon SNS. Amazon SageMaker Asynchronous Inference invia anche notifiche di test dopo le chiamate a e. `UpdateEndpoint` `UpdateEndpointWeightsAndCapacities` Ciò consente all' SageMaker IA di verificare che tu disponga delle autorizzazioni richieste. La notifica può essere semplicemente ignorata. La notifica di test ha il seguente formato:

```
{
    "eventVersion":"1.0",
    "eventSource":"aws:sagemaker",
    "eventName":"TestNotification"
}
```

# Richiama un endpoint asincrono
<a name="async-inference-invoke-endpoint"></a>

Ottieni inferenze dal modello ospitato sul tuo endpoint asincrono con `InvokeEndpointAsync`. 

**Nota**  
Se non l'hai già fatto, carica i tuoi dati di inferenza (ad esempio, modello di machine learning, dati di esempio) su Amazon S3.

Specifica i seguenti campi nella richiesta:
+ Per `InputLocation`, specifica la posizione dei tuoi dati di inferenza.
+ Per `EndpointName`, specifica il nome dell'endpoint.
+ (Facoltativo) Per `InvocationTimeoutSeconds`, puoi impostare il timeout massimo per le richieste. Puoi impostare questo valore su un massimo di 3600 secondi (un'ora) per richiesta. Se non specifichi questo campo nella richiesta, per impostazione predefinita la richiesta scade a 15 minuti.

```
# Create a low-level client representing Amazon SageMaker Runtime
sagemaker_runtime = boto3.client("sagemaker-runtime", region_name=<aws_region>)

# Specify the location of the input. Here, a single SVM sample
input_location = "s3://bucket-name/test_point_0.libsvm"

# The name of the endpoint. The name must be unique within an AWS Region in your AWS account. 
endpoint_name='<endpoint-name>'

# After you deploy a model into production using SageMaker AI hosting 
# services, your client applications use this API to get inferences 
# from the model hosted at the specified endpoint.
response = sagemaker_runtime.invoke_endpoint_async(
                            EndpointName=endpoint_name, 
                            InputLocation=input_location,
                            InvocationTimeoutSeconds=3600)
```

Riceverai una risposta come stringa JSON con l'ID della richiesta e il nome del bucket Amazon S3 che riceverà la risposta alla chiamata API dopo l'elaborazione.

# Aggiorna un endpoint asincrono
<a name="async-inference-update-endpoint"></a>

Aggiorna un endpoint asincrono con l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html). Quando aggiorni un endpoint, l' SageMaker IA effettua innanzitutto il provisioning e passa alla nuova configurazione dell'endpoint specificata prima di eliminare le risorse che erano state fornite nella precedente configurazione dell'endpoint. Non eliminare un dispositivo `EndpointConfig` con un endpoint attivo o mentre le operazioni `UpdateEndpoint` o `CreateEndpoint` vengono eseguite sull'endpoint. 

```
# The name of the endpoint. The name must be unique within an AWS Region in your AWS account.
endpoint_name='<endpoint-name>'

# The name of the endpoint configuration associated with this endpoint.
endpoint_config_name='<endpoint-config-name>'

sagemaker_client.update_endpoint(
                                EndpointConfigName=endpoint_config_name,
                                EndpointName=endpoint_name
                                )
```

Quando Amazon SageMaker AI riceve la richiesta, imposta lo stato dell'endpoint su **Aggiornamento**. Dopo aver aggiornato l'endpoint asincrono, imposta lo stato su. **InService** Per controllare lo stato di un endpoint. utilizza l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html). Per un elenco completo dei parametri che è possibile specificare durante l'aggiornamento di un endpoint, consulta l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html).

# Elimina un endpoint asincrono
<a name="async-inference-delete-endpoint"></a>

Elimina un endpoint asincrono in modo simile a come elimineresti un endpoint ospitato dall'IA con l'API. SageMaker [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html) Specifica il nome dell'endpoint asincrono da eliminare. Quando elimini un endpoint, l' SageMaker intelligenza artificiale libera tutte le risorse distribuite al momento della creazione dell'endpoint. L’eliminazione di un modello non elimina artefatti del modello, codici di inferenza o il ruolo IAM specificato durante la creazione del modello.

Elimina il tuo modello di SageMaker intelligenza artificiale con l'[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteModel.html)API o con la console AI. SageMaker 

------
#### [ Boto3 ]

```
import boto3 

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=<aws_region>)
sagemaker_client.delete_endpoint(EndpointName='<endpoint-name>')
```

------
#### [ SageMaker AI console ]

1. Vai alla console SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Espandi l'elenco a discesa **Inferenza**.

1. Selezionare **Endpoints (Endpoint)**.

1. Cerca l’endpoint nella barra di ricerca **Cerca endpoint**.

1. Seleziona il tuo endpoint.

1. Scegli **Elimina**.

------

Oltre a eliminare l'endpoint asincrono, potresti voler cancellare altre risorse utilizzate per creare l'endpoint, come il repository Amazon ECR (se hai creato un'immagine di inferenza personalizzata), il modello SageMaker AI e la configurazione asincrona dell'endpoint stesso. 

# Allarmi e log per il monitoraggio delle metriche da endpoint asincroni
<a name="async-inference-monitor"></a>

Puoi monitorare SageMaker AI utilizzando Amazon CloudWatch, che raccoglie i dati non elaborati e li elabora trasformandoli in metriche leggibili quasi in tempo reale. Con Amazon CloudWatch, puoi accedere alle informazioni storiche per una prospettiva migliore sulle prestazioni del servizio o dell'applicazione Web. Per ulteriori informazioni su Amazon CloudWatch, consulta [Che cos'è Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)

## Monitoraggio con CloudWatch
<a name="async-inference-monitor-cloudwatch"></a>

I parametri riportati di seguito sono un elenco esaustivo di parametri per gli endpoint asincroni e si trovano nello spazio dei nomi `AWS/SageMaker`. Qualsiasi parametro non elencato di seguito non viene pubblicato se l'endpoint è abilitato per l'inferenza asincrona. Tali parametri includono (ma non sono limitati a):
+ Latenza generale
+ Invocazioni
+ InvocationsPerInstance

### Parametri degli endpoint comuni
<a name="async-inference-monitor-cloudwatch-common"></a>

Questi parametri sono gli stessi pubblicati oggi per gli endpoint in tempo reale. Per ulteriori informazioni su altre metriche in Amazon CloudWatch, consulta [Monitor SageMaker AI with Amazon CloudWatch](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html).


| Nome parametro | Descrizione | Unità/statistiche | 
| --- | --- | --- | 
| `Invocation4XXErrors` | Numero di richieste in cui il modello ha restituito un codice di risposta HTTP 4xx. Per ogni risposta 4xx, viene inviato 1; altrimenti, viene inviato 0. | Unità: nessunaStatistiche valide: Average, Sum | 
| `Invocation5XXErrors` | Numero di richieste InvokeEndpoint in cui il modello ha restituito un codice di risposta HTTP 5xx. Per ogni risposta 5xx, viene inviato 1; altrimenti, viene inviato 0. | Unità: nessunaStatistiche valide: Average, Sum | 
| `ModelLatency` | L’intervallo di tempo impiegato da un modello per rispondere come mostrato in SageMaker AI. Questo intervallo include il tempo per le comunicazioni locali impiegato per inviare la richiesta e recuperare la risposta dal container di un modello e il tempo richiesto per completare l'inferenza nel container. | Unità: microsecondi Statistiche valide: media, somma, minimo, massimo, numero di esempi | 

### Parametri degli endpoint di inferenza asincrona
<a name="async-inference-monitor-cloudwatch-async"></a>

Questi parametri sono pubblicati per gli endpoint abilitati all'inferenza asincrona. I parametri seguenti sono pubblicati con la dimensione `EndpointName`.


| Nome parametro | Descrizione | Unità/statistiche | 
| --- | --- | --- | 
| `ApproximateBacklogSize` | Il numero di elementi in coda per un endpoint che sono attualmente in fase di elaborazione o che devono ancora essere elaborati. | Unità: numero Statistiche valide: medio, massimo, minimo  | 
| `ApproximateBacklogSizePerInstance` | Numero di elementi nella coda diviso per il numero di istanze dietro un endpoint. Questo parametri viene utilizzato principalmente per configurare il dimensionamento automatico delle applicazioni per un endpoint abilitato alla modalità asincrona. | Unità: numeroStatistiche valide: medio, massimo, minimo | 
| `ApproximateAgeOfOldestRequest` | Permanenza della richiesta più vecchia in coda. | Unità: secondiStatistiche valide: medio, massimo, minimo | 
| `HasBacklogWithoutCapacity` | Il valore di questo parametro è `1` quando ci sono richieste in coda ma non ci sono istanze dietro l'endpoint. Il valore è `0` in tutti gli altri momenti. Puoi utilizzare questo parametro per scalare automaticamente l'endpoint da zero istanze dopo aver ricevuto una nuova richiesta in coda. | Unità: numeroStatistiche valide: media | 

I parametri seguenti sono pubblicati con le dimensioni `EndpointName` e `VariantName`.


| Nome parametro | Descrizione | Unità/statistiche | 
| --- | --- | --- | 
| `RequestDownloadFailures` | Quando si verifica un errore di inferenza a causa di un problema durante il download della richiesta da Amazon S3. | Unità: numeroStatistiche valide: somma | 
| `ResponseUploadFailures` | Quando si verifica un errore di inferenza a causa di un problema durante il caricamento della risposta su Amazon S3. | Unità: numeroStatistiche valide: somma | 
| `NotificationFailures` | Quando si verifica un problema di pubblicazione delle notifiche. | Unità: numeroStatistiche valide: somma | 
| `RequestDownloadLatency` | Tempo totale per scaricare il payload di richiesta. | Unità: microsecondiStatistiche valide: media, somma, minimo, massimo, numero di esempi | 
| `ResponseUploadLatency` | Tempo totale per caricare il payload di risposta. | Unità: microsecondi Statistiche valide: media, somma, minimo, massimo, numero di esempi | 
| `ExpiredRequests` | Numero di richieste in coda che non riescono a causa del raggiungimento del TTL della richiesta specificata. | Unità: numeroStatistiche valide: somma | 
| `InvocationFailures` | Se una chiamata fallisce per qualsiasi motivo. | Unità: numeroStatistiche valide: somma | 
| `InvocationsProcesssed` | Numero di chiamate asincrone elaborate dall'endpoint. | Unità: numeroStatistiche valide: somma | 
| `TimeInBacklog` | Tempo totale in cui la richiesta è rimasta in coda prima dell'elaborazione. Questo non include il tempo di elaborazione effettivo (ad esempio tempo di download, tempo di caricamento, latenza del modello). | Unità: millisecondiStatistiche valide: media, somma, minimo, massimo, numero di esempi | 
| `TotalProcessingTime` | L’ora in cui la richiesta di inferenza è stata ricevuta da SageMaker AI fino al termine dell’elaborazione della richiesta. Ciò include il tempo di arretrato e il tempo necessario per caricare e inviare eventuali notifiche di risposta. | Unità: millisecondiStatistiche valide: media, somma, minimo, massimo, numero di esempi | 

Amazon SageMaker Asynchronous Inference include anche parametri a livello di host. Per informazioni sulle metriche a livello di host, consulta [SageMaker AI Jobs and Endpoint Metrics](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html#cloudwatch-metrics-jobs).

## Log
<a name="async-inference-monitor-logs"></a>

Oltre ai [Registri dei log dei container](https://docs.aws.amazon.com/sagemaker/latest/dg/logging-cloudwatch.html) pubblicati su Amazon CloudWatch nel tuo account, ottieni anche un nuovo log della piattaforma per tracciare ed eseguire il debugging delle richieste di inferenza.

I nuovi log vengono pubblicati nel gruppo di log endpoint:

```
/aws/sagemaker/Endpoints/[EndpointName]
```

Il nome del flusso di log è composto da: 

```
[production-variant-name]/[instance-id]/data-log.
```

Le righe di registro contengono l'ID di inferenza della richiesta in modo che gli errori possano essere facilmente mappati su una particolare richiesta.

# Controllo dei risultati della previsione
<a name="async-inference-check-predictions"></a>

Ci sono diversi modi per controllare i risultati delle previsioni dal proprio endpoint asincrono. Alcune di queste opzioni sono:

1. Argomenti di Amazon SNS.

1. Controllo degli output nel tuo bucket Amazon S3.

## Argomenti di Amazon SNS
<a name="async-inference-check-predictions-sns-topic"></a>

Amazon SNS è un servizio di notifica per applicazioni orientate alla messaggistica, in cui più abbonati richiedono e ricevono notifiche push di messaggi urgenti tramite una scelta di protocolli di trasporto, tra cui HTTP, Amazon SQS ed e-mail. Amazon SageMaker Asynchronous Inference pubblica notifiche quando crei un endpoint con [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) e specifichi un argomento Amazon SNS.

**Nota**  
Per ricevere le notifiche Amazon SNS, il tuo ruolo IAM deve disporre delle autorizzazioni `sns:Publish`. Consulta [Completa i prerequisiti](async-inference-create-endpoint-prerequisites.md) per informazioni sui requisiti da soddisfare per utilizzare Asynchronous Inference.

Per utilizzare Amazon SNS per controllare i risultati della previsione dal tuo endpoint asincrono, devi prima creare un argomento, abbonarti all'argomento, confermare la tua sottoscrizione all'argomento e annotare il nome della risorsa Amazon (ARN) di quell'argomento. Per informazioni dettagliate su come creare, sottoscrivere e trovare l'ARN Amazon di un argomento Amazon SNS, consulta [Configurazione di Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-configuring.html).

Inserisci gli ARN dell'argomento di Amazon SNS nel campo `AsyncInferenceConfig` quando crei una configurazione endpoint con `CreateEndpointConfig`. Puoi specificare sia un Amazon SNS `ErrorTopic` che un `SuccessTopic`.

```
import boto3

sagemaker_client = boto3.client('sagemaker', region_name=<aws_region>)

sagemaker_client.create_endpoint_config(
    EndpointConfigName=<endpoint_config_name>, # You specify this name in a CreateEndpoint request.
    # List of ProductionVariant objects, one for each model that you want to host at this endpoint.
    ProductionVariants=[
        {
            "VariantName": "variant1", # The name of the production variant.
            "ModelName": "model_name", 
            "InstanceType": "ml.m5.xlarge", # Specify the compute instance type.
            "InitialInstanceCount": 1 # Number of instances to launch initially.
        }
    ],
    AsyncInferenceConfig={
        "OutputConfig": {
            # Location to upload response outputs when no location is provided in the request.
            "S3OutputPath": "s3://<bucket>/<output_directory>"
            "NotificationConfig": {
                "SuccessTopic": "arn:aws:sns:aws-region:account-id:topic-name",
                "ErrorTopic": "arn:aws:sns:aws-region:account-id:topic-name",
            }
        }
    }
)
```

Dopo aver creato l'endpoint e averlo richiamato, riceverai una notifica dal tuo argomento Amazon SNS. Ad esempio, se hai effettuato una sottoscrizione per ricevere notifiche e-mail dal tuo argomento, riceverai una notifica e-mail ogni volta che richiami il tuo endpoint. Il seguente esempio illustra il contenuto JSON di una notifica e-mail per un richiamo riuscito.

```
{
   "awsRegion":"us-east-1",
   "eventTime":"2022-01-25T22:46:00.608Z",
   "receivedTime":"2022-01-25T22:46:00.455Z",
   "invocationStatus":"Completed",
   "requestParameters":{
      "contentType":"text/csv",
      "endpointName":"<example-endpoint>",
      "inputLocation":"s3://<bucket>/<input-directory>/input-data.csv"
   },
   "responseParameters":{
      "contentType":"text/csv; charset=utf-8",
      "outputLocation":"s3://<bucket>/<output_directory>/prediction.out"
   },
   "inferenceId":"11111111-2222-3333-4444-555555555555", 
   "eventVersion":"1.0",
   "eventSource":"aws:sagemaker",
   "eventName":"InferenceResult"
}
```

## Controlla il tuo Bucket S3
<a name="async-inference-check-predictions-s3-bucket"></a>

Quando richiami un endpoint con `InvokeEndpointAsync`, questo restituisce un oggetto di risposta. Puoi utilizzare l'oggetto di risposta per ottenere l'URI di Amazon S3 in cui è archiviato l'output. Con la posizione di output, puoi utilizzare una classe di sessione SageMaker Python SDK SageMaker AI per verificare un output a livello di programmazione.

Quanto segue memorizza il dizionario di output di `InvokeEndpointAsync` come una variabile denominata risposta. Con la variabile risposta, ottieni quindi l'URI dell’output di Amazon S3 e lo archivi come una variabile stringa chiamata `output_location`. 

```
import uuid
import boto3

sagemaker_runtime = boto3.client("sagemaker-runtime", region_name=<aws_region>)

# Specify the S3 URI of the input. Here, a single SVM sample
input_location = "s3://bucket-name/test_point_0.libsvm" 

response = sagemaker_runtime.invoke_endpoint_async(
    EndpointName='<endpoint-name>',
    InputLocation=input_location,
    InferenceId=str(uuid.uuid4()), 
    ContentType="text/libsvm" #Specify the content type of your data
)

output_location = response['OutputLocation']
print(f"OutputLocation: {output_location}")
```

Per ulteriori informazioni sui tipi di contenuti supportati, consulta [Formati di dati comuni per l’inferenza](cdf-inference.md).

Con la posizione di output di Amazon S3, puoi quindi utilizzare una [classe di sessione SageMaker Python SDK SageMaker AI](https://sagemaker.readthedocs.io/en/stable/api/utility/session.html?highlight=session) per leggere i file in Amazon S3. Il seguente esempio di codice mostra come creare una funzione (`get_ouput`) che tenta ripetutamente di leggere un file dalla posizione di output di Amazon S3:

```
import sagemaker
import urllib, time
from botocore.exceptions import ClientError

sagemaker_session = sagemaker.session.Session()

def get_output(output_location):
    output_url = urllib.parse.urlparse(output_location)
    bucket = output_url.netloc
    key = output_url.path[1:]
    while True:
        try:
            return sagemaker_session.read_s3_file(
                                        bucket=output_url.netloc, 
                                        key_prefix=output_url.path[1:])
        except ClientError as e:
            if e.response['Error']['Code'] == 'NoSuchKey':
                print("waiting for output...")
                time.sleep(2)
                continue
            raise
            
output = get_output(output_location)
print(f"Output: {output}")
```

# Scalabilità automatica di un endpoint asincrono
<a name="async-inference-autoscale"></a>

Amazon SageMaker AI supporta il dimensionamento automatico (auto scaling) dell’endpoint asincrono. Auto Scaling modifica dinamicamente il numero di istanze assegnate a un modello in risposta alle variazioni nel carico di lavoro. A differenza di altri modelli ospitati supportati da Amazon SageMaker AI, con inferenza asincrona puoi anche ridurre verticalmente a zero le istanze degli endpoint asincroni. Le richieste ricevute quando non ci sono istanze vengono messe in coda per l'elaborazione una volta che l'endpoint è stato dimensionato.

Per scalare automaticamente l'endpoint asincrono è necessario almeno:
+ Registrare un modello distribuito (variante di produzione).
+ Definizione di una policy di dimensionamento.
+ Applica la policy di scalabilità automatica.

Per poter utilizzare il dimensionamento automatico, è necessario aver già implementato un modello su un endpoint di SageMaker AI. I modelli distribuiti sono indicati come [varianti di produzione](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html). Per ulteriori informazioni sulla [distribuzione di un modello su un endpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-model-deployment.html#ex1-deploy-model), vedere Implementazione del modello sui servizi di hosting SageMaker. Per specificare i parametri e i valori di target per una policy di dimensionamento, configuri una policy di dimensionamento di monitoraggio. Per informazioni su come definire una policy di dimensionamento, vedere [Definire una policy di dimensionamento](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-add-code-define.html). Dopo la registrazione di un modello e la definizione di una policy di dimensionamento, applica la policy di dimensionamento al modello registrato. Per informazioni su come applicare una policy di dimensionamento, vedere [Applicare una policy di dimensionamento](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-add-code-apply.html).

Per ulteriori informazioni su come definire una policy di dimensionamento aggiuntiva opzionale che aumenti l'endpoint dopo aver ricevuto una richiesta dopo che l'endpoint è stato ridimensionato a zero, consulta [Facoltativo: definire una policy di dimensionamento che parta da zero per le nuove richieste](#async-inference-autoscale-scale-up). Se non specifichi questa policy opzionale, l'endpoint avvia la scalabilità da zero solo dopo che il numero di richieste di backlog supera il valore di tracciamento previsto.

 Per dettagli su altri prerequisiti e componenti utilizzati con il dimensionamento automatico, consulta la sezione [Prerequisiti](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-prerequisites.html) nella documentazione sul dimensionamento automatico di SageMaker AI.

**Nota**  
Se si collegano più policy di dimensionamento allo stesso gruppo di dimensionamento automatico, è possibile che si verifichino conflitti di ridimensionamento. Quando si verifica un conflitto, Dimensionamento automatico Amazon EC2 sceglie la policy che offre la capacità maggiore per aumentare o ridurre orizzontalmente. Per ulteriori informazioni su questo comportamento, consulta [Policy di dimensionamento dinamico multiplo](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html#multiple-scaling-policy-resolution) nella *documentazione di Dimensionamento automatico Amazon EC2*.

## Definizione di una policy di dimensionamento
<a name="async-inference-autoscale-define-async"></a>

Per specificare i parametri e i valori di target per una policy di dimensionamento, configuri una policy di dimensionamento di monitoraggio dei target. Definisci la policy di dimensionamento come un blocco JSON in un file di testo. Questo file di testo viene utilizzato quando si chiama la AWS CLI o l'API Application Auto Scaling. Per ulteriori informazioni sulla sintassi della configurazione della policy, consulta [https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) in Application Auto Scaling API Reference.

Per gli endpoint asincroni, SageMaker AI consiglia vivamente di creare una configurazione di policy per il dimensionamento del monitoraggio delle destinazioni per una variante. In questo esempio di configurazione, utilizziamo un parametro personalizzato, `CustomizedMetricSpecification`, chiamato `ApproximateBacklogSizePerInstance`.

```
TargetTrackingScalingPolicyConfiguration={
        'TargetValue': 5.0, # The target value for the metric. Here the metric is: ApproximateBacklogSizePerInstance
        'CustomizedMetricSpecification': {
            'MetricName': 'ApproximateBacklogSizePerInstance',
            'Namespace': 'AWS/SageMaker',
            'Dimensions': [
                {'Name': 'EndpointName', 'Value': <endpoint_name> }
            ],
            'Statistic': 'Average',
        }
    }
```

## Definisci una policy di dimensionamento che porti a zero
<a name="async-inference-autoscale-define-async-zero"></a>

Di seguito viene illustrato come definire e registrare la variante di endpoint con il dimensionamento automatico delle applicazioni utilizzando AWS SDK per Python (Boto3). Dopo aver definito un oggetto client di basso livello che rappresenta il dimensionamento automatico dell'applicazione con Boto3, utilizziamo il metodo [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target) per registrare la variante di produzione. Abbiamo impostato `MinCapacity` su 0 perché Inferenza asincrona consente di scalare automaticamente a 0 quando non ci sono richieste da elaborare.

```
# Common class representing application autoscaling for SageMaker 
client = boto3.client('application-autoscaling') 

# This is the format in which application autoscaling references the endpoint
resource_id='endpoint/' + <endpoint_name> + '/variant/' + <'variant1'> 

# Define and register your endpoint variant
response = client.register_scalable_target(
    ServiceNamespace='sagemaker', 
    ResourceId=resource_id,
    ScalableDimension='sagemaker:variant:DesiredInstanceCount', # The number of EC2 instances for your Amazon SageMaker model endpoint variant.
    MinCapacity=0,
    MaxCapacity=5
)
```

Per una descrizione dettagliata dell'API di dimensionamento automatico dell’applicazione, consulta la documentazione di [Dimensionamento dell’applicazione Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target).

## Facoltativo: definire una policy di dimensionamento che parta da zero per le nuove richieste
<a name="async-inference-autoscale-scale-up"></a>

Potresti avere un caso d'uso in cui hai richieste sporadiche o periodi con un numero ridotto di richieste. Se l'endpoint è stato ridimensionato a zero istanze durante questi periodi, l'endpoint non aumenterà nuovamente fino a quando il numero di richieste in coda non supererà l'obiettivo specificato nella policy di dimensionamento. Ciò può comportare lunghi tempi di attesa per le richieste in coda. La sezione seguente mostra come creare una policy di dimensionamento aggiuntiva che aumenti l'endpoint partendo da zero istanze dopo aver ricevuto qualsiasi nuova richiesta in coda. L'endpoint sarà in grado di rispondere alle nuove richieste più rapidamente invece di attendere che la dimensione della coda superi l'obiettivo.

Per creare una policy di dimensionamento il tuo endpoint che parta da zero istanze, procedi come segue:

1. Crea una policy di dimensionamento che definisca il comportamento desiderato, ovvero quello di scalare l'endpoint quando è a zero istanze ma ha richieste in coda. Di seguito viene illustrato come definire una policy di dimensionamento chiamata `HasBacklogWithoutCapacity-ScalingPolicy` utilizzando AWS SDK per Python (Boto3). Quando la coda è maggiore di zero e anche il numero corrente di istanze per l'endpoint è pari a zero, la policy ridimensiona l'endpoint verso l'alto. In tutti gli altri casi, la policy non influisce sulla dimensionamento dell'endpoint.

   ```
   response = client.put_scaling_policy(
       PolicyName="HasBacklogWithoutCapacity-ScalingPolicy",
       ServiceNamespace="sagemaker",  # The namespace of the service that provides the resource.
       ResourceId=resource_id,  # Endpoint name
       ScalableDimension="sagemaker:variant:DesiredInstanceCount",  # SageMaker supports only Instance Count
       PolicyType="StepScaling",  # 'StepScaling' or 'TargetTrackingScaling'
       StepScalingPolicyConfiguration={
           "AdjustmentType": "ChangeInCapacity", # Specifies whether the ScalingAdjustment value in the StepAdjustment property is an absolute number or a percentage of the current capacity. 
           "MetricAggregationType": "Average", # The aggregation type for the CloudWatch metrics.
           "Cooldown": 300, # The amount of time, in seconds, to wait for a previous scaling activity to take effect. 
           "StepAdjustments": # A set of adjustments that enable you to scale based on the size of the alarm breach.
           [ 
               {
                 "MetricIntervalLowerBound": 0,
                 "ScalingAdjustment": 1
               }
             ]
       },    
   )
   ```

1. Crea un allarme CloudWatch con il parametro personalizzato `HasBacklogWithoutCapacity`. Quando viene attivato, l'allarme avvia la policy di dimensionamento precedentemente definita. Per ulteriori informazioni sul parametro `HasBacklogWithoutCapacity`, consulta [Parametri degli endpoint di inferenza asincrona](async-inference-monitor.md#async-inference-monitor-cloudwatch-async).

   ```
   response = cw_client.put_metric_alarm(
       AlarmName=step_scaling_policy_alarm_name,
       MetricName='HasBacklogWithoutCapacity',
       Namespace='AWS/SageMaker',
       Statistic='Average',
       EvaluationPeriods= 2,
       DatapointsToAlarm= 2,
       Threshold= 1,
       ComparisonOperator='GreaterThanOrEqualToThreshold',
       TreatMissingData='missing',
       Dimensions=[
           { 'Name':'EndpointName', 'Value':endpoint_name },
       ],
       Period= 60,
       AlarmActions=[step_scaling_policy_arn]
   )
   ```

Ora dovresti disporre di una policy di dimensionamento e di un allarme CloudWatch che aumentino il tuo endpoint da zero istanze ogni volta che la coda ha richieste in sospeso.

# Risoluzione dei problemi
<a name="async-inference-troubleshooting"></a>

Le domande frequenti seguenti possono essere utili per risolvere i problemi con gli endpoint di inferenza asincrona di Amazon SageMaker.

## D: Ho abilitato il dimensionamento automatico. Come posso trovare il conteggio istanze dietro l'endpoint in un dato momento?
<a name="async-troubleshooting-q1"></a>

Puoi utilizzare i metodi seguenti per trovare il conteggio istanze del tuo endpoint:
+ Puoi utilizzare l’API [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) di SageMaker AI per descrivere il numero di istanze alla base dell’endpoint in un determinato momento.
+ Puoi ottenere il numero di istanze visualizzando i parametri di Amazon CloudWatch. Visualizza i [parametri per le tue istanze di endpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html#cloudwatch-metrics-jobs), ad esempio `CPUUtilization` o `MemoryUtilization` e controlla la statistica del conteggio di esempio per un periodo di 1 minuto. Il conteggio deve essere uguale al numero di istanze attive. Lo screenshot seguente mostra il grafico dei parametri `CPUUtilization` nella console CloudWatch, dove la **Statistica** è impostata su `Sample count`, il **Periodo** è impostato su `1 minute` e il conteggio risultante è 5.

![\[Console CloudWatch che mostra il grafico del conteggio di istanze attive per un endpoint.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/cloudwatch-sample-count.png)


## D: Quali sono le variabili di ambiente ottimizzabili più comuni per i container SageMaker AI?
<a name="async-troubleshooting-q2"></a>

Le tabelle seguenti descrivono le variabili di ambiente ottimizzabili comuni per i container SageMaker AI in base al tipo di framework.

**TensorFlow**


| Variabile di ambiente | Descrizione | 
| --- | --- | 
|  `SAGEMAKER_TFS_INSTANCE_COUNT`  |  Per i modelli basati su TensorFlow, il binario `tensorflow_model_server` è la parte operativa responsabile del caricamento di un modello in memoria, dell'esecuzione degli input su un grafico del modello e della derivazione degli output. In genere, viene lanciata un’istanza singola di questo file binario per servire i modelli in un endpoint. Questo binario è internamente multithread e genera più thread per rispondere a una richiesta di inferenza. In alcune istanze, se si osserva che la CPU è utilizzata in modo rispettabile (oltre il 30%) ma la memoria è sottoutilizzata (utilizzo inferiore al 10%), potrebbe essere utile aumentare questo parametro. L'aumento del numero di risorse `tensorflow_model_servers` disponibili da servire in genere aumenta il throughput di un endpoint.  | 
|  `SAGEMAKER_TFS_FRACTIONAL_GPU_MEM_MARGIN`  |  Questo parametro regola la frazione della memoria GPU disponibile per inizializzare CUDA/cuDNN e altre librerie GPU. `0.2` significa che il 20% della memoria GPU disponibile è riservata all'inizializzazione di CUDA/cuDNN e altre librerie GPU e l'80% della memoria GPU disponibile è allocata equamente tra i processi TF. La memoria della GPU `allow_growth` è preallocata a meno che l'opzione non sia abilitata.  | 
| `SAGEMAKER_TFS_INTER_OP_PARALLELISM` | Ciò si ricollega alla variabile `inter_op_parallelism_threads` Questa variabile determina il numero di thread utilizzati da operazioni indipendenti non bloccanti. `0` significa che il sistema sceglie un numero appropriato. | 
| `SAGEMAKER_TFS_INTRA_OP_PARALLELISM` | Ciò si ricollega alla variabile `intra_op_parallelism_threads` Ciò determina il numero di thread che possono essere utilizzati per determinate operazioni come la moltiplicazione delle matrici e le riduzioni per gli acceleratori. Un valore di `0` indica che il sistema seleziona un numero appropriato. | 
| `SAGEMAKER_GUNICORN_WORKERS` | Questo regola il numero di processi di lavoro che Gunicorn deve generare per la gestione delle richieste. Questo valore viene utilizzato in combinazione con altri parametri per ricavare un set che massimizzi la velocità di inferenza. Inoltre, `SAGEMAKER_GUNICORN_WORKER_CLASS` regola il tipo di worker generati, in genere `async` o `gevent`. | 
| `SAGEMAKER_GUNICORN_WORKER_CLASS` | Questo regola il numero di processi di lavoro che Gunicorn deve generare per la gestione delle richieste. Questo valore viene utilizzato in combinazione con altri parametri per ricavare un set che massimizzi la velocità di inferenza. Inoltre, `SAGEMAKER_GUNICORN_WORKER_CLASS` regola il tipo di worker generati, in genere `async` o `gevent`. | 
| `OMP_NUM_THREADS` | Python utilizza internamente OpenMP per implementare il multithreading all'interno dei processi. In genere, vengono generati thread equivalenti al numero di core CPU. Tuttavia, se implementato in aggiunta al Simultaneous Multi Threading (SMT), come HypeThreading di Intel, un determinato processo potrebbe superare la sottoscrizione di un determinato core generando un numero di thread doppio rispetto al numero di core CPU effettivi. In alcuni casi, un binario Python potrebbe finire per generare fino a quattro volte più thread dei core del processore disponibili. Pertanto, l'impostazione ideale per questo parametro, se hai registrato un numero eccessivo di core disponibili utilizzando i thread del worker, è `1`, o la metà del numero di core CPU su una CPU con SMT attivato. | 
|  `TF_DISABLE_MKL` `TF_DISABLE_POOL_ALLOCATOR`  | In alcuni casi, la disattivazione di MKL può velocizzare l'inferenza se `TF_DISABLE_MKL` e `TF_DISABLE_POOL_ALLOCATOR` sono impostati su `1`. | 

**PyTorch**


| Variabile di ambiente | Descrizione | 
| --- | --- | 
|  `SAGEMAKER_TS_MAX_BATCH_DELAY`  |  Questo è il tempo di ritardo massimo che TorchServe attende per ricevere il batch.  | 
|  `SAGEMAKER_TS_BATCH_SIZE`  |  Se TorchServe non riceve il numero di richieste specificato in `batch_size` prima dello scadere del timer, invia le richieste ricevute al gestore del modello.  | 
|  `SAGEMAKER_TS_MIN_WORKERS`  |  Il numero minimo di worker che TorchServe può ridurre.  | 
|  `SAGEMAKER_TS_MAX_WORKERS`  |  Il numero massimo di worker che TorchServe può aumentare.  | 
|  `SAGEMAKER_TS_RESPONSE_TIMEOUT`  |  Il ritardo temporale, dopo il quale scade l'inferenza in assenza di una risposta.  | 
|  `SAGEMAKER_TS_MAX_REQUEST_SIZE`  |  La dimensione massima del payload per TorchServe.  | 
|  `SAGEMAKER_TS_MAX_RESPONSE_SIZE`  |  La dimensione della risposta del payload per TorchServe.  | 

**Server multimodello (MMS)**


| Variabile di ambiente | Descrizione | 
| --- | --- | 
|  `job_queue_size`  |  Questo parametro è utile per effettuare il tuning in uno scenario in cui il tipo di payload della richiesta di inferenza è elevato e, a causa della maggiore dimensione del payload, è possibile che si verifichi un maggiore consumo di memoria heap della JVM in cui viene gestita questa coda. Idealmente, potresti voler mantenere bassi i requisiti di memoria heap di JVM e consentire ai worker Python di allocare più memoria per l'effettivo servizio del modello. JVM serve solo a ricevere le richieste HTTP, metterle in coda e inviarle ai worker basati su Python per l'inferenza. Se aumenti il `job_queue_size`, potresti finire per aumentare il consumo di memoria heap della JVM e, infine, sottrarre memoria dall'host che avrebbe potuto essere utilizzata dai worker Python. Pertanto, fai attenzione anche quando regoli questo parametro.  | 
|  `default_workers_per_model`  |  Questo parametro è destinato al servizio del modello di back-end e potrebbe essere utile da ottimizzare poiché questo è il componente fondamentale del servizio complessivo del modello, in base al quale i processi Python generano i thread per ciascun modello. Se questo componente è più lento (o non ottimizzato correttamente), l'ottimizzazione del front-end potrebbe non essere efficace.  | 

## D: Come posso assicurarmi che il mio container supporti l'inferenza asincrona?
<a name="async-troubleshooting-q3"></a>

Puoi utilizzare lo stesso container per l'inferenza asincrona utilizzato per l'inferenza in tempo reale o la trasformazione in batch. Devi confermare che i timeout e i limiti di dimensione del payload sul container siano impostati per gestire payload più grandi e timeout più lunghi.

## D: Quali sono i limiti specifici dell'inferenza asincrona e possono essere modificati?
<a name="async-troubleshooting-q4"></a>

Fai riferimento ai seguenti limiti per l'inferenza asincrona:
+ Limite di dimensione del payload: 1 GB
+ Limite di timeout: una richiesta può richiedere fino a 60 minuti.
+ Messaggio in coda TimetOlive (TTL): 6 ore
+ Numero di messaggi che possono essere inseriti in Amazon SQS: illimitato. Tuttavia, esiste una quota di 120.000 per il numero di messaggi al volo per una coda standard e di 20.000 per una coda FIFO.

## D: Quali parametri è meglio definire per il dimensionamento automatico nell'inferenza asincrona? Posso avere più policy di dimensionamento?
<a name="async-troubleshooting-q5"></a>

In generale, con l’inferenza asincrona, puoi aumentare orizzontalmente in base a invocazioni o istanze. Per quanto riguarda i parametri di invocazione, è una buona idea consultare `ApproximateBacklogSize`, che è un parametro che definisce il numero di elementi nella coda che devono ancora essere elaborati. Puoi utilizzare questo parametro o il parametro `InvocationsPerInstance` per capire a quale TPS potresti essere limitato. A livello di istanza, controlla il tipo di istanza e l'utilizzo della CPU/GPU per stabilire quando aumentare. Se un’istanza singola ha una capacità superiore al 60-70%, questo è spesso un buon segno che si sta saturando l'hardware.

Non è consigliabile adottare più policy di dimensionamento, in quanto possono entrare in conflitto e creare confusione a livello hardware, causando ritardi nell’aumento.

## D: Perché il mio endpoint asincrono chiude un'istanza come `Unhealthy` e le richieste di aggiornamento tramite il dimensionamento automatico non riescono?
<a name="async-troubleshooting-q6"></a>

Verifica se il tuo container è in grado di gestire le richieste di ping e invocazione contemporaneamente. Le richieste di invocazione di SageMaker AI impiegano circa 3 minuti e, in questo periodo, in genere più richieste di ping finiscono per avere esito negativo a causa del timeout che causa il rilevamento del container come `Unhealthy` da parte di SageMaker AI.

## D: `MaxConcurrentInvocationsPerInstance` può funzionare con il mio container modello BYOC con le impostazioni ningx/gunicorn/flask?
<a name="async-troubleshooting-q7"></a>

Sì `MaxConcurrentInvocationsPerInstance` è una funzionalità degli endpoint asincroni. Ciò non dipende dall'implementazione del container personalizzato. `MaxConcurrentInvocationsPerInstance` controlla la frequenza con cui le richieste di invoca vengono inviate al container del cliente. Se questo valore è impostato su `1`, viene inviata solo 1 richiesta alla volta al container, indipendentemente dal numero di worker presenti nel container del cliente.

## D: Come posso eseguire il debug degli errori del server del modello (500) sul mio endpoint asincrono?
<a name="async-troubleshooting-q8"></a>

L'errore indica che il container del cliente ha restituito un errore. SageMaker AI non controlla il comportamento dei container dei clienti. SageMaker AI restituisce semplicemente la risposta da `ModelContainer` e non effettua altri tentativi. Se lo desideri, puoi configurare l’invocazione per riprovare in caso di errore. Ti consigliamo di attivare la registrazione dei container e di controllarli per trovare la causa principale dell'errore 500 relativo al tuo modello. Controlla anche i parametri `CPUUtilization` e `MemoryUtilization` corrispondenti nel punto in cui si è verificato l'errore. Puoi anche configurare [S3FailurePath](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AsyncInferenceOutputConfig.html#sagemaker-Type-AsyncInferenceOutputConfig-S3FailurePath) per la risposta del modello in Amazon SNS come parte delle notifiche di errore asincrone per esaminare gli errori.

## D: Come posso sapere se `MaxConcurrentInvocationsPerInstance=1` ha effetto? Ci sono parametri che posso controllare?
<a name="async-troubleshooting-q9"></a>

Puoi controllare il parametro `InvocationsProcesssed`, che dovrebbe essere in linea con il numero di invocazioni che prevedi vengano elaborate in un minuto in base a una singola concorrenza.

## D: Come posso tenere traccia del successo e degli errori delle mie richieste di invocazione? Quali sono le best practice?
<a name="async-troubleshooting-q10"></a>

La best practice è di abilitare Amazon SNS, un servizio di notifica per applicazioni orientate alla messaggistica, con più abbonati che richiedono e ricevono notifiche «push» di messaggi urgenti tramite una scelta di protocolli di trasporto, tra cui HTTP, Amazon SQS ed e-mail. L’inferenza asincrona pubblica notifiche quando crei un endpoint con `CreateEndpointConfig` e specifichi un argomento Amazon SNS.

Per utilizzare Amazon SNS per controllare i risultati delle previsioni dal tuo endpoint asincrono, devi prima creare un argomento, iscriverti all'argomento, confermare il tuo abbonamento all'argomento e annotare il nome della risorsa Amazon (ARN) di quell'argomento. Per informazioni dettagliate su come creare, abbonarsi e trovare l'ARN Amazon di un argomento su Amazon SNS, consulta [Configurazione di Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-configuring.html) nella *Guida per lo sviluppatore di Amazon SNS*. Per ulteriori informazioni su come utilizzare Amazon SNS con inferenza asincrona, consulta [Verifica dei risultati di previsione](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference-check-predictions.html).

## D: Posso definire una policy di dimensionamento che parta da zero istanze dopo aver ricevuto una nuova richiesta?
<a name="async-troubleshooting-q11"></a>

Sì. L'inferenza asincrona fornisce un meccanismo per ridurre a zero istanze quando non ci sono richieste. Se l'endpoint è stato ridimensionato a zero istanze durante questi periodi, l'endpoint non aumenterà nuovamente fino a quando il numero di richieste in coda non supererà l'obiettivo specificato nella policy di dimensionamento. Ciò può comportare lunghi tempi di attesa per le richieste in coda. In questi casi, se desideri passare da zero istanze per nuove richieste inferiori all'obiettivo di coda specificato, puoi utilizzare una policy di dimensionamento aggiuntiva denominata `HasBacklogWithoutCapacity`. Per ulteriori informazioni su come definire questa policy di dimensionamento, consulta [Scalabilità automatica di un endpoint asincrono](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference-autoscale.html#async-inference-autoscale-scale-up).

## D: Ricevo un errore che indica che il tipo di istanza non è supportato per l'inferenza asincrona. Quali sono i tipi di istanza supportati dall’inferenza asincrona?
<a name="async-troubleshooting-q12"></a>

Per un elenco completo delle istanze supportate dall’inferenza asincrona per Regione, consulta i [Prezzi di SageMaker](https://aws.amazon.com/sagemaker/pricing/). Verifica se l'istanza richiesta è disponibile nella tua Regione prima di procedere.