Utiliser Amazon SageMaker Elastic Inference (EI) - 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.

Utiliser Amazon SageMaker Elastic Inference (EI)

À compter du 15 avril 2023, AWS nous n'intégrerons pas de nouveaux clients à Amazon Elastic Inference (EI) et nous aiderons les clients actuels à migrer leurs charges de travail vers des options offrant un meilleur prix et de meilleures performances. Après le 15 avril 2023, les nouveaux clients ne pourront plus lancer d'instances avec les accélérateurs Amazon EI sur Amazon SageMaker, Amazon ECS ou Amazon EC2.

L'apprentissage automatique (ML) vous AWS aide à innover plus rapidement grâce à l'ensemble le plus complet de services et d'infrastructures de machine learning disponible dans le cadre d'un modèle d' as-you-go utilisation payante à faible coût. AWS fournit en permanence une infrastructure plus performante et moins coûteuse pour les charges de travail d'inférence ML. AWS a lancé Amazon Elastic Inference (EI) en 2018 pour permettre aux clients d'associer une accélération peu coûteuse alimentée par GPU aux tâches Amazon EC2, Amazon SageMaker Instances ou Amazon Elastic Container Service (ECS) afin de réduire le coût d'exécution de l'inférence par apprentissage profond jusqu'à 75 % par rapport aux instances autonomes basées sur un GPU telles qu'Amazon EC2 P4d et Amazon EC2 G5. En 2019, AWS a lancé AWS Inferentia, le premier silicium personnalisé d'Amazon conçu pour accélérer les charges de travail liées au deep learning en fournissant une inférence de haute performance dans le cloud. Les instances Amazon EC2 Inf1 basées sur des puces AWS Inferentia offrent un débit 2,3 fois supérieur et un coût par inférence jusqu'à 70 % inférieur à celui des instances Amazon EC2 comparables basées sur un GPU de génération actuelle. Avec la disponibilité de nouvelles options de calcul accéléré telles que les instances AWS Inferentia et Amazon EC2 G5, l'avantage d'associer un GPU fractionné à une instance hôte de processeur à l'aide d'Amazon EI a diminué. Par exemple, les clients hébergeant des modèles sur Amazon EI qui passent à des instances ml.inf1.xlarge peuvent réaliser jusqu'à 56 % d'économies et doubler leurs performances.

Les clients peuvent utiliser Amazon SageMaker Inference Recommender pour les aider à choisir les meilleures instances alternatives à Amazon EI pour déployer leurs modèles de machine learning.

