Usa Amazon SageMaker Elastic Inference (EI) - 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à.

Usa Amazon SageMaker Elastic Inference (EI)

A partire dal 15 aprile 2023, non AWS effettuerà l'onboarding di nuovi clienti in Amazon Elastic Inference (EI) e aiuterà i clienti attuali a migrare i propri carichi di lavoro verso opzioni che offrono prezzi e prestazioni migliori. Dopo il 15 aprile 2023, i nuovi clienti non saranno in grado di avviare istanze con acceleratori Amazon EI su Amazon, SageMaker Amazon ECS o Amazon EC2.

L'apprendimento automatico (ML) on ti AWS aiuta a innovare più velocemente con il set più completo di servizi e infrastrutture ML disponibili in un modello di utilizzo a pagamento a basso costo. as-you-go AWS offre continuamente un'infrastruttura con prestazioni migliori e costi inferiori per i carichi di lavoro di inferenza ML. AWS ha lanciato Amazon Elastic Inference (EI) nel 2018 per consentire ai clienti di collegare attività a basso costo basate su GPU ad Amazon EC2, alle istanze Amazon o Amazon Elastic Container Service (ECS) per ridurre i costi di esecuzione dell'inferenza di deep learning fino al 75% rispetto alle istanze basate su GPU autonome come Amazon EC2 P4d e Amazon EC2 G5. SageMaker Nel 2019, AWS ha lanciato AWS Inferentia, il primo silicio personalizzato di Amazon progettato per accelerare i carichi di lavoro di deep learning fornendo inferenza ad alte prestazioni nel cloud. Le istanze Amazon EC2 Inf1 basate su chip AWS Inferentia offrono un throughput 2,3 volte superiore e un costo per inferenza fino al 70% inferiore rispetto alle istanze Amazon EC2 di ultima generazione comparabili basate su GPU. Con la disponibilità di nuove opzioni di elaborazione accelerata come le istanze AWS Inferentia e Amazon EC2 G5, il vantaggio di collegare una GPU frazionata a un'istanza host di CPU utilizzando Amazon EI è diminuito. Ad esempio, i clienti che ospitano modelli su Amazon EI che passano alle istanze ml.inf1.xlarge possono ottenere risparmi sui costi fino al 56% e un miglioramento delle prestazioni due volte superiore.

I clienti possono utilizzare Amazon SageMaker Inference Recommender per aiutarli a scegliere le migliori istanze alternative ad Amazon EI per la distribuzione dei loro modelli di machine learning.

Domande frequenti

  1. Perché Amazon incoraggia i clienti a spostare i carichi di lavoro da Amazon Elastic Inference (EI) a nuove opzioni di accelerazione hardware come Inferentia? AWS

    I clienti ottengono prestazioni migliori a un prezzo molto migliore rispetto ad Amazon EI con nuove opzioni di accelerazione hardware come AWS Inferentia per i loro carichi di lavoro di inferenza. AWS Inferentia è progettato per fornire inferenza ad alte prestazioni nel cloud, ridurre il costo totale dell'inferenza e facilitare agli sviluppatori l'integrazione dell'apprendimento automatico nelle loro applicazioni aziendali. Per consentire ai clienti di sfruttare al meglio questi acceleratori hardware di nuova generazione, non effettueremo l'onboarding di nuovi clienti in Amazon EI dopo il 15 aprile 2023.

  2. Quali AWS servizi sono influenzati dalla decisione di interrompere l'onboarding di nuovi clienti su Amazon Elastic Inference (EI)?

    Questo annuncio influirà sugli acceleratori Amazon EI collegati a qualsiasi attività di Amazon EC2, istanze Amazon o SageMaker Amazon Elastic Container Service (ECS). In Amazon SageMaker, questo vale sia per gli endpoint che per i kernel dei notebook che utilizzano gli acceleratori Amazon EI.

  3. Potrò creare un nuovo acceleratore Amazon Elastic Inference (EI) dopo il 15 aprile 2023?

    No, se sei un nuovo cliente e non hai utilizzato Amazon EI negli ultimi 30 giorni, non potrai creare una nuova istanza Amazon EI nel tuo AWS account dopo il 15 aprile 2023. Tuttavia, se hai utilizzato un acceleratore Amazon EI almeno una volta negli ultimi 30 giorni, puoi collegare un nuovo acceleratore Amazon EI alla tua istanza.

  4. Come posso valutare le opzioni di istanza alternative per i miei attuali endpoint Amazon SageMaker Inference?

    Amazon SageMaker Inference Recommender può aiutarti a identificare implementazioni convenienti per migrare i carichi di lavoro esistenti da Amazon Elastic Inference (EI) a un'istanza ML appropriata supportata da. SageMaker

  5. Come posso modificare il tipo di istanza per il mio endpoint esistente in Amazon SageMaker?

    Puoi modificare il tipo di istanza per il tuo endpoint esistente effettuando le seguenti operazioni:

    1. Innanzitutto, creane una nuova EndpointConfig che utilizzi il nuovo tipo di istanza. Se disponi di una policy di scalabilità automatica, elimina la policy di scalabilità automatica esistente.

    2. Chiama UpdateEndpointspecificando la nuova creazione EndpointConfig.

    3. Attendi che il tuo endpoint cambi stato in InService. Questa operazione richiederà circa 10-15 minuti.

    4. Infine, se hai bisogno della scalabilità automatica per il tuo nuovo endpoint, crea una nuova politica di scalabilità automatica per questo nuovo endpoint e. ProductionVariant

  6. Come posso modificare il tipo di istanza per la mia istanza Amazon SageMaker Notebook esistente utilizzando Amazon Elastic Inference (EI)?

    Scegli le istanze Notebook nella SageMaker console, quindi scegli l'istanza Notebook che desideri aggiornare. Assicurati che l'istanza del notebook abbia uno stato Stopped. Infine, puoi scegliere Modifica e cambiare il tipo di istanza. Assicurati, all'avvio dell'istanza del notebook, di selezionare il kernel giusto per la nuova istanza.

  7. Esiste un tipo di istanza specifico che rappresenti una buona alternativa ad Amazon Elastic Inference (EI)?

    Ogni carico di lavoro di machine learning è unico. Ti consigliamo di utilizzare Amazon SageMaker Inference Recommender per aiutarti a identificare il tipo di istanza giusto per il tuo carico di lavoro ML, i requisiti prestazionali e il budget. AWS Inferentia, in particolare inf1.xlarge, è la migliore alternativa ad alte prestazioni e a basso costo per i clienti Amazon EI.

