Créer un point de terminaison multimodèle - 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.

Créer un point de terminaison multimodèle

Vous pouvez utiliser la SageMaker console ou le AWS SDK for Python (Boto) pour créer un point de terminaison multimodèle. Pour créer un point de terminaison CPU ou un point de terminaison GPU sauvegardé via la console, consultez la procédure de console dans les sections suivantes. Si vous souhaitez créer un point de terminaison multimodèle avec le AWS SDK for Python (Boto), utilisez la GPU procédure CPU ou décrite dans les sections suivantes. Les GPU flux de travail CPU et sont similaires mais présentent plusieurs différences, telles que les exigences relatives aux conteneurs.

Créer un point de terminaison multi-modèle (console)

Vous pouvez créer à la fois des points de terminaison multimodèles CPU et GPU les sauvegarder via la console. Utilisez la procédure suivante pour créer un point de terminaison multimodèle via la SageMaker console.

Pour créer un point de terminaison multimodèle (console)
  1. Ouvrez la SageMaker console Amazon à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Choisissez Model (Modèle), puis dans le groupe Inference (Inférence) choisissez Create model (Créer un modèle).

  3. Dans Model name (Nom du modèle), entrez un nom.

  4. Pour IAMle rôle, choisissez ou créez un IAM rôle auquel la AmazonSageMakerFullAccess IAM politique est attachée.

  5. Dans la section Container definition (Définition de conteneur), pour Provide model artifacts and inference image options (Fournir les options d'artefacts de modèle et d'image d'inférence), choisissez Use multiple models (Utiliser plusieurs modèles).

    Section de la page Créer un modèle dans laquelle vous pouvez choisir Utiliser plusieurs modèles.
  6. Pour l'image du conteneur Inference, entrez le ECR chemin Amazon correspondant à l'image de conteneur souhaitée.

    Pour les GPU modèles, vous devez utiliser un conteneur soutenu par le serveur d'inférence NVIDIA Triton. Pour obtenir la liste des images de conteneur qui fonctionnent avec des points de terminaison GPU sauvegardés, consultez les conteneurs d'inférence NVIDIA Triton (support SM uniquement). Pour plus d'informations sur le serveur d'inférence NVIDIA Triton, voir Utiliser le serveur d'inférence Triton avec. SageMaker

  7. Sélectionnez Create model.

  8. Déployez votre point de terminaison multimodèle comme vous le feriez pour un point de terminaison de modèle unique. Pour obtenir des instructions, consultez Déployer le modèle dans les services SageMaker d'hébergement.

Créez un point de terminaison multimodèle à l'CPUsaide du AWS SDK for Python (Boto3)

Utilisez la section suivante pour créer un point de terminaison multimodèle soutenu par CPU des instances. Vous créez un point de terminaison multimodèle à l'aide d'Amazon SageMaker create_modelcreate_endpoint_config, create_endpointAPIscomme vous créeriez un point de terminaison à modèle unique, mais avec deux modifications. Lors de la définition du conteneur de modèle, vous devez transmettre une nouvelle valeur de paramètre Mode, MultiModel. Vous devez également transmettre le champ ModelDataUrl qui spécifie le préfixe dans Amazon S3 où se trouvent les artefacts de modèle, au lieu du chemin d'accès à un artefact de modèle unique, comme vous le feriez pour le déploiement d'un modèle unique.

Pour un exemple de bloc-notes utilisé SageMaker pour déployer plusieurs XGBoost modèles sur un point de terminaison, consultez la section XGBoostExemple de bloc-notes de point de terminaison multimodèle.

La procédure suivante décrit les principales étapes utilisées dans cet exemple pour créer un point de terminaison multimodèle CPU soutenu.

Pour déployer le modèle (AWS SDKpour Python (Boto 3))
  1. Obtenez un conteneur avec une image qui prend en charge le déploiement de points de terminaison multimodèles. Pour obtenir la liste des algorithmes intégrés et des conteneurs de cadre qui prennent en charge les points de terminaison multimodèles, veuillez consulter Algorithmes, cadres et instances pris en charge. Dans cet exemple, nous utilisons l'algorithme intégré Algorithme k-NN (K-Nearest Neighbors, k plus proches voisins). Nous appelons la fonction SDK utilitaire SageMaker Python image_uris.retrieve() pour obtenir l'adresse de l'image de l'algorithme intégré K-Nearest Nearest Neighbors.

    import sagemaker region = sagemaker_session.boto_region_name image = sagemaker.image_uris.retrieve("knn",region=region) container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' }
  2. Obtenez un AWS SDK for Python (Boto3) SageMaker client et créez le modèle qui utilise ce conteneur.

    import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container])
  3. (Facultatif) Si vous utilisez un pipeline d'inférence série, obtenez le ou les conteneurs supplémentaires à inclure dans le pipeline et incluez-le dans l'argument Containers de CreateModel:

    preprocessor_container = { 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<PREPROCESSOR_IMAGE>:<TAG>' } multi_model_container = { 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<IMAGE>:<TAG>', 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )
    Note

    Vous ne pouvez utiliser qu'un seul point de multi-model-enabled terminaison dans un pipeline d'inférence en série.

  4. (Facultatif) Si votre cas d'utilisation ne bénéficie pas de la mise en cache des modèles, définissez la valeur du champ ModelCacheSetting du paramètre MultiModelConfig sur Disabled, et incluez-la dans l'argument Container de l'appel à create_model. La valeur du champ ModelCacheSetting est Enabled par défaut.

    container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container] )
  5. Configurez le point de terminaison multimodèle pour le modèle. Nous vous recommandons de configurer vos points de terminaison avec au moins deux instances. Cela permet SageMaker de fournir un ensemble de prédictions hautement disponibles sur plusieurs zones de disponibilité pour les modèles.

    response = sagemaker_client.create_endpoint_config( EndpointConfigName = '<ENDPOINT_CONFIG_NAME>', ProductionVariants=[ { 'InstanceType': 'ml.m4.xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName': '<MODEL_NAME>', 'VariantName': 'AllTraffic' } ] )
    Note

    Vous ne pouvez utiliser qu'un seul point de multi-model-enabled terminaison dans un pipeline d'inférence en série.

  6. Créez le point de terminaison multimodèle à l'aide des paramètres EndpointName et EndpointConfigName.

    response = sagemaker_client.create_endpoint( EndpointName = '<ENDPOINT_NAME>', EndpointConfigName = '<ENDPOINT_CONFIG_NAME>')