Questions fréquentes (FAQ)

  1. Pourquoi Amazon encourage-t-il ses clients à transférer les charges de travail d'Amazon Elastic Inference (EI) vers de nouvelles options d'accélération matérielle telles AWS qu'Inferentia ?

    Les clients obtiennent de meilleures performances à un prix bien meilleur qu'Amazon EI grâce à de nouvelles options d'accélérateur matériel telles qu'AWS Inferentia pour leurs charges de travail d'inférence. AWS Inferentia est conçu pour fournir des inférences de haute performance dans le cloud, pour réduire le coût total de l'inférence et pour permettre aux développeurs d'intégrer facilement l'apprentissage automatique dans leurs applications professionnelles. Pour permettre aux clients de bénéficier de ces accélérateurs matériels de nouvelle génération, nous n'intégrerons pas de nouveaux clients à Amazon EI après le 15 avril 2023.

  2. Quels AWS services sont concernés par la décision de ne plus intégrer de nouveaux clients à Amazon Elastic Inference (EI) ?

    Cette annonce affectera les accélérateurs Amazon EI associés à toutes les tâches Amazon EC2, Amazon instances ou SageMaker Amazon Elastic Container Service (ECS). Sur Amazon SageMaker, cela s'applique à la fois aux terminaux et aux noyaux de blocs-notes utilisant les accélérateurs Amazon EI.

  3. Pourrai-je créer un accélérateur Amazon Elastic Inference (EI) après le 15 avril 2023 ?

    Non, si vous êtes un nouveau client et que vous n'avez pas utilisé Amazon EI au cours des 30 derniers jours, vous ne pourrez pas créer de nouvelle instance Amazon EI sur votre AWS compte après le 15 avril 2023. Toutefois, si vous avez utilisé un accélérateur Amazon EI au moins une fois au cours des 30 derniers jours, vous pouvez associer un nouvel accélérateur Amazon EI à votre instance.

  4. Comment évaluer les options d'instance alternatives pour mes points de terminaison Amazon SageMaker Inference actuels ?

    Amazon SageMaker Inference Recommender peut vous aider à identifier des déploiements rentables pour migrer les charges de travail existantes d'Amazon Elastic Inference (EI) vers une instance ML appropriée prise en charge par. SageMaker

  5. Comment modifier le type d'instance de mon point de terminaison existant sur Amazon SageMaker ?

    Vous pouvez modifier le type d'instance de votre point de terminaison existant en procédant comme suit :

    1. Créez d'abord une nouvelle instance EndpointConfig qui utilise le nouveau type d'instance. Si vous avez une politique de mise à l'échelle automatique, supprimez-la.

    2. Appelez UpdateEndpointtout en spécifiant votre nouvelle création EndpointConfig.

    3. Attendez que le statut de votre point de terminaison passe à InService. Cela prendra de 10 à 15 minutes.

    4. Enfin, si vous avez besoin d'un dimensionnement automatique pour votre nouveau point de terminaison, créez une nouvelle politique de dimensionnement automatique pour ce nouveau point de terminaison et. ProductionVariant

  6. Comment modifier le type d'instance de mon instance Amazon SageMaker Notebook existante à l'aide d'Amazon Elastic Inference (EI) ?

    Choisissez les instances de bloc-notes dans la SageMaker console, puis choisissez l'instance de bloc-notes que vous souhaitez mettre à jour. Assurez-vous que l'instance de bloc-notes a le statut Stopped. Enfin, vous pouvez choisir Modifier et changer de type d'instance. Lorsque votre instance de bloc-notes démarre, assurez-vous de sélectionner le noyau approprié pour votre nouvelle instance.

  7. Existe-t-il un type d'instance spécifique qui constitue une bonne alternative à Amazon Elastic Inference (EI) ?

    Chaque charge de travail de machine learning est unique. Nous vous recommandons d'utiliser Amazon SageMaker Inference Recommender pour vous aider à identifier le type d'instance adapté à votre charge de travail ML, à vos exigences de performances et à votre budget. AWS Inferentia, en particulier inf1.xlarge, est la meilleure alternative à hautes performances et à faible coût pour les clients d'Amazon EI.

Migration d'Amazon Elastic Inference vers d'autres instances

Les informations suivantes peuvent vous aider à migrer vos points de SageMaker terminaison hébergés depuis des instances qui utilisent les accélérateurs Amazon Elastic Inference vers d'autres instances. Les conseils varient en fonction de votre framework.

PyTorch

Si vous effectuez une migration depuis PyTorch, suivez les instructions suivantes.

1. Choisissez le type d'instance approprié

Chaque charge de travail de machine learning est unique. Nous vous recommandons d'utiliser Amazon SageMaker Inference Recommender pour vous aider à identifier le type d'instance adapté à votre charge de travail ML, à vos exigences de performances et à votre budget. AWS Inferentia, en particulierinf1.xlarge, est la meilleure alternative à haute performance et à faible coût pour les clients d'Amazon Elastic Inference.

Lors de nos tests de charge avec Inference Recommender, les instances g4dn.xlarge ont obtenu de meilleurs résultats que les instances m5.large auxquelles eia.2large était associé. Avec Amazon Elastic Inference, vous devez payer le coût supplémentaire de l'instance ML à laquelle l'accélérateur est associé. Amazon Elastic Inference ne prend également en charge que les versions PyTorch 1.5 et TensorFlow 2.3. Si vous migrez vers ml.g4dn des instances, vous pouvez utiliser les dernières versions des versions PyTorch 1.11 et TensorFlow 2.9. En outre, ml.g4dn AWS Inferentia est disponible dans toutes les AWS régions, tandis qu'Amazon Elastic Inference n'est disponible que dans 6 régions. AWS Inferentia et ml.g4dn offrent tous les deux de meilleures performances à un prix inférieur pour la plupart des charges de travail d'inférence ML.