Migrazione da Amazon Elastic Inference ad altre istanze

Le seguenti informazioni possono aiutarti a migrare gli endpoint SageMaker ospitati da istanze che utilizzano gli acceleratori Amazon Elastic Inference ad altre istanze. I consigli variano a seconda del framework.

PyTorch

Se stai effettuando la migrazione da, utilizza le seguenti linee guida. PyTorch

1. Scegli il tipo di istanza corretto

Ogni carico di lavoro di machine learning è unico. Ti consigliamo di utilizzare Amazon SageMaker Inference Recommender per aiutarti a identificare il tipo di istanza giusto per il tuo carico di lavoro ML, i requisiti prestazionali e il budget. AWS Inferentia, in particolareinf1.xlarge, è la migliore alternativa ad alte prestazioni e a basso costo per i clienti di Amazon Elastic Inference.

Nei nostri test di carico con Inference Recommender, le istanze g4dn.xlarge hanno ottenuto risultati migliori rispetto alle istanze m5.large con eia.2large collegato. Con Amazon Elastic Inference, devi pagare il costo aggiuntivo dell'istanza ML a cui è collegato l'acceleratore. Amazon Elastic Inference supporta inoltre solo PyTorch 1.5 e TensorFlow 2.3. Se esegui la migrazione a ml.g4dn istanze, puoi utilizzare le versioni più recenti di PyTorch 1.11 e 2.9. TensorFlow Inoltre, ml.g4dn AWS Inferentia sono disponibili in tutte le AWS regioni, mentre Amazon Elastic Inference è disponibile solo in 6 regioni. Sia AWS Inferentia che ml.g4dn offrono prestazioni migliori a un prezzo inferiore per la maggior parte dei carichi di lavoro di inferenza ML.

2. Modifica inference.py

Modifica il file inference.py per rimuovere tutte le modifiche richieste specifiche di Elastic Inference e usa gestori predefiniti. In base ai diversi casi utente, potresti avere gestori di input e output diversi, ma le modifiche principali da apportare riguardano le funzioni del gestore di caricamento del modello model_fn e predict_fn. Rimuovi il gestore di previsione specifico di Elastic Inference predict_fn e ripristina il gestore di caricamento model_fn del modello nel formato predefinito. L'esempio seguente mostra come eseguire questa operazione, con le parti da rimuovere dai commenti inference.py:

from __future__ import print_function import os import torch import torch.nn as nn import torch.nn.functional as F import numpy as np def model_fn(model_dir, context): model = {customer_model} # if torch.__version__ in VERSIONS_USE_NEW_API: # import torcheia # loaded_model = loaded_model.eval() # loaded_model = torcheia.jit.attach_eia(loaded_model, 0) with open(os.path.join(model_dir, 'model.pth'), 'rb') as f: model.load_state_dict(torch.load(f)) return model # def predict_fn(input_data, model): # logger.info( # "Performing EIA inference with Torch JIT context with input of size {}".format( # input_data.shape # ) # ) # device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # input_data = input_data.to(device) # with torch.no_grad(): # if torch.__version__ in VERSIONS_USE_NEW_API: # import torcheia # # torch._C._jit_set_profiling_executor(False) # with torch.jit.optimized_execution(True): # return model.forward(input_data) # else: # with torch.jit.optimized_execution(True, {"target_device": "eia:0"}): # return model(input_data) def predict_fn(input_data, model): return model(input_data)

