Hébergez plusieurs modèles utilisant différents conteneurs derrière un point de terminaison - 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.

Hébergez plusieurs modèles utilisant différents conteneurs derrière un point de terminaison

SageMaker les points de terminaison multi-conteneurs permettent aux clients de déployer plusieurs conteneurs, qui utilisent différents modèles ou frameworks, sur un seul SageMaker point de terminaison. Les conteneurs peuvent être exécutés en séquence en tant que pipeline d'inférence, ou être appelés directement pour un accès individuel afin d'améliorer l'utilisation du point de terminaison et optimiser les coûts.

Pour obtenir des informations sur l'appel des conteneurs dans un point de terminaison multi-conteneurs en séquence, veuillez consulter Modèles hôtes ainsi que la logique de prétraitement en tant que pipeline d'inférence série derrière un point de terminaison.

Pour obtenir des informations sur l'appel d'un conteneur spécifique dans un point de terminaison multi-conteneurs, veuillez consulter Utilisation d'un point de terminaison multi-conteneurs avec appel direct

Pour créer un point de terminaison multi-conteneurs (Boto 3)

Créez un point de terminaison multi-conteneurs en appelant CreateModelCreateEndpointConfig, et des CreateEndpointAPI comme vous le feriez pour créer n'importe quel autre point de terminaison. Vous pouvez exécuter ces conteneurs en séquence en tant que pipeline d'inférence, ou les appeler directement pour les exécuter individuellement. Les points de terminaison multi-conteneurs ont les exigences suivantes lorsque vous appelez create_model :

  • Utilisez le paramètre Containers au lieu de PrimaryContainer, et incluez plus d'un conteneur dans le paramètre Containers.

  • Le paramètre ContainerHostname est requis pour chaque conteneur d'un point de terminaison multi-conteneurs appelé directement.

  • Définissez le paramètre Mode du champ InferenceExecutionConfig sur Direct pour appeler directement chaque conteneur, ou sur Serial pour utiliser les conteneurs en tant que pipeline d'inférence. Le mode par défaut est Serial.

Note

Actuellement, un point de terminaison multi-conteneurs peut prendre en charge un maximum de 15 conteneurs.

L'exemple suivant crée un modèle multi-conteneurs pour l'appel direct.

  1. Créez des éléments de conteneur et InferenceExecutionConfig avec appel direct.

    container1 = { 'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage1:mytag', 'ContainerHostname': 'firstContainer' } container2 = { 'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage2:mytag', 'ContainerHostname': 'secondContainer' } inferenceExecutionConfig = {'Mode': 'Direct'}
  2. Créez le modèle avec les éléments de conteneur et définissez le champ InferenceExecutionConfig.

    import boto3 sm_client = boto3.Session().client('sagemaker') response = sm_client.create_model( ModelName = 'my-direct-mode-model-name', InferenceExecutionConfig = inferenceExecutionConfig, ExecutionRoleArn = role, Containers = [container1, container2] )

Pour créer un point de terminaison, appelez create_endpoint_config et create_endpoint comme vous le feriez pour créer d'autres points de terminaison.

Mise à jour d'un point de terminaison multi-conteneurs

Pour mettre à jour un point de terminaison multi-conteneurs, procédez comme suit.

  1. Appelez create_model pour créer un modèle avec une nouvelle valeur pour le paramètre Mode dans le champ InferenceExecutionConfig.

  2. Appelez create_endpoint_config pour créer une configuration de point de terminaison avec un nom différent à l'aide du modèle que vous avez créé à l'étape précédente.

  3. Appelez update_endpoint pour mettre à jour le point de terminaison avec la nouvelle configuration de point de terminaison que vous avez créée à l'étape précédente.

Suppression d'un point de terminaison multi-conteneurs

Pour supprimer un point de terminaison, appelez delete_endpoint et indiquez le nom du point de terminaison que vous voulez supprimer en tant que paramètre EndpointName.