Utilisation d'EI sur des points de terminaison hébergés Amazon SageMaker - Amazon SageMaker

Utilisation d'EI sur des points de terminaison hébergés Amazon SageMaker

Pour utiliser Elastic Inference (EI) dans Amazon SageMaker avec un point de terminaison hébergé pour une inférence en temps réel, spécifiez un accélérateur EI lorsque vous créez le modèle déployable devant être hébergé au niveau de ce point de terminaison. Vous pouvez effectuer cette opération de différentes manières :

  • Utilisez les versions TensorFlow, MXNet ou PyTorch du kit SDK Amazon SageMaker Python et les conteneurs préconçus SageMaker pour TensorFlow, MXNet et PyTorch

  • Créez votre propre conteneur et utilisez l'API SageMaker de bas niveau (Boto 3). Vous devrez importer la version compatible EI de TensorFlow, MXNet ou PyTorch à partir des emplacements Amazon S3 fournis dans votre conteneur, et utiliser l'une de ces versions pour écrire votre script d'entraînement.

  • Employez les algorithmes intégrés Algorithme de classification d'images ou Algorithme de détection d'objets, et utilisez le AWS SDK for Python (Boto3) pour exécuter votre tâche d'entraînement et créer votre modèle déployable ainsi que le point de terminaison hébergé.

Utilisation d'EI avec un conteneur SageMaker TensorFlow

Pour utiliser TensorFlow avec EI dans SageMaker, vous devez appeler la méthode deploy correspondant aux objets Estimateur ou Modèle. Vous pouvez ensuite spécifier un type d'accélérateur au moyen de l'argument d'entrée correspondant. Pour de plus amples informations sur l'utilisation de TensorFlow dans le kit SDK Amazon SageMaker Python, veuillez consulter https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/index.html.

Amazon SageMaker fournit un entraînement du modèle et un code d'inférence par défaut pour vous faciliter. Pour les formats de fichier personnalisés, il se peut que vous ayez besoin d'implémenter un entraînement de modèle et un code d'inférence personnalisés.

Utiliser un objet évaluateur

Pour utiliser un objet évaluateur avec EI, lorsque vous utilisez la méthode deploy, incluez l'argument d'entrée accelerator_type. L'évaluateur renvoie un objet prédicteur dont nous appelons la méthode deploy, comme illustré dans l'exemple de code.

# Deploy an estimator using EI (using the accelerator_type input argument) predictor = estimator.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge', accelerator_type='ml.eia2.medium')

Utiliser un objet modèle

Pour utiliser un objet modèle avec EI, lorsque vous utilisez la méthode deploy, incluez l'argument d'entrée accelerator_type. L'évaluateur renvoie un objet prédicteur dont nous appelons la méthode deploy, comme illustré dans l'exemple de code.

# Deploy a model using EI (using the accelerator_type input argument) predictor = model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge', accelerator_type='ml.eia2.medium')

Utilisation d'EI avec un conteneur SageMaker MXNet

Pour utiliser MXNet avec EI dans Amazon SageMaker, vous devez appeler la méthode deploy correspondant aux objets évaluateur ou modèle. Vous spécifiez ensuite un type d'accélérateur à l'aide de l'argument d'entrée accelerator_type. Pour de plus amples informations sur l'utilisation de MXNet dans le kit SDK Amazon SageMaker Python, veuillez consulter https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/index.html

Amazon SageMaker fournit un entraînement du modèle et un code d'inférence par défaut pour vous faciliter. Pour les formats de fichier personnalisés, il se peut que vous ayez besoin d'écrire du code d'entraînement et d'inférence de modèle personnalisé.

Utiliser un objet évaluateur

Pour utiliser un objet évaluateur avec EI, lorsque vous utilisez la méthode deploy, incluez l'argument d'entrée accelerator_type. L'évaluateur renvoie un objet prédicteur dont nous appelons la méthode deploy, comme illustré dans l'exemple de code.

# Deploy an estimator using EI (using the accelerator_type input argument) predictor = estimator.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge', accelerator_type='ml.eia2.medium')

Utiliser un objet modèle

Pour utiliser un objet modèle avec EI, lorsque vous utilisez la méthode deploy, incluez l'argument d'entrée accelerator_type. L'évaluateur renvoie un objet prédicteur dont nous appelons la méthode deploy, comme illustré dans l'exemple de code.

# Deploy a model using EI (using the accelerator_type input argument) predictor = model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge', accelerator_type='ml.eia2.medium')

Pour obtenir un exemple complet de l'utilisation d'EI avec MXNet dans SageMaker, veuillez consulter l'exemple de bloc-notes à l'adresse https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/mxnet_mnist/mxnet_mnist_elastic_inference.ipynb

Utilisation d'EI avec un conteneur SageMaker PyTorch

Pour utiliser PyTorch avec EI dans SageMaker, vous devez appeler la méthode deploy des objets Estimateur ou Modèle. Vous spécifiez ensuite un type d'accélérateur à l'aide de l'argument d'entrée accelerator_type. Pour de plus amples informations sur l'utilisation de PyTorch dans le kit SDK Amazon SageMaker Python, veuillez consulter SageMaker PyTorch Estimators and Models (Estimateurs et modèles SageMaker PyTorch).

