In che modo Amazon Search ha ridotto dell'85% i costi di inferenza ML con AWS Inferentia

Il motore di ricerca dei prodotti di Amazon indicizza miliardi di prodotti, serve centinaia di milioni di clienti in tutto il mondo ed è uno dei servizi più utilizzati al mondo. Il team di Amazon Search sviluppa la tecnologia di machine learning (ML) che alimenta il Amazon.com motore di ricerca e aiuta i clienti a cercare senza sforzo. Per offrire un'esperienza cliente eccezionale e operare su vasta scala richiesta dal Amazon.com motore di ricerca, questo team è sempre alla ricerca di modi per creare sistemi più convenienti con requisiti di latenza e velocità effettiva in tempo reale. Il team esplora costantemente hardware e compilatori ottimizzati per il deep learning per accelerare l'addestramento e l'inferenza del modello, riducendo al contempo i costi operativi su tutta la linea.

In questo post, descriviamo come utilizza Amazon Search AWS Inferenza, un acceleratore ad alte prestazioni creato appositamente da AWS per accelerare i carichi di lavoro di inferenza di deep learning. Il team esegue l'inferenza ML a bassa latenza con modelli NLP basati su Transformer su AWS Inferentia Cloud di calcolo elastico di Amazon (Amazon EC2) istanze Inf1 e consente di risparmiare fino all'85% sui costi di infrastruttura, pur mantenendo elevate prestazioni di throughput e latenza.

Deep learning per la previsione dell'intento di query e duplicati

La ricerca nel Marketplace di Amazon è un problema multi-task e multimodale, che si occupa di diversi input come ASIN (Amazon Standard Identification Number, un numero alfanumerico di 10 cifre che identifica in modo univoco i prodotti), immagini dei prodotti, descrizioni testuali e query. Per creare un'esperienza utente su misura, le previsioni di molti modelli vengono utilizzate per diversi aspetti della ricerca. Questa è una sfida perché il sistema di ricerca ha migliaia di modelli con decine di migliaia di transazioni al secondo (TPS) al picco di carico. Ci concentriamo su due componenti di quell'esperienza:

  • Previsioni duplicate percepite dal cliente – Per mostrare l'elenco più pertinente di prodotti che corrispondono alla query di un utente, è importante identificare i prodotti tra i quali i clienti hanno difficoltà a distinguere tra
  • Previsione dell'intento della query – Per adattare la pagina di ricerca e il layout del prodotto in modo che si adattino meglio a ciò che il cliente sta cercando, è importante prevedere l'intento e il tipo di query dell'utente (ad esempio, una query relativa ai media, una query della guida e altri tipi di query)

Entrambe queste previsioni sono fatte utilizzando architetture di modelli Transformer, in particolare modelli basati su BERT. In effetti, entrambi condividono lo stesso modello basato su BERT come base e ognuno impila una testa di classificazione/regressione in cima a questa spina dorsale.

La previsione duplicata accetta varie caratteristiche testuali per una coppia di prodotti valutati come input (come tipo di prodotto, titolo, descrizione e così via) e viene calcolata periodicamente per set di dati di grandi dimensioni. Questo modello è addestrato end-to-end in modo multi-task. Amazon SageMaker Processi di elaborazione vengono utilizzati per eseguire periodicamente questi carichi di lavoro batch per automatizzarne l'avvio e pagare solo il tempo di elaborazione utilizzato. Per questo caso d'uso del carico di lavoro batch, il requisito per la velocità effettiva di inferenza era di 8,800 TPS totali.

La previsione dell'intento prende come input la query testuale dell'utente ed è necessaria in tempo reale per servire dinamicamente il traffico quotidiano e migliorare l'esperienza dell'utente su Amazon Marketplace. Il modello è addestrato su un obiettivo di classificazione multiclasse. Questo modello viene quindi distribuito Servizio di container elastici Amazon (Amazon ECS), che consente il ridimensionamento automatico rapido e facile definizione e gestione della distribuzione. Poiché si tratta di un caso d'uso in tempo reale, è stato necessario che la latenza del P99 fosse inferiore a 10 millisecondi per garantire un'esperienza utente piacevole.

AWS Inferentia e l'SDK AWS Neuron

