

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

# Contratto per container personalizzati per endpoint a più modelli
<a name="mms-container-apis"></a>

Per gestire più modelli, il contenitore deve supportare una serie di modelli APIs che consentano ad Amazon SageMaker AI di comunicare con il container per caricare, elencare, ricevere e scaricare i modelli secondo necessità. `model_name`Viene utilizzato nel nuovo set di APIs come parametro di input chiave. Si prevede che il container del cliente tenga traccia dei modelli caricati utilizzando `model_name` come chiave di mappatura. Inoltre, `model_name` è un identificatore opaco e non è necessariamente il valore del parametro `TargetModel` passato nell'API `InvokeEndpoint`. Il `TargetModel` valore originale della `InvokeEndpoint` richiesta viene passato al contenitore APIs come `X-Amzn-SageMaker-Target-Model` intestazione che può essere utilizzata per scopi di registrazione.

**Nota**  
[Gli endpoint multimodello per le istanze basate su GPU sono attualmente supportati solo con il contenitore NVIDIA Triton Inference Server di SageMaker AI.](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) Questo container implementa già il contratto definito di seguito. I clienti possono utilizzare direttamente questo container con i loro endpoint GPU a più modelli, senza alcun intervento aggiuntivo.

Puoi configurare quanto segue APIs sui tuoi contenitori per endpoint multimodello basati su CPU.

**Topics**
+ [Caricamento modello API](#multi-model-api-load-model)
+ [Elenco modelli API](#multi-model-api-list-model)
+ [Ottenere un modello API](#multi-model-api-get-model)
+ [Scarica modello API](#multi-model-api-unload-model)
+ [Invocare un modello API](#multi-model-api-invoke-model)

## Caricamento modello API
<a name="multi-model-api-load-model"></a>

Indica al container di caricare un particolare modello presente nel campo `url` del corpo nella memoria del container del cliente e di tenerne traccia con il `model_name` assegnato. Dopo aver caricato un modello, il container deve essere pronto per servire le richieste di inferenza utilizzando questo `model_name`.

```
POST /models HTTP/1.1
Content-Type: application/json
Accept: application/json

{
     "model_name" : "{model_name}",
     "url" : "/opt/ml/models/{model_name}/model",
}
```

**Nota**  
Se `model_name` è già caricato, l'API restituisce il codice 409. Ogni volta che un modello non può essere caricato a causa della mancanza di memoria o di qualsiasi altra risorsa, questa API dovrebbe restituire un codice di stato HTTP 507 all' SageMaker IA, che quindi avvia lo scaricamento dei modelli inutilizzati da recuperare.

## Elenco modelli API
<a name="multi-model-api-list-model"></a>

Restituisce l'elenco dei modelli caricati nella memoria del container del cliente.

```
GET /models HTTP/1.1
Accept: application/json

Response = 
{
    "models": [
        {
             "modelName" : "{model_name}",
             "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        {
            "modelName" : "{model_name}",
            "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        ....
    ]
}
```

Questa API supporta anche la paginazione.

```
GET /models HTTP/1.1
Accept: application/json

Response = 
{
    "models": [
        {
             "modelName" : "{model_name}",
             "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        {
            "modelName" : "{model_name}",
            "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        ....
    ]
}
```

SageMaker L'IA può inizialmente chiamare l'API List Models senza fornire un valore per. `next_page_token` Se un campo `nextPageToken` viene restituito come parte della risposta, verrà fornito come valore per `next_page_token` in una successiva chiamata List Models (Elenco modelli). Se `nextPageToken` non viene restituito, significa che non ci sono più modelli da restituire.

## Ottenere un modello API
<a name="multi-model-api-get-model"></a>

Questa è una semplice API di lettura sull'entità `model_name`.

```
GET /models/{model_name} HTTP/1.1
Accept: application/json

{
     "modelName" : "{model_name}",
     "modelUrl" : "/opt/ml/models/{model_name}/model",
}
```

**Nota**  
Se l'entità `model_name` non è caricata, l'API restituisce il codice 404.

## Scarica modello API
<a name="multi-model-api-unload-model"></a>

Indica alla piattaforma SageMaker AI di indicare al container del cliente di scaricare un modello dalla memoria. Viene quindi iniziata l'espulsione di un modello candidato come determinato dalla piattaforma quando avvia il processo di caricamento di un nuovo modello. Le risorse assegnate a `model_name` devono essere recuperate dal container quando l'API restituisce una risposta.

```
DELETE /models/{model_name}
```

**Nota**  
Se l'entità `model_name` non è caricata, l'API restituisce il codice 404.

## Invocare un modello API
<a name="multi-model-api-invoke-model"></a>

Effettua una richiesta di previsione dal particolare `model_name` fornito. La `InvokeEndpoint` richiesta SageMaker AI Runtime supporta `X-Amzn-SageMaker-Target-Model` una nuova intestazione che segue il percorso relativo del modello specificato per la chiamata. Il sistema SageMaker AI costruisce il percorso assoluto del modello combinando il prefisso fornito come parte della chiamata `CreateModel` API con il percorso relativo del modello.

```
POST /models/{model_name}/invoke HTTP/1.1
Content-Type: ContentType
Accept: Accept
X-Amzn-SageMaker-Custom-Attributes: CustomAttributes
X-Amzn-SageMaker-Target-Model: [relativePath]/{artifactName}.tar.gz
```

**Nota**  
Se l'entità `model_name` non è caricata, l'API restituisce il codice 404.

Inoltre, nelle istanze GPU, in caso di `InvokeEndpoint` errore a causa della mancanza di memoria o di altre risorse, questa API dovrebbe restituire un codice di stato HTTP 507 all' SageMaker IA, che quindi avvia lo scarico dei modelli inutilizzati da recuperare.