Migre a carga de trabalho de inferência de x86 para AWS Graviton - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Migre a carga de trabalho de inferência de x86 para AWS Graviton

AWS Graviton é uma série de processadores ARM baseados projetados por AWS. Eles são mais eficientes em termos de energia do que os processadores baseados em x86 e oferecem uma relação preço-desempenho atraente. A Amazon SageMaker oferece instâncias baseadas em Graviton para que você possa aproveitar esses processadores avançados para suas necessidades de inferência.

Você pode migrar suas cargas de trabalho de inferência existentes de instâncias baseadas em x86 para instâncias baseadas em Graviton usando imagens de contêiner compatíveis ou ARM imagens de contêiner de várias arquiteturas. Este guia pressupõe que você esteja usando AWS Imagens de contêiner do Deep Learning ou suas próprias imagens de contêiner ARM compatíveis. Para obter mais informações sobre como criar suas próprias imagens, consulte Como criar sua imagem.

Em um alto nível, migrar a workload de inferência de instâncias baseadas em x86 para instâncias baseadas em Graviton é um processo de quatro etapas:

  1. Envie imagens de contêiner para o Amazon Elastic Container Registry (AmazonECR), um AWS registro de contêiner gerenciado.

  2. Crie um SageMaker modelo.

  3. Crie uma configuração de endpoint.

  4. Crie um endpoint do .

As seções a seguir deste guia fornecem mais detalhes sobre as etapas acima. Substitua o user placeholder text nos exemplos de código com suas próprias informações.

Envie imagens de contêineres para a Amazon ECR

Você pode enviar suas imagens de contêiner para a Amazon ECR com o AWS CLI. Ao usar uma imagem ARM compatível, verifique se ela oferece suporte à ARM arquitetura:

docker inspect deep-learning-container-uri

A resposta "Architecture": "arm64" indica que a imagem oferece suporte à ARM arquitetura. Você pode enviá-lo para a Amazon ECR com o docker push comando. Para obter mais informações, consulte Enviando uma imagem do Docker.

As imagens de contêiner de várias arquiteturas são basicamente um conjunto de imagens de contêiner que oferecem suporte a diferentes arquiteturas ou sistemas operacionais, aos quais você pode se referir por um nome de manifesto comum. Se você estiver usando imagens de contêiner de várias arquiteturas, além de enviar as imagens para a AmazonECR, você também precisará enviar uma lista de manifestos para a Amazon. ECR Uma lista de manifestos permite a inclusão aninhada de outros manifestos de imagem, em que cada imagem incluída é especificada por arquitetura, sistema operacional e outros atributos da plataforma. O exemplo a seguir cria uma lista de manifestos e a envia para a AmazonECR.

  1. Crie uma lista de manifesto.

    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 a lista de manifesto para que ela identifique corretamente qual imagem é para qual arquitetura.

    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. Envie o manifesto.

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

Para obter mais informações sobre como criar e enviar listas de manifestos para a AmazonECR, consulte Apresentando imagens de contêiner de várias arquiteturas para a Amazon ECR e Enviando uma imagem de várias arquiteturas.

Crie um SageMaker modelo

Crie um SageMaker modelo chamando CreateModelAPIo.

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 )

Criar uma configuração de endpoint

Crie uma configuração de endpoint chamando o. CreateEndpointConfigAPI Para ver uma lista de instâncias baseadas em Graviton, consulte Instâncias otimizadas para computação.

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

Criar um endpoint

Crie um endpoint chamando o. CreateEndpointAPI

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