2. Modifiez inference.py

Modifiez votre fichier inference.py de sorte à retirer toutes les modifications requises spécifiques à Elastic Inference et utilisez les gestionnaires par défaut. Selon les cas d'utilisation, vous pouvez avoir différents gestionnaires d'entrée et de sortie, mais les principales modifications que vous devez apporter concernent les fonctions model_fn et predict_fn du gestionnaire de chargement de modèle. Retirez le gestionnaire de prédictions predict_fn spécifique à Elastic Inference et restaurez le format par défaut du gestionnaire de chargement de modèle model_fn. L'exemple suivant montre comment procéder, avec les parties que vous devez retirer des commentaires inference.py :

from __future__ import print_function import os import torch import torch.nn as nn import torch.nn.functional as F import numpy as np def model_fn(model_dir, context): model = {customer_model} # if torch.__version__ in VERSIONS_USE_NEW_API: # import torcheia # loaded_model = loaded_model.eval() # loaded_model = torcheia.jit.attach_eia(loaded_model, 0) with open(os.path.join(model_dir, 'model.pth'), 'rb') as f: model.load_state_dict(torch.load(f)) return model # def predict_fn(input_data, model): # logger.info( # "Performing EIA inference with Torch JIT context with input of size {}".format( # input_data.shape # ) # ) # device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # input_data = input_data.to(device) # with torch.no_grad(): # if torch.__version__ in VERSIONS_USE_NEW_API: # import torcheia # # torch._C._jit_set_profiling_executor(False) # with torch.jit.optimized_execution(True): # return model.forward(input_data) # else: # with torch.jit.optimized_execution(True, {"target_device": "eia:0"}): # return model(input_data) def predict_fn(input_data, model): return model(input_data)

3. Création d'un modèle

Créez un modèle qui pointe vers votre fichier inference.py modifié. Vous pouvez conserver le fichier inference.py localement et pointer vers celui-ci en spécifiant source_dir et entry_point ou en archivant le fichier inference.py dans l'archive du modèle. L'exemple suivant illustre le cas précédent :

from sagemaker.pytorch import PyTorchModel pytorch = PyTorchModel( model_data={model_data_url}, role=role, entry_point="inference.py", source_dir="code", framework_version="1.5.1", py_version="py3", sagemaker_session=sagemaker_session, )

4. Déployez le modèle sur le point de terminaison et invoquez-le

Vous pouvez utiliser l'une des options suivantes pour déployer votre modèle après avoir apporté les modifications précédentes.

Option 1 : déploiement à partir de zéro

Vous pouvez déployer le modèle sur un nouveau point de terminaison avec une instance recommandée de la catégorie Calcul accéléré, telle que G4.