3. Crea un modello

Crea un nuovo modello che punti al file modificato inference.py. Puoi mantenere il file inference.py localmente e puntare ad esso specificando source_dir e entry_point o inserendo il tar nel file inference.py nel tarball del modello. L'esempio seguente mostra il caso precendente:

from sagemaker.pytorch import PyTorchModel pytorch = PyTorchModel( model_data={model_data_url}, role=role, entry_point="inference.py", source_dir="code", framework_version="1.5.1", py_version="py3", sagemaker_session=sagemaker_session, )

4. Distribuisci il modello sull'endpoint e richiamalo

Puoi utilizzare una delle seguenti opzioni per distribuire il modello dopo aver apportato le modifiche precedenti.

Opzione 1: implementare da zero

Puoi distribuire il modello su un nuovo endpoint con un'istanza consigliata della categoria Elaborazione accelerata, come G4.

predictor = pytorch.deploy( ... # instance_type = "ml.c5.xlarge", instance_type="ml.g4dn.2xlarge", ... response = predictor.predict(payload)

Opzione 2: aggiornare l'endpoint esistente

Completa la procedura seguente per aggiornare l'endpoint esistente:

  1. Richiama CreateEndpointConfig per creare una nuova EndpointConfig che utilizzi il nuovo tipo di istanza. Se disponi di una policy di scalabilità automatica, elimina la policy di scalabilità automatica esistente.

    endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": "variant1", # The name of the production variant. "ModelName": model_name, # The name of new created model "InstanceType": instance_type, # Specify the right-sized instance type. "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )
  2. Richiama UpdateEndpoint e specifica la tua EndpointConfig appena creata.

    endpoint_config_response = sagemaker_client.update_endpoint( EndpointConfigName=endpoint_config_name, # The name of the new endpoint config just created EndpointName=endpoint_name # The name of the existing endpoint you want to update )
  3. Attendi che il tuo endpoint cambi stato in InService. Questa operazione richiederà circa 10-15 minuti.

  4. Infine, se hai bisogno della scalabilità automatica per il tuo nuovo endpoint, crea una nuova policy di scalabilità automatica per questo nuovo endpoint e ProductionVariant.

TensorFlow

Se stai effettuando la migrazione da TensorFlow, utilizza le seguenti linee guida.

1. Scegli il tipo di istanza corretto

Fai riferimento a 1. Scegli la guida sul tipo di istanza giusto nella PyTorch sezione.

2. Distribuisci il modello sull'endpoint e richiamalo

Puoi utilizzare una delle seguenti opzioni per distribuire il modello.

Opzione 1: implementare da zero

Puoi migrare da Elastic Inference ridistribuendo il modello su un nuovo endpoint rimuovendo il campo accelerator_type e specificando un tipo di istanza della dimensione corretta dalla categoria Elaborazione accelerata, come G4. Nell'esempio seguente, la riga commentata consente di eseguire la distribuzione senza utilizzare un acceleratore Elastic Inference.

predictor = tensorflow_model.deploy( ... instance_type="ml.g4dn.2xlarge" # instance_type="ml.c5.xlarge", # accelerator_type="ml.eia1.medium" ... )

Opzione 2: aggiornare l'endpoint esistente

Fai riferimento all'opzione 2. Aggiorna le linee guida esistenti sugli endpoint nella fase 4 della PyTorch sezione.

MXNet

Se esegui la migrazione da MXNet, utilizza le seguenti linee guida.

1. Scegli il tipo di istanza corretto

Fai riferimento a 1. Scegli la guida sul tipo di istanza giusta nella PyTorch sezione.

2. Distribuisci il modello sull'endpoint e richiamalo

Puoi utilizzare una delle seguenti opzioni per distribuire il modello.

Opzione 1: implementare da zero

Puoi migrare da Elastic Inference ridistribuendo il modello su un nuovo endpoint rimuovendo il campo accelerator_type e specificando un tipo di istanza della dimensione corretta dalla categoria Elaborazione accelerata, come G4. Nell'esempio seguente, la riga commentata consente di eseguire la distribuzione senza utilizzare un acceleratore Elastic Inference.

predictor = mxnet_model.deploy( ... # instance_type="ml.c5.xlarge", instance_type="ml.g4dn.2xlarge" ... )

Opzione 2: aggiornare l'endpoint esistente

Fare riferimento all'Opzione 2: Aggiornare le linee guida esistenti sugli endpoint nella Fase 4 della PyTorch sezione.

Scelta di un tipo di acceleratore EI

Valuta i seguenti fattori quando scegli un tipo di acceleratore per un modello ospitato:

  • Modelli, tensori di input e dimensioni di batch influiscono sulla quantità di memoria dell'acceleratore necessaria. Inizia con un tipo di acceleratore che fornisca almeno una quantità di memoria pari alla dimensione del file del modello addestrato. Ipotizza che un modello potrebbe utilizzare in modo notevole più memoria rispetto alla dimensione del file in fase di runtime.

  • Le richieste per le risorse di calcolo della CPU, la memoria di sistema principale, l'accelerazione basata sulla GPU e la memoria di acceleratore variano in maniera significativa tra i diversi tipi di modelli di Deep Learning. I requisiti di latenza e di throughput dell'applicazione determinano anche la quantità di calcolo e di accelerazione necessaria. Testa in modo approfondito diverse configurazioni per i tipi di istanza e le dimensioni dell'acceleratore EI per essere certo di scegliere la configurazione più adatta alle esigenze di prestazioni dell'applicazione.

Per ulteriori informazioni sulla selezione di un acceleratore EI, consulta:

Usa EI in un' SageMaker istanza Notebook

In genere, si creano e si testano modelli di machine learning su un SageMaker notebook prima di distribuirli per la produzione. Puoi collegare EI a un'istanza del notebook quando la crei. Puoi configurare un endpoint ospitato localmente sull'istanza del notebook utilizzando la modalità locale supportata da TensorFlow MXNet PyTorch e stimatori e modelli in Amazon SageMaker Python SDK per testare le prestazioni di inferenza. L'opzione Elastic Inference abilitata non PyTorch è attualmente supportata sulle istanze dei notebook. Per istruzioni su come collegare EI a un'istanza del notebook e su come configurare un endpoint locale per l'inferenza, consulta Collegamento di EI a un'istanza del notebook. Esistono anche kernel SageMaker Notebook Jupyter abilitati per Elastic Inference per le versioni abilitate per Elastic Inference e Apache MXNet. TensorFlow Per informazioni sull'uso delle istanze di SageMaker notebook, consulta Utilizzare le istanze di Amazon SageMaker Notebook

Utilizzo di EI su un endpoint ospitato

Quando sei pronto per implementare il tuo modello in produzione per fornire inferenze, crei un endpoint ospitato. SageMaker Puoi collegare EI all'istanza in cui è ospitato l'endpoint per migliorarne le prestazioni in termini di fornitura di inferenze. Per istruzioni su come collegare EI a un'istanza endpoint ospitata, consulta Usa EI su Amazon SageMaker Hosted Endpoint.

Framework che supportano EI

Amazon Elastic Inference è progettato per essere utilizzato con versioni AWS avanzate di TensorFlow Apache MXNet o framework di apprendimento automatico. PyTorch Queste versioni avanzate dei framework vengono automaticamente integrate nei contenitori quando utilizzi l'SDK Amazon SageMaker Python, oppure puoi scaricarle come file binari e importarle nei tuoi contenitori Docker.

Puoi scaricare i file TensorFlow binari abilitati all'EI dal bucket pubblico amazonei-tensorflow Amazon S3 nei contenitori di servizio. TensorFlow Per ulteriori informazioni sulla creazione di un contenitore che utilizza la versione abilitata all'EI di TensorFlow, consulta Amazon Elastic TensorFlow Inference with in. SageMaker

Puoi scaricare i file binari MxNet abilitati per EI dal bucket pubblico Amazon S3 amazonei-apachemxnet nei containter di servizio MxNet. Per ulteriori informazioni sulla creazione di un contenitore che utilizza la versione di MXNet abilitata all'EI, consulta Amazon Elastic Inference with MXNet in. SageMaker

Puoi scaricare il file binario abilitato per Elastic Inference per. PyTorch Per ulteriori informazioni sulla creazione di un contenitore che utilizza la versione abilitata all'EI di PyTorch, consulta Amazon Elastic PyTorch Inference with in. SageMaker

Per utilizzare Elastic Inference in un endpoint ospitato, puoi scegliere uno dei seguenti framework in base alle tue esigenze.

Se devi creare un contenitore personalizzato per la distribuzione del tuo modello che è complesso e richiede estensioni a un framework che i contenitori SageMaker predefiniti non supportano, usa l' AWS SDK di basso livello per Python (Boto 3).

Usa EI con algoritmi integrati SageMaker

Attualmente, gli algoritmi predefiniti Classificazione delle immagini - MXNet e Rilevamento degli oggetti - MXNet supportano EI. Per un esempio che utilizza l'algoritmo di classificazione delle immagini con EI, consulta End-to-end multiclass image classification example.

Notebook di esempio di EI

I seguenti taccuini di esempio forniscono esempi di utilizzo dell'EI in: SageMaker