Migra il carico di lavoro di inferenza da x86 a Graviton AWS - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Migra il carico di lavoro di inferenza da x86 a Graviton AWS

AWS Graviton è una serie di processori ARM basati su di essi progettati da AWS. Sono più efficienti dal punto di vista energetico rispetto ai processori basati su x86 e offrono un ottimo rapporto prezzo/prestazioni. Amazon SageMaker offre istanze basate su Graviton in modo da poter sfruttare questi processori avanzati per le tue esigenze di inferenza.

Puoi migrare i carichi di lavoro di inferenza esistenti da istanze basate su x86 a istanze basate su Graviton, utilizzando immagini di container compatibili o immagini di container multiarchitettura. ARM Questa guida presuppone che tu stia utilizzando AWS immagini di container di Deep Learning o immagini di container compatibili. ARM Per ulteriori informazioni sulla creazione di immagini personalizzate, consulta Creazione dell'immagine.

Ad alto livello, la migrazione del carico di lavoro di inferenza da istanze basate su x86 a istanze basate su Graviton è un processo in quattro fasi:

  1. Invia le immagini dei container ad Amazon Elastic Container Registry (AmazonECR), un registro di container AWS gestito.

  2. Crea un SageMaker modello.

  3. Crea una configurazione endpoint

  4. Crea un endpoint .

Le seguenti sezioni di questa guida forniscono maggiori dettagli sulle fasi precedenti. Sostituisci il user placeholder text negli esempi di codice con le tue informazioni.

Invia le immagini dei container ad Amazon ECR

Puoi inviare le immagini dei tuoi container ad Amazon ECR con AWS CLI. Quando usi un'immagine ARM compatibile, verifica che supporti ARM l'architettura:

docker inspect deep-learning-container-uri

La risposta "Architecture": "arm64" indica che l'immagine supporta l'ARMarchitettura. Puoi inviarlo ad Amazon ECR con il docker push comando. Per ulteriori informazioni, consulta Invio di un'immagine Docker.

Le immagini di container multi-architettura sono fondamentalmente un insieme di immagini di container che supportano diverse architetture o sistemi operativi, a cui puoi fare riferimento con un nome manifest comune. Se utilizzi immagini di container multiarchitettura, oltre a inviare le immagini ad AmazonECR, dovrai anche inviare un elenco di manifest ad Amazon. ECR Un elenco di manifesti consente l'inclusione annidata di altri manifesti di immagini, in cui ogni immagine inclusa è specificata dall'architettura, dal sistema operativo e da altri attributi della piattaforma. L'esempio seguente crea un elenco di manifesti e lo invia ad AmazonECR.

  1. Crea un elenco dei manifesti

    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. Annota l'elenco dei manifesti, in modo che identifichi correttamente quale immagine è destinata a quale architettura.

    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. Invia il manifesto.

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

Per ulteriori informazioni sulla creazione e l'invio di elenchi manifest su AmazonECR, consulta Introducing multi-architecture container images for Amazon ECR e Pushing a multi-architecture image.

Crea un modello SageMaker

Crea un SageMaker modello chiamando il 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 )

Creare una configurazione endpoint

Crea una configurazione dell'endpoint chiamando il CreateEndpointConfigAPI. Per un elenco di istanze basate su Graviton, seleziona Istanze ottimizzate per il calcolo.

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

Crea un endpoint

Crea un endpoint chiamando il. CreateEndpointAPI

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