predictor = pytorch.deploy( ... # instance_type = "ml.c5.xlarge", instance_type="ml.g4dn.2xlarge", ... response = predictor.predict(payload)

Option 2 : mise à jour du point de terminaison existant

Procédez comme suit pour mettre à jour votre point de terminaison existant :

  1. Appelez CreateEndpointConfig pour créer une EndpointConfig qui utilise le nouveau type d'instance. Si vous avez une politique de mise à l'échelle automatique, supprimez-la.

    endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": "variant1", # The name of the production variant. "ModelName": model_name, # The name of new created model "InstanceType": instance_type, # Specify the right-sized instance type. "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )
  2. Appelez UpdateEndpoint et spécifiez la EndpointConfig que vous venez de créer.

    endpoint_config_response = sagemaker_client.update_endpoint( EndpointConfigName=endpoint_config_name, # The name of the new endpoint config just created EndpointName=endpoint_name # The name of the existing endpoint you want to update )
  3. Attendez que le statut de votre point de terminaison passe à InService. Cela prend de 10 à 15 minutes.

  4. Enfin, si vous avez besoin de la mise à l'échelle automatique pour votre nouveau point de terminaison, créez une nouvelle politique de mise à l'échelle automatique pour votre nouveau point de terminaison et ProductionVariant.

TensorFlow

Si vous effectuez une migration depuis TensorFlow, suivez les instructions suivantes.

1. Choisissez le type d'instance approprié

Reportez-vous à l'instruction 1. Choisissez le bon guide sur le type d'instance dans la PyTorch section.

2. Déployez le modèle sur le point de terminaison et invoquez-le

Vous pouvez utiliser l'une des options suivantes pour déployer votre modèle.

Option 1 : déploiement à partir de zéro

Vous pouvez migrer depuis Elastic Inference en redéployant le modèle sur un nouveau point de terminaison en retirant le champ accelerator_type et en spécifiant un type d'instance de taille appropriée de la catégorie Calcul accéléré, tel que G4. Dans l'exemple suivant, la ligne mise en commentaire vous oblige à déployer sans utiliser d'accélérateur Elastic Inference.

predictor = tensorflow_model.deploy( ... instance_type="ml.g4dn.2xlarge" # instance_type="ml.c5.xlarge", # accelerator_type="ml.eia1.medium" ... )

Option 2 : Mise à jour du point de terminaison existant

Reportez-vous à l'Option 2. Mettez à jour les directives existantes sur les terminaux à l'étape 4 de la PyTorch section.

MXNet

Si vous migrez depuis MXNet, suivez les instructions suivantes.

1. Choisissez le type d'instance approprié

Reportez-vous à l'instruction 1. Choisissez le bon guide sur le type d'instance dans la PyTorch section.

2. Déployez le modèle sur le point de terminaison et invoquez-le

Vous pouvez utiliser l'une des options suivantes pour déployer votre modèle.

Option 1 : déploiement à partir de zéro

Vous pouvez migrer depuis Elastic Inference en redéployant le modèle sur un nouveau point de terminaison en retirant le champ accelerator_type et en spécifiant un type d'instance de taille appropriée de la catégorie Calcul accéléré, tel que G4. Dans l'exemple suivant, la ligne mise en commentaire vous oblige à déployer sans utiliser d'accélérateur Elastic Inference.

predictor = mxnet_model.deploy( ... # instance_type="ml.c5.xlarge", instance_type="ml.g4dn.2xlarge" ... )

Option 2 : Mise à jour du point de terminaison existant

Reportez-vous à l'option 2 : mettre à jour les directives existantes sur les terminaux à l'étape 4 de la PyTorch section.

Sélection d'un type d'accélérateur EI

Tenez compte des facteurs suivants lorsque vous choisissez un type d'accélérateur pour un modèle hébergé :

  • Les modèles, les tenseurs d'entrée et les tailles de lot influent sur la quantité de mémoire dont vous avez besoin pour l'accélérateur. Démarrez avec un type d'accélérateur qui fournit au moins autant de mémoire que la taille de fichier de votre modèle entraîné. Prenez en compte le fait qu'un modèle peut utiliser beaucoup plus de mémoire que la taille du fichier lors de l'exécution.

  • Les exigences liées aux ressources de calcul de l'UC, à la mémoire système principale, à l'accélération basée sur GPU et à la mémoire d'accélérateur varient considérablement d'un type de modèle de deep learning à l'autre. En outre, les exigences en matière de latence et de débit de l'application déterminent la quantité de calcul et l'accélération dont vous avez besoin. Testez bien différentes configurations de types d'instance et de tailles d'accélérateur EI pour vous assurer que vous choisissez la configuration qui répond le mieux aux besoins de performances de votre application.

Pour de plus amples informations sur la sélection d'un accélérateur EI, veuillez consulter :

Utiliser EI dans une instance de SageMaker bloc-notes

Généralement, vous créez et testez des modèles d'apprentissage automatique dans un SageMaker bloc-notes avant de les déployer pour la production. Vous pouvez attacher EI à l'instance de bloc-notes lorsque vous créez une instance de bloc-notes. Vous pouvez configurer un point de terminaison hébergé localement sur l'instance du bloc-notes en utilisant le mode local pris en charge par MXNet TensorFlow, ainsi que PyTorch les estimateurs et modèles du SDK Amazon SageMaker Python pour tester les performances d'inférence. Elastic Inference activé n' PyTorch est actuellement pas pris en charge sur les instances de bloc-notes. Pour plus d'informations sur la façon d'attacher EI à une instance de bloc-notes et de configurer un point de terminaison local pour l'inférence, consultez Attacher EI à une instance de bloc-notes. Il existe également des noyaux SageMaker Notebook Jupyter compatibles avec Elastic Inference pour les versions compatibles avec Elastic Inference et Apache MXnet. TensorFlow Pour plus d'informations sur l'utilisation des instances de SageMaker bloc-notes, consultez Utiliser les instances de SageMaker bloc-notes Amazon

Utilisation d'EI sur un point de terminaison hébergé

Lorsque vous êtes prêt à déployer votre modèle en production afin de fournir des inférences, vous créez un point de terminaison SageMaker hébergé. Vous pouvez attacher EI à l'instance sur laquelle votre point de terminaison est hébergé pour augmenter ses performances en matière de fourniture d'inférences. Pour plus d'informations sur la façon d'attacher EI à une instance hébergée de point de terminaison, consultez Utiliser EI sur les points de terminaison SageMaker hébergés par Amazon.

Infrastructures qui prennent en charge EI

Amazon Elastic Inference est conçu pour être utilisé avec des versions AWS améliorées d'Apache TensorFlow MXnet ou PyTorch des frameworks d'apprentissage automatique. Ces versions améliorées des frameworks sont automatiquement intégrées aux conteneurs lorsque vous utilisez le SDK Amazon SageMaker Python, ou vous pouvez les télécharger sous forme de fichiers binaires et les importer dans vos propres conteneurs Docker.

Vous pouvez télécharger les fichiers TensorFlow binaires compatibles IE depuis le compartiment Amazon S3 public amazonei-tensorflow vers les conteneurs de service. TensorFlow Pour plus d'informations sur la création d'un conteneur utilisant la version compatible IE de TensorFlow, consultez Amazon Elastic TensorFlow Inference with in. SageMaker

Vous pouvez télécharger les fichiers binaires MXNet compatibles EI, du compartiment Amazon S3 public amazonei-apachemxnet vers les conteneurs de service MXNet. Pour plus d'informations sur la création d'un conteneur utilisant la version compatible IE de MXnet, consultez Amazon Elastic Inference with MXnet in. SageMaker

Vous pouvez télécharger le fichier binaire compatible avec Elastic Inference pour. PyTorch Pour plus d'informations sur la création d'un conteneur utilisant la version compatible IE de PyTorch, consultez Amazon Elastic PyTorch Inference with in. SageMaker

Pour utiliser Elastic Inference dans un point de terminaison hébergé, vous pouvez choisir l'un des cadres suivants, en fonction de vos besoins.

Si vous devez créer un conteneur personnalisé pour déployer votre modèle qui est complexe et nécessite des extensions à un framework que les conteneurs SageMaker prédéfinis ne prennent pas en charge, utilisez le AWS SDK de bas niveau pour Python (Boto 3).

Utiliser l'IE avec des algorithmes SageMaker intégrés

Actuellement, les algorithmes intégrés Classification des images - MXNet et Détection d'objets : MXNet prennent en charge EI. Pour obtenir un exemple qui utilise l'algorithme de classification des images avec EI, veuillez consulter End-to-End Multiclass Image Classification Example.

Exemples de blocs-notes EI

Les exemples de blocs-notes suivants fournissent des exemples d'utilisation de l'IE dans SageMaker :