

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 AWS Graviton
<a name="realtime-endpoints-graviton"></a>

 [AWS Graviton](https://aws.amazon.com/ec2/graviton/) è una serie di processori progettati da. ARM-based AWS Sono più efficienti dal punto di vista energetico rispetto ai processori basati su x86 e offrono un ottimo rapporto prezzo/prestazioni. Amazon SageMaker AI offre Graviton-based istanze che ti consentono di 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 Graviton-based istanze, utilizzando immagini di container compatibili con ARM o immagini di container multiarchitettura. Questa guida presuppone che tu stia utilizzando [immagini di container deep learning AWS](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) o immagini di container compatibili con ARM. Per ulteriori informazioni sulla creazione di immagini personalizzate, consulta [Creazione dell'immagine](https://github.com/aws/deep-learning-containers#building-your-image). 

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

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

1. Crea un modello di SageMaker intelligenza artificiale.

1. Crea una configurazione endpoint

1. Crea un endpoint.

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

**Topics**
+ [Invia immagini di container ad Amazon ECR](#realtime-endpoints-graviton-ecr)
+ [Crea un modello AI SageMaker](#realtime-endpoints-graviton-model)
+ [Crea una configurazione dell’endpoint](#realtime-endpoints-graviton-epc)
+ [Crea un endpoint](#realtime-endpoints-graviton-ep)

## Invia immagini di container ad Amazon ECR
<a name="realtime-endpoints-graviton-ecr"></a>

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

```
docker inspect {{deep-learning-container-uri}}
```

 La risposta `"Architecture": "arm64"` indica che l'immagine supporta l'architettura ARM. Puoi inviarlo ad Amazon ECR con il comando `docker push`. Per ulteriori informazioni, consulta [Invio di un'immagine Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html). 

 Multi-architecture Le immagini dei container 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 multi-architettura, oltre a inviare le immagini ad Amazon ECR, dovrai anche inviare un elenco di manifesti 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 Amazon ECR. 

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}} \
   ```

1.  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}}
   ```

1. 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 di manifesti su Amazon ECR, consulta [Presentazione di immagini container multi-architettura per Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/) e [Inviare un'immagine multi-architettura](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html). 

## Crea un modello AI SageMaker
<a name="realtime-endpoints-graviton-model"></a>

 Crea un modello di SageMaker intelligenza artificiale chiamando l'[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API. 

```
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
)
```

## Crea una configurazione dell’endpoint
<a name="realtime-endpoints-graviton-epc"></a>

 Crea una configurazione endpoint chiamando l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html). Per un elenco di Graviton-based istanze, consulta Istanze [ottimizzate per il calcolo](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/compute-optimized-instances.html). 

```
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
<a name="realtime-endpoints-graviton-ep"></a>

 Crea un endpoint chiamando l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html). 

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