TorchRec Sharding: un framework per creare sistemi di raccomandazione su larga scala
Pytorch ha formulato un framework chiamato sharding TorchRec adatto per l’addestramento e la modellazione di sistemi di raccomandazione su larga scala.
 
Torch Rec è una delle librerie di Pytorch utilizzata per creare sistemi di raccomandazione sparsi e su larga scala . La libreria supporta lo sharding, il che significa che le tabelle di grandi dimensioni possono essere suddivise tra GPU ed essere addestrate . Pertanto, i problemi associati alle tabelle di entità di dimensione superiore e al superamento della capacità di memoria delle GPU possono essere superati utilizzando TorchRec Sharding. Pertanto, utilizzando TorchRec Sharding, è possibile ottenere un training distribuito del modello su piattaforme basate su acceleratori. In questo articolo, cerchiamo di comprendere lo sharding di TorchRec rispetto a questo contesto. 

Sommario
Introduzione allo Sharding TorchRec
Vantaggi di TorchRec Sharding
Vari schemi di TorchRec Sharding
Riepilogo
Introduzione allo Sharding TorchRec
TorchRec Sharding è una delle librerie di Pytorch strutturata per superare i problemi associati ai sistemi di raccomandazione su larga scala. Alcuni dei sistemi di raccomandazione su larga scala potrebbero richiedere la rappresentazione di incorporamenti di dimensioni superiori. A volte questi incorporamenti possono riscontrare un utilizzo massimo della memoria della GPU.

 
Quindi, per prevenire i problemi associati agli incorporamenti dimensionali più elevati e ai vincoli di memoria della GPU, PyTorch ha strutturato una libreria single-shot, in particolare per i sistemi di raccomandazione su larga scala, in cui i sistemi di raccomandazione possono essere creati condividendo il processo di addestramento del modello di raccomandazione tra le GPU. I diversi incorporamenti di sistemi di raccomandazione su larga scala di Pytorch sono rappresentati utilizzando la funzione integrata di Pytorch denominata torch.nn.EmbeddingBag .

Stai cercando un repository completo di librerie Python utilizzate nella scienza dei dati,  dai un’occhiata qui .
Una borsa di incorporamento è fondamentalmente una raccolta di vari incorporamenti di dati. Quindi questa raccolta di incorporamenti viene utilizzata per configurare le entità richieste adatte ai sistemi di raccomandazione. Pertanto, le entità di dati richieste verranno suddivise in diverse GPU con una dimensione del blocco di 64 e una dimensione di incorporamento di 4096. Ciò avvantaggia le entità richieste per essere addestrate più velocemente e previene il consumo massimo di memoria di acceleratori come le GPU. 

Comprensione dell’API di partizionamento orizzontale
La libreria TorchRec supporta la condivisione di dati di dimensioni superiori tra acceleratori e addestra sistemi di raccomandazione su larga scala. Quindi, per distribuire i dati su più acceleratori e per facilitare l’addestramento in parallelo, TorchRec ha formulato un’API denominata DistributedModelParallel . L’API è responsabile dell’esecuzione di due funzionalità. Sono i seguenti.

i) Processo decisionale su come suddividere il modello tra gli acceleratori. L’API raccoglierà tutti gli sharder disponibili e individuerà un modo ottimale per suddividere le tabelle incorporate su più piattaforme.

ii) L’API sarà anche responsabile dell’allocazione della memoria tra piattaforme di accelerazione e sarà responsabile dell’allocazione delle tabelle relazionali tra le piattaforme. 

Vantaggi di TorchRec Sharding
I vantaggi dello sharding di TorchRec sono elencati di seguito.

La modellazione di tabelle di incorporamento di dimensioni superiori su varie piattaforme basate su acceleratori come le GPU accelera il processo di addestramento delle entità richieste dei sistemi di raccomandazione.
Kernel ottimizzati per sistemi di raccomandazione su larga scala con la possibilità di eseguire operazioni sparse e quantizzate.
Vari frammenti di partizionamento aiutano a partizionare varie tabelle per i sistemi di raccomandazione con varie strategie come il partizionamento orizzontale per riga e per colonna.
La condivisione di tabelle di incorporamento su piattaforme distribuite aiuta ad accelerare il processo di addestramento di tabelle di incorporamento più grandi.
Regola l’addestramento della pipeline attraverso una funzione integrata denominata TrainPipelineSparseDist che aiuta ad aumentare le prestazioni e consentire l’elaborazione parallela dei dati su piattaforme di accelerazione.
Una panoramica dei vari schemi di TorchRec Sharding
Il partizionamento orizzontale di TorchRec utilizza fondamentalmente due schemi per l’incorporamento di tabelle su più piattaforme. I due schemi utilizzati da TorchRec sono noti come EmbeddingPlanner e DistributedModelParallel . Cerchiamo quindi di comprendere i vantaggi di questo schema utilizzato da TorchRec Sharding per la gestione di sistemi di raccomandazione su larga scala.

Pianificatore di incorporamento
Lo schema Embedding Planner dello sharding di TorchRec utilizza una raccolta di incorporamenti disponibili in EmbeddingBagCollection. In questo schema, vengono utilizzate principalmente due tabelle note come tabelle grandi e piccole che si differenziano in base alla differenza nelle dimensioni delle righe.

Alcuni dei parametri della tabella sono configurati per aiutare nel processo decisionale saggio per lo sharding su varie piattaforme di accelerazione. Questo schema fa uso di varie tecniche di partizionamento orizzontale per comunicare tra le varie tabelle incorporate e facilitare di conseguenza la partizionamento orizzontale.

DistributedModelParallel
Lo schema Distributed Model Parallel opera secondo il principio di SPMD. SPMD è l’abbreviazione di Programma singolo e Dati multipli. Lo schema utilizza del codice standard per dividere il modello collettivamente tra vari processi e dividere le tabelle su più acceleratori come le GPU in base a specifiche standard. Ciò supporta anche il multiprocessing e il partizionamento orizzontale a livello di tabella per alcune delle caratteristiche importanti dei sistemi di raccomandazione.

I due schemi di sharding alla fine danno la priorità alla gestione di tabelle di dimensioni maggiori e distribuiscono dimensioni maggiori a varie piattaforme di accelerazione dell’elaborazione parallela per accelerare il processo di addestramento.

Riepilogo
Lo sharding di TorchRec è una delle librerie di Pytorch formulata per modellare sistemi di raccomandazione su larga scala e addestrarli su più GPU per evacuare i problemi associati a un sovraccarico del consumo di memoria delle piattaforme basate su acceleratori. Facilita la formazione su più dispositivi suddividendo enormi incorporamenti di sistemi di raccomandazione. Ciò consente di addestrare più rapidamente il sistema di raccomandazione. Questa libreria è ancora in fase di ricerca e ci si possono aspettare ulteriori miglioramenti in futuro, semplificando la modellazione di sistemi di raccomandazione su larga scala.

Di ihal