

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Contrat pour les conteneurs personnalisés pour les points de terminaison multimodèles
<a name="mms-container-apis"></a>

Pour gérer plusieurs modèles, votre conteneur doit prendre en charge un ensemble de modèles APIs permettant à Amazon SageMaker AI de communiquer avec le conteneur pour charger, répertorier, obtenir et décharger les modèles selon les besoins. Le `model_name` est utilisé dans le nouvel ensemble de APIs comme paramètre d'entrée clé. Le conteneur client doit suivre les modèles chargés en utilisant `model_name` comme clé de mappage. En outre, le `model_name` est un identificateur opaque et n'est pas nécessairement la valeur du paramètre `TargetModel` passé dans l'API `InvokeEndpoint`. La `TargetModel` valeur d'origine de la `InvokeEndpoint` demande est transmise au conteneur APIs sous forme d'`X-Amzn-SageMaker-Target-Model`en-tête qui peut être utilisé à des fins de journalisation.

**Note**  
Les points de terminaison multimodèles pour les instances basées sur le GPU ne sont actuellement pris en charge qu'avec le conteneur [NVIDIA Triton Inference](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) Server d' SageMaker AI. Ce conteneur met déjà en œuvre le contrat défini ci-dessous. Les clients peuvent utiliser ce conteneur directement avec leurs points de terminaison sur GPU multimodèles, sans aucune intervention supplémentaire.

Vous pouvez configurer les éléments suivants APIs sur vos conteneurs pour les points de terminaison multimodèles soutenus par le processeur.

**Topics**
+ [API Load Model (Charger un modèle)](#multi-model-api-load-model)
+ [API List Model (Afficher un modèle)](#multi-model-api-list-model)
+ [API Get Model (Obtenir un modèle)](#multi-model-api-get-model)
+ [API Unload Model (Décharger un modèle)](#multi-model-api-unload-model)
+ [API Invoke Model (Appeler un modèle)](#multi-model-api-invoke-model)

## API Load Model (Charger un modèle)
<a name="multi-model-api-load-model"></a>

Indique au conteneur de charger un modèle particulier présent dans le champ `url` du corps dans la mémoire du conteneur client et de garder une trace de celui-ci avec le `model_name` assigné. Après le chargement d'un modèle, le conteneur doit être prêt à servir les demandes d'inférence en utilisant ce `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",
}
```

**Note**  
Si le `model_name` est déjà chargée, l'API doit retourner 409. Chaque fois qu'un modèle ne peut pas être chargé en raison d'un manque de mémoire ou d'une autre ressource, cette API doit renvoyer un code d'état HTTP 507 à SageMaker AI, qui lance ensuite le déchargement des modèles inutilisés pour les récupérer.

## API List Model (Afficher un modèle)
<a name="multi-model-api-list-model"></a>

Renvoie la liste des modèles chargés dans la mémoire du conteneur client.

```
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",
        },
        ....
    ]
}
```

Cette API prend également en charge la pagination.

```
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 peut initialement appeler l'API List Models sans fournir de valeur pour`next_page_token`. Si un champ `nextPageToken` est renvoyé dans le cadre de la réponse, il sera fourni comme valeur pour `next_page_token` dans un appel de l'API List Models ultérieur. Si un `nextPageToken` n'est pas retourné, cela signifie qu'il n'y a plus de modèles à retourner.

## API Get Model (Obtenir un modèle)
<a name="multi-model-api-get-model"></a>

Il s'agit d'une API de lecture simple sur l'entité `model_name`.

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

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

**Note**  
Si `model_name` n'est pas chargé, l'API doit retourner 404.

## API Unload Model (Décharger un modèle)
<a name="multi-model-api-unload-model"></a>

Demande à la plateforme d' SageMaker IA de demander au conteneur client de décharger un modèle de la mémoire. Cela initie l'expulsion d'un modèle candidat tel que déterminé par la plate-forme lors du démarrage du processus de chargement d'un nouveau modèle. Les ressources provisionnées dans `model_name` doivent être récupérées par le conteneur lorsque l'API renvoie une réponse.

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

**Note**  
Si `model_name` n'est pas chargé, l'API doit retourner 404.

## API Invoke Model (Appeler un modèle)
<a name="multi-model-api-invoke-model"></a>

Fait une demande de prédiction à partir du `model_name` particulier fourni. La `InvokeEndpoint` demande SageMaker AI Runtime est prise en charge `X-Amzn-SageMaker-Target-Model` sous la forme d'un nouvel en-tête qui prend le chemin relatif du modèle spécifié pour l'invocation. Le système d' SageMaker IA construit le chemin absolu du modèle en combinant le préfixe fourni dans le cadre de l'appel d'`CreateModel`API avec le chemin relatif du modèle.

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

**Note**  
Si `model_name` n'est pas chargé, l'API doit retourner 404.

De plus, sur les instances GPU, en cas d'`InvokeEndpoint`échec dû à un manque de mémoire ou à d'autres ressources, cette API doit renvoyer un code d'état HTTP 507 à l' SageMaker IA, qui lance ensuite le déchargement des modèles inutilisés pour les récupérer.