Migrer la charge de travail d'inférence de x86 vers Graviton AWS - 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.

Migrer la charge de travail d'inférence de x86 vers Graviton AWS

AWS Graviton est une série de processeurs ARM conçus par. AWS Ils sont plus économes en énergie que les processeurs x86 et offrent un rapport qualité-prix convaincant. Amazon SageMaker propose des instances basées sur Graviton afin que vous puissiez tirer parti de ces processeurs avancés pour vos besoins d'inférence.

Vous pouvez migrer vos charges de travail d'inférence existantes d'instances x86 vers des instances Graviton, en utilisant des images de conteneur compatibles avec ARM ou des images de conteneur multi-architecture. Ce guide suppose que vous utilisez des images de conteneur Deep Learning AWS ou vos propres images de conteneur compatibles avec ARM. Pour plus d'informations sur la création de vos propres images, consultez Building your image (Création de votre image).

À un niveau global, la migration d'une charge de travail d'inférence d'instances x86 vers des instances Graviton s'effectue en quatre étapes :

  1. Transférez les images de conteneurs vers Amazon Elastic Container Registry (Amazon ECR), AWS un registre de conteneurs géré.

  2. Créez un SageMaker modèle.

  3. Créez une configuration de point de terminaison.

  4. Créez un point de terminaison .

Les sections suivantes de ce guide fournissent plus de détails concernant les étapes ci-dessus. Remplacez user placeholder text dans l'exemple de code par vos propres informations.

Transmission des images de conteneur vers Amazon ECR

Vous pouvez transférer les images de vos conteneurs vers Amazon ECR à l'aide du AWS CLI. Lorsque vous utilisez une image compatible avec ARM, vérifiez qu'elle prend en charge l'architecture ARM :

docker inspect deep-learning-container-uri

La réponse "Architecture": "arm64" indique que l'image est compatible avec l'architecture ARM. Vous pouvez la transmettre vers Amazon ECR à l'aide de la commande docker push. Pour plus d'informations, consultez Pousser une image Docker.

Les images de conteneur multi-architecture sont essentiellement un ensemble d'images de conteneur prenant en charge différentes architectures ou systèmes d'exploitation, auxquelles vous pouvez faire référence par un nom de manifeste commun. Si vous utilisez des images de conteneur multi-architecture, en plus de transférer les images vers Amazon ECR, vous devrez également envoyer une liste de manifestes à Amazon ECR. Une liste de manifestes permet l'inclusion imbriquée d'autres manifestes d'images, chaque image incluse étant spécifiée par l'architecture, le système d'exploitation et d'autres attributs de plateforme. L'exemple suivant crée une liste de manifestes et la transmet à Amazon ECR.

  1. Créez une liste de manifestes.

    docker manifest create aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \ aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:amd64 \ aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:arm64 \
  2. Annotez la liste des manifestes afin qu'elle identifie correctement quelle image correspond à quelle architecture.

    docker manifest annotate --arch arm64 aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \ aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository:arm64
  3. Transmettez le manifeste.

    docker manifest push aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository

Pour plus d'informations sur la création et la transmission de listes de manifeste vers Amazon ECR, consultez Introducing multi-architecture container images for Amazon ECR (Présentation d'images de conteneurs multi-architecture pour Amazon ECR) et Transmission d'une image multi-architecture.

Création d'un SageMaker modèle

Créez un SageMaker modèle en appelant l'CreateModelAPI.

import boto3 from sagemaker import get_execution_role aws_region = "aws-region" sagemaker_client = boto3.client("sagemaker", region_name=aws_region) role = get_execution_role() sagemaker_client.create_model( ModelName = "model-name", PrimaryContainer = { "Image": "deep-learning-container-uri", "ModelDataUrl": "model-s3-location", "Environment": { "SAGEMAKER_PROGRAM": "inference.py", "SAGEMAKER_SUBMIT_DIRECTORY": "inference-script-s3-location", "SAGEMAKER_CONTAINER_LOG_LEVEL": "20", "SAGEMAKER_REGION": aws_region, } }, ExecutionRoleArn = role )

Créer une configuration de point de terminaison

Créez une configuration de point de terminaison en appelant l'API CreateEndpointConfig. Pour obtenir la liste des instances Graviton, consultez Instances de calcul optimisé.

sagemaker_client.create_endpoint_config( EndpointConfigName = "endpoint-config-name", ProductionVariants = [ { "VariantName": "variant-name", "ModelName": "model-name", "InitialInstanceCount": 1, "InstanceType": "ml.c7g.xlarge", # Graviton-based instance } ] )

Créer un point de terminaison

Créez un point de terminaison en appelant l'API CreateEndpoint.

sagemaker_client.create_endpoint( EndpointName = "endpoint-name", EndpointConfigName = "endpoint-config-name" )