

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

# Codice di inferenza personalizzato con la trasformazione in batch
<a name="your-algorithms-batch-code"></a>

Questa sezione spiega come Amazon SageMaker AI interagisce con un contenitore Docker che esegue il tuo codice di inferenza per la trasformazione in batch. Utilizza queste informazioni per scrivere il codice di inferenza e creare un'immagine Docker. 

**Topics**
+ [In che modo l' SageMaker intelligenza artificiale gestisce la tua immagine di inferenza](#your-algorithms-batch-code-run-image)
+ [In che modo l' SageMaker IA carica gli artefatti del modello](#your-algorithms-batch-code-load-artifacts)
+ [Come i container servono le richieste](#your-algorithms-batch-code-how-containe-serves-requests)
+ [Come il tuo container deve rispondere alle richieste di inferenza](#your-algorithms-batch-code-how-containers-should-respond-to-inferences)
+ [Come il tuo container deve rispondere alle richieste di controllo dello stato (Ping)](#your-algorithms-batch-algo-ping-requests)

## In che modo l' SageMaker intelligenza artificiale gestisce la tua immagine di inferenza
<a name="your-algorithms-batch-code-run-image"></a>

Per configurare un container per l'esecuzione come un eseguibile, utilizza un'istruzione `ENTRYPOINT` in un Dockerfile. Tenere presente quanto segue: 
+ Per le trasformazioni in batch, l' SageMaker intelligenza artificiale richiama il modello per tuo conto. SageMaker L'IA esegue il contenitore come:

  ```
  docker run image serve
  ```

  L'input per le trasformazioni in batch deve essere in un formato che possa essere suddiviso in file più piccoli da elaborare in parallelo. [Questi formati includono CSV, [JSON, JSON](https://www.json.org/json-en.html)[Lines](https://jsonlines.org/) e [TFRecord](https://www.tensorflow.org/tutorials/load_data/tfrecord)ReCordio.](https://mesos.apache.org/documentation/latest/recordio/)

  SageMaker L'IA sostituisce le `CMD` istruzioni predefinite in un contenitore specificando l'argomento dopo il nome dell'immagine. `serve` L'argomento `serve` sostituisce gli argomenti che fornisci con il comando `CMD` nel Dockerfile.

   
+ Ti consigliamo di utilizzare il modulo `exec` dell'istruzione `ENTRYPOINT`:

  ```
  ENTRYPOINT ["executable", "param1", "param2"]
  ```

  Esempio:

  ```
  ENTRYPOINT ["python", "k_means_inference.py"]
  ```

   
+ SageMaker L'intelligenza artificiale imposta le variabili di ambiente specificate nel [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)e [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)sul contenitore. Inoltre, vengono popolate le seguenti variabili di ambiente:
  + `SAGEMAKER_BATCH` è impostato su `true` quando il container esegue una trasformazione in batch.
  + `SAGEMAKER_MAX_PAYLOAD_IN_MB` è impostato sul payload di dimensioni più grandi che viene inviato al container tramite HTTP.
  + `SAGEMAKER_BATCH_STRATEGY` è impostato su `SINGLE_RECORD` quando il container invia un singolo record per effettuare le invocazioni e chiamare `MULTI_RECORD` quando il container riceve tutti i record che rientrano nel payload.
  + `SAGEMAKER_MAX_CONCURRENT_TRANSFORMS` è impostato sul numero massimo di richieste di `/invocations` che possono essere aperte contemporaneamente.
**Nota**  
Le ultime tre variabili di ambiente provengono dalla chiamata API effettuata dall'utente. Se l'utente non ne imposta i valori, le variabili non vengono inoltrate. In questo caso, sono utilizzati i valori predefiniti o i valori richiesti dall'algoritmo (in risposta a `/execution-parameters`).
+ Se prevedi di utilizzare dispositivi GPU per le inferenze di modelli (specificando le istanze di calcolo ML basate su GPU nella richiesta `CreateTransformJob`), accertati che i container siano compatibili con nvidia-docker. Non aggregare i driver NVIDIA con l'immagine. Per ulteriori informazioni su nvidia-docker, consulta [NVIDIA/nvidia-docker](https://github.com/NVIDIA/nvidia-docker). 

   
+ Non puoi usare l'`init`inizializzatore come punto di ingresso nei contenitori SageMaker AI perché viene confuso dagli argomenti «train and serve».

  

## In che modo l' SageMaker IA carica gli artefatti del modello
<a name="your-algorithms-batch-code-load-artifacts"></a>

In una richiesta [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html), le definizioni del container comprendono il parametro `ModelDataUrl`, che identifica la posizione in Amazon S3 in cui sono archiviati gli artefatti del modello. Quando si utilizza l' SageMaker intelligenza artificiale per eseguire inferenze, utilizza queste informazioni per determinare da dove copiare gli artefatti del modello. Gli artefatti vengono copiati nella directory `/opt/ml/model` nel container Docker per essere utilizzati dal codice di inferenza.

Il parametro di `ModelDataUrl` deve puntare a un file tar.gz. Altrimenti, l' SageMaker IA non può scaricare il file. Se si addestra un modello in SageMaker intelligenza artificiale, gli artefatti vengono salvati in un unico file tar compresso in Amazon S3. Se addestra un modello in un altro framework, devi archiviare gli artefatti del modello in Amazon S3 come file tar compresso. SageMaker AI decomprime questo file tar e lo salva nella `/opt/ml/model` directory del contenitore prima dell'inizio del processo di trasformazione in batch. 

## Come i container servono le richieste
<a name="your-algorithms-batch-code-how-containe-serves-requests"></a>

I container devono implementare un server Web che risponde a invocazioni e richieste ping sulla porta 8080. Per le trasformazioni in batch, hai la possibilità di impostare algoritmi per implementare le richieste di parametri di esecuzione per fornire una configurazione di runtime dinamica all'IA. SageMaker SageMaker L'intelligenza artificiale utilizza i seguenti endpoint: 
+ `ping`—Utilizzato per controllare periodicamente lo stato del contenitore. SageMaker L'IA attende un codice di `200` stato HTTP e un corpo vuoto per una richiesta ping riuscita prima di inviare una richiesta di invocazione. Puoi utilizzare una richiesta ping per caricare un modello in memoria per generare inferenza quando vengono inviate richieste di invocazioni.
+ (Facoltativo) `execution-parameters`: consente all'algoritmo di fornire i parametri di sincronizzazione ottimali per un processo durante il runtime. In base alla memoria e alla CPUs disponibilità di un contenitore, l'algoritmo sceglie i `MaxPayloadInMB` valori e i valori appropriati `MaxConcurrentTransforms` per il lavoro. `BatchStrategy`

Prima di chiamare la richiesta di invocazione, l' SageMaker IA tenta di richiamare la richiesta dei parametri di esecuzione. Quando si crea un processo di trasformazione in batch, è possibile fornire valori per i `MaxConcurrentTransforms` parametri, e. `BatchStrategy` `MaxPayloadInMB` SageMaker L'IA determina i valori per questi parametri utilizzando questo ordine di precedenza:

1. I valori dei parametri forniti al momento della creazione della richiesta `CreateTransformJob`.

1. I valori restituiti dal contenitore del modello quando l' SageMaker IA richiama l'endpoint-parameters di esecuzione>

1. I valori predefiniti del parametro, elencati nella seguente tabella.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/your-algorithms-batch-code.html)

La risposta per una richiesta execution-parameters `GET` è un oggetto JSON con chiavi per i parametri `MaxConcurrentTransforms`, `BatchStrategy` e `MaxPayloadInMB`. Di seguito è riportato un esempio di risposta valida:

```
{
“MaxConcurrentTransforms”: 8,
“BatchStrategy": "MULTI_RECORD",
"MaxPayloadInMB": 6
}
```

## Come il tuo container deve rispondere alle richieste di inferenza
<a name="your-algorithms-batch-code-how-containers-should-respond-to-inferences"></a>

Per ottenere inferenze, Amazon SageMaker AI invia una richiesta POST al contenitore di inferenza. Il corpo della richiesta POST contiene dati da Amazon S3. Amazon SageMaker AI passa la richiesta al contenitore e ne restituisce il risultato dell'inferenza, salvando i dati della risposta ad Amazon S3.

Per ricevere le richieste di inferenza, il container deve disporre di un server Web in ascolto sulla porta 8080 e deve accettare le richieste all'endpoint `/invocations`. Il timeout della richiesta di inferenza e il numero massimo di tentativi possono essere configurati tramite `[ModelClientConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelClientConfig.html)`.

## Come il tuo container deve rispondere alle richieste di controllo dello stato (Ping)
<a name="your-algorithms-batch-algo-ping-requests"></a>

Il più semplice requisito per il container è di rispondere con un codice di stato HTTP 200 e un corpo vuoto. Ciò indica all' SageMaker IA che il contenitore è pronto ad accettare richieste di inferenza sull'endpoint. `/invocations`

Nonostante la barra minima per il container è di fornire uno 200 statico, uno sviluppatore di container può utilizzare questa funzionalità per eseguire maggiori controlli. Il timeout della richiesta sui tentativi `/ping` è 2 secondi.