Istanze EC2 Inf1 sono basati su AWS Inferentia, il primo acceleratore di ML creato appositamente da AWS per accelerare i carichi di lavoro di inferenza di deep learning. Le istanze Inf1 offrono un throughput fino a 2.3 volte superiore e un costo per inferenza fino al 70% inferiore rispetto a istanze EC2 basate su GPU comparabili. Puoi continuare ad addestrare i tuoi modelli utilizzando il tuo framework preferito (PyTorch, TensorFlow, MXNet) e quindi distribuirli facilmente su AWS Inferentia per beneficiare delle ottimizzazioni delle prestazioni integrate. Puoi distribuire un'ampia gamma di tipi di modelli utilizzando le istanze Inf1, dal riconoscimento delle immagini, al rilevamento degli oggetti, all'elaborazione del linguaggio naturale (NLP) e ai moderni modelli di raccomandazione.

Neurone AWS è un kit di sviluppo software (SDK) costituito da un compilatore, runtime e strumenti di profilazione che ottimizzano le prestazioni di inferenza ML delle istanze EC2 Inf1. Neuron è integrato in modo nativo con i più diffusi framework ML come TensorFlow e PyTorch. Pertanto, puoi distribuire modelli di deep learning su AWS Inferentia con le stesse API familiari fornite dal tuo framework preferito e beneficiare del miglioramento delle prestazioni e del costo per inferenza più basso nel cloud.

Dal suo lancio, Neuron SDK ha continuato ad aumentare l'ampiezza dei modelli supportati, continuando a migliorare le prestazioni e ridurre i costi di inferenza. Ciò include i modelli NLP (BERT), i modelli di classificazione delle immagini (ResNet, VGG) e i modelli di rilevamento degli oggetti (OpenPose e SSD).

Distribuisci su istanze Inf1 per bassa latenza, velocità effettiva elevata e risparmi sui costi

Il team di Amazon Search voleva risparmiare sui costi soddisfacendo al contempo il requisito di velocità effettiva elevata per la previsione della duplicazione e il requisito di bassa latenza per la previsione dell'intento di query. Hanno scelto di distribuire su istanze Inf1 basate su AWS Inferentia e non solo hanno soddisfatto i requisiti di prestazioni elevate, ma hanno anche risparmiato fino all'85% sui costi di inferenza.

Previsioni duplicate percepite dal cliente

Prima dell'utilizzo di Inf1, un programma dedicato Amazon EMR il cluster era in esecuzione utilizzando istanze basate su CPU. Senza fare affidamento sull'accelerazione hardware, era necessario un gran numero di istanze per soddisfare il requisito di velocità effettiva elevata di 8,800 transazioni totali al secondo. Il team è passato a istanze inf1.6xlarge, ciascuna con 4 acceleratori AWS Inferentia e 16 NeuronCores (4 core per chip AWS Inferentia). Hanno tracciato il modello basato su Transformer per un singolo NeuronCore e hanno caricato una modalità per NeuronCore per massimizzare il throughput. Sfruttando i 16 NeuronCore disponibili, hanno ridotto i costi di inferenza dell'85% (in base all'attuale prezzo on-demand pubblico di Amazon EC2).

Previsione dell'intento della query

Dato il requisito di latenza P99 di 10 millisecondi o meno, il team ha caricato il modello su ogni NeuronCore disponibile su istanze inf1.6xlarge. Puoi farlo facilmente con PyTorch Neuron usando il torcia.neurone.datiparallelo API. Con la distribuzione Inf1, la latenza del modello era di 3 millisecondi, la latenza end-to-end di circa 10 millisecondi e il throughput massimo al carico di picco ha raggiunto 16,000 TPS.

Inizia con la compilazione di esempio e il codice di distribuzione

Di seguito è riportato un codice di esempio per aiutarti a iniziare con le istanze Inf1 e realizzare i vantaggi in termini di prestazioni e costi come il team di Amazon Search. Mostriamo come compilare ed eseguire l'inferenza con un modello PyTorch, utilizzando Neurone PyTorch.

Innanzitutto, il modello viene compilato con torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

Per l'elenco completo dei possibili argomenti al trace metodo, fare riferimento PyTorch-Neuron traccia l'API Python. Come potete vedere, argomenti del compilatore può essere passato a torch.neuron API direttamente. Tutti gli operatori FP32 vengono scelti per BF16 with --fp32-cast=all, fornendo le massime prestazioni preservando la gamma dinamica. Sono disponibili più opzioni di fusione per consentirti di controllare le prestazioni per modellare il compromesso di precisione. I modelli utilizzati per entrambi i casi d'uso sono stati compilati per un singolo NeuronCore (n tubazioni).