Créez un point de terminaison multimodèle à l'GPUsaide du AWS SDK for Python (Boto3)

Utilisez la section suivante pour créer un point de terminaison multimodèle GPU sauvegardé. Vous créez un point de terminaison multimodèle à l'aide d'Amazon SageMaker create_modelcreate_endpoint_config, et de la create_endpointAPIsmême manière que vous créez des points de terminaison à modèle unique, mais plusieurs modifications sont apportées. Lors de la définition du conteneur de modèle, vous devez transmettre une nouvelle valeur de paramètre Mode, MultiModel. Vous devez également transmettre le champ ModelDataUrl qui spécifie le préfixe dans Amazon S3 où se trouvent les artefacts de modèle, au lieu du chemin d'accès à un artefact de modèle unique, comme vous le feriez pour le déploiement d'un modèle unique. Pour les points de terminaison multimodèles GPU sauvegardés, vous devez également utiliser un conteneur avec le serveur d'inférence NVIDIA Triton optimisé pour s'exécuter sur des instances. GPU Pour obtenir la liste des images de conteneur qui fonctionnent avec des points de terminaison GPU sauvegardés, consultez les conteneurs d'inférence NVIDIA Triton (support SM uniquement).

Pour un exemple de bloc-notes qui montre comment créer un point de terminaison multimodèle soutenu parGPUs, voir Exécuter plusieurs modèles de deep learning avec GPUs Amazon SageMaker Multi-model endpoints (). MME

La procédure suivante décrit les étapes clés pour créer un point de terminaison multimodèle GPU sauvegardé.

Pour déployer le modèle (AWS SDKpour Python (Boto 3))
  1. Définissez l'image de conteneur. Pour créer un point de terminaison multimodèle prenant en GPU charge les ResNet modèles, définissez le conteneur qui utilisera l'image du serveur NVIDIA Triton. Ce conteneur prend en charge les points de terminaison multimodèles et est optimisé pour être exécuté sur GPU des instances. Nous appelons la fonction SDK utilitaire SageMaker Python image_uris.retrieve() pour obtenir l'adresse de l'image. Par exemple :

    import sagemaker region = sagemaker_session.boto_region_name // Find the sagemaker-tritonserver image at // https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-triton/resnet50/triton_resnet50.ipynb // Find available tags at https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only image = "<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/sagemaker-tritonserver:<TAG>".format( account_id=account_id_map[region], region=region ) container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel', "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "resnet"}, }
  2. Obtenez un AWS SDK for Python (Boto3) SageMaker client et créez le modèle qui utilise ce conteneur.

    import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container])
  3. (Facultatif) Si vous utilisez un pipeline d'inférence série, obtenez le ou les conteneurs supplémentaires à inclure dans le pipeline et incluez-le dans l'argument Containers de CreateModel:

    preprocessor_container = { 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<PREPROCESSOR_IMAGE>:<TAG>' } multi_model_container = { 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<IMAGE>:<TAG>', 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )
    Note

    Vous ne pouvez utiliser qu'un seul point de multi-model-enabled terminaison dans un pipeline d'inférence en série.

  4. (Facultatif) Si votre cas d'utilisation ne bénéficie pas de la mise en cache des modèles, définissez la valeur du champ ModelCacheSetting du paramètre MultiModelConfig sur Disabled, et incluez-la dans l'argument Container de l'appel à create_model. La valeur du champ ModelCacheSetting est Enabled par défaut.

    container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container] )
  5. Configurez le point de terminaison multimodèle avec des instances GPU sauvegardées pour le modèle. Nous vous recommandons de configurer vos points de terminaison avec plusieurs instances afin de garantir une haute disponibilité et un plus grand nombre d'accès au cache.

    response = sagemaker_client.create_endpoint_config( EndpointConfigName = '<ENDPOINT_CONFIG_NAME>', ProductionVariants=[ { 'InstanceType': 'ml.g4dn.4xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName': '<MODEL_NAME>', 'VariantName': 'AllTraffic' } ] )
  6. Créez le point de terminaison multimodèle à l'aide des paramètres EndpointName et EndpointConfigName.

    response = sagemaker_client.create_endpoint( EndpointName = '<ENDPOINT_NAME>', EndpointConfigName = '<ENDPOINT_CONFIG_NAME>')