Amazon SageMaker fournit un entraînement du modèle et un code d'inférence par défaut pour vous faciliter. Pour les formats de fichier personnalisés, il se peut que vous ayez besoin d'écrire du code d'entraînement et d'inférence de modèle personnalisé.

Utiliser un objet évaluateur

Pour utiliser un objet évaluateur avec EI, lorsque vous utilisez la méthode deploy, incluez l'argument d'entrée accelerator_type. L'évaluateur renvoie un objet prédicteur dont nous appelons la méthode deploy, comme illustré dans l'exemple de code suivant.

# Deploy an estimator using EI (using the accelerator_type input argument) predictor = estimator.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge', accelerator_type='ml.eia2.medium')

Utiliser un objet modèle

Pour utiliser un objet modèle avec EI, lorsque vous utilisez la méthode deploy, incluez l'argument d'entrée accelerator_type. Le modèle renvoie un objet prédicteur dont nous appelons la méthode deploy, comme illustré dans l'exemple de code suivant.

# Deploy a model using EI (using the accelerator_type input argument) predictor = model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge', accelerator_type='ml.eia2.medium')

Utilisation d'EI avec votre propre conteneur

Pour utiliser EI avec un modèle dans un conteneur personnalisé que vous créez, utilisez le kit AWS SDK pour Python (Boto 3) de bas niveau. Téléchargez et importez les versions compatibles EI AWS des cadres de machine learning TensorFlow, Apache MXNet ou PyTorch, et écrivez votre script d'entraînement à l'aide de ces cadres.

Importation de la version EI de TensorFlow, MXNet ou PyTorch dans votre conteneur Docker

Pour utiliser EI avec votre propre conteneur, vous devez importer la bibliothèque Amazon EI TensorFlow Serving, la bibliothèque Amazon EI Apache MXNet ou la bibliothèque PyTorch compatible Elastic Inference dans votre conteneur. Les versions compatibles EI de TensorFlow et de MXNet sont actuellement disponibles sous forme de fichiers binaires stockés dans des emplacements Amazon S3. Vous pouvez télécharger le binaire compatible EI pour TensorFlow à partir du compartiment Amazon S3 à l'adresse console.aws.amazon.com/s3/buckets/amazonei-tensorflow. Pour plus d'informations sur la création d'un conteneur utilisant la version compatible EI de TensorFlow, consultez https://github.com/aws/sagemaker-tensorflow-container#building-the-sagemaker-elastic-inference-tensorflow-serving-container. Vous pouvez télécharger le binaire compatible EI pour Apache MXNet à partir du compartiment Amazon S3 public à l'adresse console.aws.amazon.com/s3/buckets/amazonei-apachemxnet. Pour plus d'informations sur la création d'un conteneur utilisant la version compatible EI de MXNet, consultez https://github.com/aws/sagemaker-mxnet-container#building-the-sagemaker-elastic-inference-mxnet-container. Vous pouvez télécharger le binaire PyTorch compatible Elastic Inference à partir du compartiment Amazon S3 public à l'adresse console.aws.amazon.com/s3/buckets/amazonei-pytorch. Pour de plus amples informations sur la création d'un conteneur qui utilise la version compatible Elastic Inference de PyTorch, veuillez consulter Création de votre image.

Création d'un point de terminaison EI avec le kit AWSSDK pour Python (Boto 3)

Pour créer un point de terminaison à l'aide du kit AWS SDK pour Python (Boto 3), vous devez d'abord créer une configuration de point de terminaison. La configuration de point de terminaison spécifie un ou plusieurs modèles (appelés variantes de production) que vous souhaitez héberger au point de terminaison. Pour attacher EI à une ou plusieurs des variantes de production hébergées au point de terminaison, vous devez spécifier l'un des types d'instance EI en tant que champ AcceleratorType pour cette ProductionVariant. Vous pouvez ensuite transmettre cette configuration de point de terminaison lorsque vous créez le point de terminaison.

Création d'une configuration de point de terminaison

Pour utiliser EI, vous devez spécifier un type d'accélérateur dans la configuration de point de terminaison.

# Create Endpoint Configuration from time import gmtime, strftime endpoint_config_name = 'ImageClassificationEndpointConfig-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) print(endpoint_config_name) create_endpoint_config_response = sagemaker.create_endpoint_config( EndpointConfigName = endpoint_config_name, ProductionVariants=[{ 'InstanceType':'ml.m4.xlarge', 'InitialInstanceCount':1, 'ModelName':model_name, 'VariantName':'AllTraffic', 'AcceleratorType':'ml.eia2.medium'}]) print("Endpoint Config Arn: " + create_endpoint_config_response['EndpointConfigArn'])

Création d'un point de terminaison

Une fois que vous avez créé une configuration de point de terminaison avec un type d'accélérateur, vous pouvez créer un point de terminaison.

endpoint_name = 'ImageClassificationEndpoint-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) endpoint_response = sagemaker.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name)

Après avoir créé le point de terminaison, vous pouvez l'appeler en utilisant la méthode invoke_endpoint dans un objet d'exécution Boto3, comme vous le feriez pour tout autre point de terminaison.