Migre la carga de trabajo de inferencias de x86 a AWS Graviton - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Migre la carga de trabajo de inferencias de x86 a AWS Graviton

AWS Graviton es una serie de procesadores ARM basados diseñados por AWS. Son más eficientes desde el punto de vista energético que los procesadores basados en x86 y ofrecen una atractiva relación precio-rendimiento. Amazon SageMaker ofrece instancias basadas en Graviton para que pueda aprovechar estos procesadores avanzados para sus necesidades de inferencia.

Puede migrar sus cargas de trabajo de inferencias existentes de instancias basadas en x86 a instancias basadas en Graviton, utilizando imágenes de contenedor compatibles o imágenes de contenedor de múltiples arquitecturas. ARM En esta guía se asume que está utilizando alguna de las dos AWS Imágenes de contenedores de Deep Learning o sus propias imágenes de contenedores ARM compatibles. Para obtener más información sobre cómo crear sus propias imágenes, consulte Crear su imagen.

A un nivel alto, la migración de la carga de trabajo de inferencias de instancias basadas en x86 a instancias basadas en Graviton es un proceso de cuatro pasos:

  1. Envíe las imágenes del contenedor a Amazon Elastic Container Registry (AmazonECR), y AWS registro de contenedores gestionado.

  2. Cree un SageMaker modelo.

  3. Crear una configuración de punto de conexión.

  4. Creación de un punto de conexión.

En las siguientes secciones de esta guía se facilita más información sobre los pasos anteriores. Sustituya el user placeholder text en los ejemplos de código con su propia información.

Envía imágenes de contenedores a Amazon ECR

Puedes enviar las imágenes de tus contenedores a Amazon ECR con la AWS CLI. Cuando utilice una imagen ARM compatible, compruebe que es compatible con ARM la arquitectura:

docker inspect deep-learning-container-uri

La respuesta "Architecture": "arm64" indica que la imagen es compatible con ARM la arquitectura. Puedes enviarlo a Amazon ECR con el docker push comando. Para obtener más información, compruebe Insertar una imagen de Docker.

Las imágenes de contenedor de arquitecturas múltiples son, fundamentalmente, un conjunto de imágenes de contenedor compatibles con diferentes arquitecturas o sistemas operativos, a las que puedes hacer referencia con un nombre de manifiesto común. Si utilizas imágenes de contenedores de varias arquitecturas, además de enviar las imágenes a AmazonECR, también tendrás que enviar una lista de manifiestos a AmazonECR. Una lista de manifiestos permite incluir anidados de otros manifiestos de imágenes, donde cada imagen incluida se especifica por arquitectura, sistema operativo y otros atributos de plataforma. En el siguiente ejemplo, se crea una lista de manifiestos y se envía a AmazonECR.

  1. Cree un archivo de manifiesto.

    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. Anote la lista de manifiestos para que identifique correctamente qué imagen corresponde a cada arquitectura.

    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. Inserte el manifiesto.

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

Para obtener más información sobre cómo crear y enviar listas de manifiestos a AmazonECR, consulta Introducir imágenes de contenedores multiarquitectura para Amazon ECR y Enviar una imagen multiarquitectura.

Cree un modelo SageMaker

Cree un SageMaker modelo llamando al 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 )

Crear la configuración de un punto de conexión

Cree una configuración de punto final llamando al CreateEndpointConfigAPI. Para obtener una lista de instancias basadas en Graviton, consulte Instancias optimizadas para la computación.

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 } ] )

Creación de un punto de conexión

Cree un punto final llamando al CreateEndpointAPI.

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