Exafunction supporta AWS Inferentia per sbloccare il miglior rapporto prezzo-prestazioni per l'inferenza di machine learning PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Exafunction supporta AWS Inferentia per sbloccare le migliori prestazioni di prezzo per l'inferenza di machine learning

In tutti i settori, i modelli di machine learning (ML) stanno diventando più approfonditi, i flussi di lavoro diventano più complessi e i carichi di lavoro operano su scale più ampie. Sforzi e risorse significativi vengono impiegati per rendere questi modelli più accurati poiché questo investimento si traduce direttamente in prodotti ed esperienze migliori. D'altra parte, far funzionare questi modelli in modo efficiente in produzione è un'impresa non banale che viene spesso trascurata, nonostante sia la chiave per raggiungere gli obiettivi di prestazioni e budget. In questo post spieghiamo come Exafunction e AWS Inferenza lavorare insieme per sbloccare un'implementazione facile ed economica per i modelli ML in produzione.

Esfunzione è una start-up incentrata sul consentire alle aziende di eseguire ML su larga scala nel modo più efficiente possibile. Uno dei loro prodotti è ExaDeploy, una soluzione SaaS di facile utilizzo per servire i carichi di lavoro ML su larga scala. ExaDeploy orchestra in modo efficiente i tuoi carichi di lavoro ML su risorse miste (CPU e acceleratori hardware) per massimizzare l'utilizzo delle risorse. Si occupa anche di ridimensionamento automatico, colocation di elaborazione, problemi di rete, tolleranza ai guasti e altro ancora, per garantire un'implementazione efficiente e affidabile. Basato su AWS Inferentia Istanze di Amazon EC2 Inf1 sono creati appositamente per offrire il costo per inferenza più basso nel cloud. ExaDeploy ora supporta le istanze Inf1, che consentono agli utenti di ottenere sia i risparmi basati sull'hardware degli acceleratori sia i risparmi basati sul software della virtualizzazione e dell'orchestrazione delle risorse ottimizzate su larga scala.

Panoramica della soluzione

In che modo ExaDeploy risolve l'efficienza dell'implementazione

Per garantire un utilizzo efficiente delle risorse di calcolo, è necessario considerare la corretta allocazione delle risorse, il ridimensionamento automatico, la co-locazione del calcolo, la gestione dei costi e della latenza della rete, la tolleranza agli errori, il controllo delle versioni e la riproducibilità e altro ancora. Su larga scala, eventuali inefficienze influiscono materialmente sui costi e sulla latenza e molte grandi aziende hanno affrontato queste inefficienze creando team e competenze interni. Tuttavia, non è pratico per la maggior parte delle aziende assumere questo sovraccarico finanziario e organizzativo della creazione di software generalizzabile che non è la competenza principale desiderata dall'azienda.

ExaDeploy è progettato per risolvere questi punti deboli dell'efficienza dell'implementazione, inclusi quelli osservati in alcuni dei carichi di lavoro più complessi come quelli nel veicolo autonomo e nelle applicazioni di elaborazione del linguaggio naturale (NLP). Su alcuni carichi di lavoro ML in batch di grandi dimensioni, ExaDeploy ha ridotto i costi di oltre l'85% senza sacrificare la latenza o l'accuratezza, con tempi di integrazione di appena un giorno tecnico. ExaDeploy ha dimostrato di scalare automaticamente e gestire migliaia di istanze di risorse di acceleratore hardware simultanee senza alcun degrado del sistema.

Le caratteristiche principali di ExaDeploy includono:

  • Funziona nel tuo cloud: Nessuno dei tuoi modelli, input o output lascia mai la tua rete privata. Continua a utilizzare gli sconti del tuo fornitore di servizi cloud.
  • Risorse di accelerazione condivise: ExaDeploy ottimizza gli acceleratori utilizzati consentendo a più modelli o carichi di lavoro di condividere le risorse dell'acceleratore. Può anche identificare se più carichi di lavoro stanno distribuendo lo stesso modello e quindi condividere il modello tra quei carichi di lavoro, ottimizzando così l'acceleratore utilizzato. Le sue capacità di ribilanciamento automatico e drenaggio dei nodi massimizzano l'utilizzo e riducono al minimo i costi.

