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 multi-modèles
Pour gérer plusieurs modèles, votre conteneur doit prendre en charge un ensemble d'API qui permettent à Amazon SageMaker de communiquer avec le conteneur pour charger, afficher, obtenir et décharger les modèles selon besoin. 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
Les points de terminaison multi-modèles pour les instances basées sur des GPU ne sont actuellement pris en charge qu'avec le NVIDIA Triton Inference Server container (conteneur NVIDIA Triton Inference Server) de SageMaker. 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 multi-modèles, sans aucune intervention supplémentaire.
Vous pouvez configurer les API suivantes sur vos conteneurs pour les points de terminaison multi-modèles basés sur des processeurs.
Rubriques
API Load Model (Charger un modèle)
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, qui initie alors le déchargement des modèles inutilisés à supprimer.
API List Model (Afficher un modèle)
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 peut commencer par 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)
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)
Indique à la plateforme SageMaker de commander 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)
Fait une demande de prédiction à partir du model_name
particulier fourni. La demande InvokeEndpoint
du runtime SageMaker prend en charge X-Amzn-SageMaker-Target-Model
comme nouvel en-tête qui prend le chemin relatif du modèle spécifié pour l'appel. Le système SageMaker crée le chemin absolu du modèle en combinant le préfixe fourni dans le cadre de l'appel d'API CreateModel
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, si InvokeEndpoint
échoue en raison d'un manque de mémoire ou d'autres ressources, cette API doit renvoyer un code d'état HTTP 507 à SageMaker, qui initie alors le déchargement des modèles inutilisés à supprimer.