

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 de conteneurs personnalisés pour les Multi-Model terminaux
<a name="mms-container-apis"></a>

Pour gérer plusieurs modèles, votre conteneur doit prendre en charge un ensemble d'API qui permettent à Amazon SageMaker AI de communiquer avec le conteneur pour charger, répertorier, récupérer et décharger les modèles selon les besoins. Le `model_name` est utilisé dans le nouvel ensemble d'API 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 valeur `TargetModel` originale de la demande `InvokeEndpoint` est transmise au conteneur dans les API en tant qu'en-tête `X-Amzn-SageMaker-Target-Model` pouvant être utilisé à des fins de journalisation.

**Note**  
Multi-model les points de terminaison pour les instances soutenues par GPU ne sont actuellement pris en charge que par le conteneur [ NVIDIA Triton Inference Server d' SageMaker AI. ](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) 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 API suivantes sur vos conteneurs pour les points de terminaison multimodèles basés sur des processeurs.

**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 de toute 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` requête SageMaker AI Runtime prend `X-Amzn-SageMaker-Target-Model` en charge 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 de `InvokeEndpoint` panne due à un manque de mémoire ou d'autres ressources, 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.