Exafunction supporta AWS Inferentia per sbloccare il miglior rapporto prezzo-prestazioni per l'inferenza di machine learning PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

  • Modello di distribuzione serverless scalabile: ExaDeploy si ridimensiona automaticamente in base alla saturazione delle risorse dell'acceleratore. Scala dinamicamente fino a 0 o fino a migliaia di risorse.
  • Supporto per una varietà di tipi di calcolo: puoi scaricare modelli di deep learning da tutti i principali framework ML, nonché codice C++ arbitrario, kernel CUDA, operazioni personalizzate e funzioni Python.
  • Registrazione dinamica del modello e controllo delle versioni: nuovi modelli o versioni di modelli possono essere registrati ed eseguiti senza dover ricostruire o ridistribuire il sistema.
  • Esecuzione punto a punto: i client si connettono direttamente alle risorse dell'acceleratore remoto, il che consente una bassa latenza e un throughput elevato. Possono persino memorizzare lo stato in remoto.
  • Esecuzione asincrona: ExaDeploy supporta l'esecuzione asincrona dei modelli, che consente ai client di parallelizzare il calcolo locale con il lavoro delle risorse dell'acceleratore remoto.
  • Pipeline remote tolleranti ai guasti: ExaDeploy consente ai client di comporre dinamicamente calcoli remoti (modelli, pre-elaborazione, ecc.) in pipeline con garanzia di tolleranza agli errori. Il sistema ExaDeploy gestisce i guasti dei pod o dei nodi con ripristino e riproduzione automatici, in modo che gli sviluppatori non debbano mai pensare a garantire la tolleranza ai guasti.
  • Monitoraggio pronto all'uso: ExaDeploy fornisce metriche Prometheus e dashboard Grafana per visualizzare l'utilizzo delle risorse dell'acceleratore e altre metriche di sistema.

ExaDeploy supporta AWS Inferentia

Le istanze Amazon EC2 Inf1 basate su AWS Inferentia sono progettate per carichi di lavoro di inferenza specifici di deep learning. Queste istanze forniscono un throughput fino a 2.3 volte superiore e un risparmio sui costi fino al 70% rispetto all'attuale generazione di istanze di inferenza GPU.

ExaDeploy ora supporta AWS Inferentia e insieme sbloccano le migliori prestazioni e i risparmi sui costi ottenuti attraverso l'accelerazione hardware appositamente creata e l'orchestrazione ottimizzata delle risorse su larga scala. Diamo un'occhiata ai vantaggi combinati di ExaDeploy e AWS Inferentia considerando un carico di lavoro ML moderno molto comune: carichi di lavoro in batch con elaborazione mista.

Caratteristiche ipotetiche del carico di lavoro:

  • 15 ms di pre-elaborazione/post-elaborazione della sola CPU
  • Inferenza del modello (15 ms su GPU, 5 ms su AWS Inferentia)
  • 10 client, ognuno effettua una richiesta ogni 20 ms
  • Il costo relativo approssimativo di CPU:Inferentia:GPU è 1:2:4 (basato sui prezzi On-Demand di Amazon EC2 per c5.xlarge, inf1.xlarge e g4dn.xlarge)

La tabella seguente mostra come si configura ciascuna delle opzioni:

Impostare Risorse necessarie Costo Latenza
GPU senza ExaDeploy 2 CPU, 2 GPU per client (totale 20 CPU, 20 GPU) 100 ms 30
GPU con ExaDeploy 8 GPU condivise tra 10 client, 1 CPU per client 42 ms 30
AWS Inferentia senza ExaDeploy 1 CPU, 1 AWS Inferentia per client (totale 10 CPU, 10 Inferentia) 30 ms 20
AWS Inferentia con ExaDeploy 3 AWS Inferentia condiviso tra 10 client, 1 CPU per client 16 ms 20

