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)
-
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. -
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.
-
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.
-
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
-
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 :
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.
Appelez UpdateEndpointtout en spécifiant votre nouvelle création EndpointConfig.
Attendez que le statut de votre point de terminaison passe à
InService
. Cela prendra de 10 à 15 minutes.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
-
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. -
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 :
-
Appelez
CreateEndpointConfig
pour créer uneEndpointConfig
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. } ] )
-
Appelez
UpdateEndpoint
et spécifiez laEndpointConfig
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 )
Attendez que le statut de votre point de terminaison passe à
InService
. Cela prend de 10 à 15 minutes.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.
Rubriques
- Fonctionnement d'EI
- Sélection d'un type d'accélérateur EI
- Utiliser EI dans une instance de SageMaker bloc-notes
- Utilisation d'EI sur un point de terminaison hébergé
- Infrastructures qui prennent en charge EI
- Utiliser l'IE avec des algorithmes SageMaker intégrés
- Exemples de blocs-notes EI
- Configuration pour utiliser EI
- Attacher EI à une instance de bloc-notes
- Utiliser EI sur les points de terminaison SageMaker hébergés par Amazon
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
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
Vous pouvez télécharger les fichiers binaires MXNet compatibles EI, du compartiment Amazon S3 public amazonei-apachemxnet
Vous pouvez télécharger le fichier binaire compatible avec Elastic Inference
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
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 :
-
Utilisation d'Amazon Elastic Inference avec MXnet sur Amazon SageMaker
-
Utilisation d'Amazon Elastic Inference avec MXnet sur une instance Amazon Notebook SageMaker
-
Utilisation d'Amazon Elastic Inference avec un modèle TensorFlow NEO compilé sur SageMaker
-
Utilisation d'Amazon Elastic Inference avec un modèle de service préformé TensorFlow sur SageMaker