Quindi carichiamo il modello su Inferentia con torch.jit.loade usalo per la previsione. Il Durata del neurone carica automaticamente il modello in NeuronCores.

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

Conclusione

Il team di Amazon Search è stato in grado di ridurre i propri costi di inferenza dell'85% utilizzando le istanze Inf1 basate su AWS Inferentia, in condizioni di traffico intenso e requisiti di prestazioni elevati. AWS Inferentia e l'SDK Neuron hanno fornito al team la flessibilità necessaria per ottimizzare il processo di distribuzione separatamente dalla formazione e presentare una curva di apprendimento superficiale tramite strumenti a tutto tondo e API framework familiari.

Puoi sbloccare prestazioni e vantaggi in termini di costi iniziando con il codice di esempio fornito in questo post. Inoltre, controlla l'end-to-end esercitazioni per eseguire modelli ML su Inferentia con PyTorch ed TensorFlow.


Circa gli autori

In che modo Amazon Search ha ridotto i costi di inferenza ML dell'85% con AWS Inferentia PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.João Moura è un architetto specializzato in soluzioni AI/ML presso Amazon Web Services. Si concentra principalmente sui casi d'uso della NLP e aiuta i clienti a ottimizzare la formazione e l'implementazione del modello di deep learning. È anche un attivo sostenitore di hardware specializzato in ML e soluzioni ML a basso codice.

In che modo Amazon Search ha ridotto i costi di inferenza ML dell'85% con AWS Inferentia PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Weiqi Zhang è un Software Engineering Manager presso Search M5, dove lavora alla produzione di modelli su larga scala per le applicazioni di apprendimento automatico di Amazon. I suoi interessi includono il recupero delle informazioni e l'infrastruttura di apprendimento automatico.

In che modo Amazon Search ha ridotto i costi di inferenza ML dell'85% con AWS Inferentia PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Jason Carlson è un ingegnere del software per lo sviluppo di pipeline di apprendimento automatico per ridurre il numero di impressioni di ricerca rubate a causa di duplicati percepiti dai clienti. Lavora principalmente con Apache Spark, AWS e PyTorch per aiutare a distribuire e alimentare/elaborare i dati per i modelli ML. Nel tempo libero gli piace leggere e correre.

In che modo Amazon Search ha ridotto i costi di inferenza ML dell'85% con AWS Inferentia PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Shaohui Xi è un SDE presso il team Search Query Understanding Infra. Guida lo sforzo per la creazione di servizi di inferenza online di deep learning su larga scala con bassa latenza e alta disponibilità. Al di fuori del lavoro, gli piace sciare ed esplorare i buoni cibi.

In che modo Amazon Search ha ridotto i costi di inferenza ML dell'85% con AWS Inferentia PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Zhuoqi Zhang è un ingegnere di sviluppo software presso il team Search Query Understanding Infra. Lavora alla creazione di framework per il servizio di modelli per migliorare la latenza e il throughput per i servizi di inferenza online di deep learning. Al di fuori del lavoro, gli piace giocare a basket, fare snowboard e guidare.

In che modo Amazon Search ha ridotto i costi di inferenza ML dell'85% con AWS Inferentia PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Haowei Sole è un ingegnere del software nel team Search Query Understanding Infra. Lavora alla progettazione di API e infrastrutture a supporto dei servizi di inferenza online di deep learning. I suoi interessi includono la progettazione dell'API di servizio, la configurazione dell'infrastruttura e la manutenzione. Al di fuori del lavoro, le piace correre, fare escursioni e viaggiare.

In che modo Amazon Search ha ridotto i costi di inferenza ML dell'85% con AWS Inferentia PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Jaspreet Singh è uno scienziato applicato nel team M5, dove lavora su modelli di base su larga scala per migliorare l'esperienza di acquisto del cliente. I suoi interessi di ricerca includono l'apprendimento multi-task, il recupero di informazioni e l'apprendimento della rappresentazione.

In che modo Amazon Search ha ridotto i costi di inferenza ML dell'85% con AWS Inferentia PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Shruti Koparkar è Senior Product Marketing Manager presso AWS. Aiuta i clienti a esplorare, valutare e adottare l'infrastruttura di elaborazione accelerata EC2 per le loro esigenze di machine learning.

Timestamp:

Di più da Apprendimento automatico di AWS