Contrat pour les conteneurs personnalisés pour les points de terminaison multi-modèles - Amazon SageMaker

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.

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.