Esempio di ExaDeploy su AWS Inferentia

In questa sezione, esaminiamo i passaggi per configurare ExaDeploy attraverso un esempio con nodi inf1 su un modello BERT PyTorch. Abbiamo rilevato un throughput medio di 1140 campioni/sec per il modello bert-base, il che dimostra che ExaDeploy ha introdotto un sovraccarico minimo o nullo per questo scenario con singolo modello e singolo carico di lavoro.

Passo 1 : Imposta un Servizio Amazon Elastic Kubernetes (Amazon EKS).

Un cluster Amazon EKS può essere attivato con il nostro Modulo AWS Terraform. Per il nostro esempio, abbiamo usato un inf1.xlarge per AWS Inferentia.

Passo 2 : Configura ExaDepoy

Il secondo passaggio consiste nell'impostare ExaDeploy. In generale, la distribuzione di ExaDeploy sulle istanze inf1 è semplice. L'installazione segue principalmente la stessa procedura delle istanze dell'unità di elaborazione grafica (GPU). La differenza principale consiste nel modificare il tag del modello da GPU ad AWS Inferentia e ricompilare il modello. Ad esempio, il passaggio dalle istanze g4dn alle istanze inf1 utilizzando le API (Application Programming Interface) di ExaDeploy richiedeva solo circa 10 righe di codice da modificare.

  • Un metodo semplice consiste nell'utilizzare Exafunction Modulo AWS Kubernetes di Terraform or Grafico del timone. Questi distribuiscono i componenti principali di ExaDeploy da eseguire nel cluster Amazon EKS.
  • Compila il modello in un formato serializzato (ad es. TorchScript, modelli salvati TF, ONNX, ecc.). Per AWS Inferentia, abbiamo seguito questo tutorial.
  • Registra il modello compilato nel repository dei moduli di ExaDeploy.
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • Preparare i dati per il modello (vale a dire, non ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • Eseguire il modello in remoto dal client.
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy e AWS Inferentia: meglio insieme

AWS Inferentia sta spingendo i limiti del throughput per l'inferenza del modello e offrendo il costo per inferenza più basso nel cloud. Detto questo, le aziende hanno bisogno dell'orchestrazione adeguata per godere dei vantaggi in termini di rapporto prezzo/prestazioni di Inf1 su larga scala. Il servizio ML è un problema complesso che, se affrontato internamente, richiede competenze che vengono rimosse dagli obiettivi aziendali e spesso ritarda le tempistiche dei prodotti. ExaDeploy, che è la soluzione software di distribuzione ML di Exafunction, è emersa come leader del settore. Serve anche i carichi di lavoro ML più complessi, fornendo allo stesso tempo esperienze di integrazione fluide e supporto da parte di un team di livello mondiale. Insieme, ExaDeploy e AWS Inferentia sbloccano maggiori prestazioni e risparmi sui costi per i carichi di lavoro di inferenza su larga scala.

Conclusione

In questo post, ti abbiamo mostrato come Exafunction supporta AWS Inferentia per il machine learning delle prestazioni. Per ulteriori informazioni sulla creazione di applicazioni con Exafunction, visitare Esfunzione. Per le best practice sulla creazione di carichi di lavoro di deep learning su Inf1, visitare Istanze Amazon EC2 Inf1.


Informazioni sugli autori

Nicholas Jiang, Ingegnere del software, Exafunzione

Jonathan Ma, Ingegnere del software, Exafunzione

Prem Nair, Ingegnere del software, Exafunzione

Anshul Ramachandran, Ingegnere del software, Exafunzione

Shruti Koparkar, Senior Product Marketing Manager, AWS

Timestamp:

Di più da Apprendimento automatico di AWS