Gli esperti di Amazon presentano un compilatore di deep learning per l’addestramento che comprende tre caratteristiche principali un ottimizzatore Syncfree, la memorizzazione nella cache del compilatore e l’esecuzione multithread.

Gli esperti di Amazon presentano un potente compilatore di deep learning con tre caratteristiche innovative un ottimizzatore Syncfree, memoria cache integrata e supporto multithread.

Una delle sfide più grandi nell’apprendimento automatico è sempre stata quella di allenare ed utilizzare reti neurali in modo efficiente. Un punto di svolta è stato raggiunto con l’introduzione dell’architettura del modello trasformatore, che ha creato nuove opportunità per la parallelizzazione della discesa del gradiente e le strategie di distribuzione, consentendo la formazione di modelli più grandi e complessi su una scala più ampia. Tuttavia, l’aumento esponenziale delle dimensioni di questi modelli ha sollevato una serie di problemi legati alle limitazioni di memoria e alla disponibilità delle GPU. Un problema significativo è che molti modelli sono ora più grandi della RAM che si può trovare su una singola GPU. Le enormi disparità nelle dimensioni tra modelli pre-allenati di linguaggio e modelli di visione presentano un’altra sfida. L’idea di compilazione è un rimedio potenzialmente efficace che può bilanciare le esigenze di efficienza computazionale e dimensioni del modello.

In una recente ricerca, un team di ricercatori ha introdotto un compilatore di deep learning specificamente sviluppato per l’allenamento di reti neurali. Con tre componenti essenziali, ovvero esecuzione multithreading, memorizzazione nella cache del compilatore e un ottimizzatore senza sincronizzazione, il loro lavoro ha mostrato notevoli accelerazioni rispetto agli approcci tradizionali, come le implementazioni native ed il framework XLA (Algebra Lineare Accelerata) di PyTorch, sia per i problemi comuni di linguaggio che di visione.

Questo compilatore di deep learning è stato sviluppato con un’implementazione di ottimizzatore senza sincronizzazione. Gli ottimizzatori svolgono un ruolo fondamentale nell’allenamento delle reti neurali in quanto modificano i parametri del modello al fine di minimizzare la funzione di perdita. Le barriere di sincronizzazione sono una caratteristica comune degli ottimizzatori tradizionali e possono causare un collo di bottiglia nell’allenamento distribuito. Un ottimizzatore senza sincronizzazione, d’altra parte, cerca di ridurre o eliminare la necessità di sincronizzazione, consentendo un parallelismo più efficace e un miglior utilizzo delle risorse computazionali. Questa funzione è particolarmente utile quando la velocità di allenamento e l’efficienza delle risorse sono influenzate negativamente dalla sincronizzazione.

Un’altra importante caratteristica di questo compilatore di deep learning è la memorizzazione nella cache del compilatore. Le rappresentazioni pre-compilate di determinati componenti di reti neurali o di grafi di calcolo vengono memorizzate e riutilizzate attraverso il processo di memorizzazione nella cache. È inefficiente ricostruire l’intera rete da zero ogni volta che si allena un modello. La memorizzazione e il riutilizzo di componenti precedentemente costruiti cercano di alleviare questa inefficienza e possono drasticamente ridurre i tempi di allenamento. Questa funzione conserva efficientemente le risorse computazionali utilizzando i vantaggi di tentativi di compilazione precedenti.

La terza componente essenziale è l’esecuzione multithreading. L’allenamento di reti neurali richiede frequentemente un gran numero di attività che possono essere parallelizzate. Queste operazioni possono essere eseguite contemporaneamente su processori multi-core utilizzando il multithreading, il che può comportare significativi incrementi di velocità. Il compilatore può velocizzare l’allenamento dei modelli di deep learning ottimizzando la procedura di allenamento per l’esecuzione multithreading, consentendo così di utilizzare l’hardware in modo più efficace.

Contrapponendo il loro compilatore di deep learning con due basi consolidate, ovvero le implementazioni native e il framework XLA all’interno del framework di deep learning PyTorch, il team ha illustrato la rilevanza pratica di queste caratteristiche del compilatore. Hanno utilizzato questi paralleli per affrontare problemi comuni nella visione artificiale e nell’elaborazione del linguaggio naturale. Rispetto a questi metodi di base, i risultati hanno dimostrato che il loro compilatore può ottenere significativi miglioramenti di velocità ed efficienza delle risorse, mettendo in evidenza l’importanza e la promessa dei compilatori di deep learning nel migliorare l’efficacia e la praticità dell’allenamento di reti neurali per applicazioni reali.

In conclusione, questo lavoro rappresenta un grande passo avanti nel campo del deep learning e ha il potenziale per accelerare ed ottimizzare le procedure di allenamento. Queste prove e scoperte della ricerca mostrano l’efficacia dei loro cambiamenti al compilatore PyTorch XLA. Questi cambiamenti sono estremamente utili per accelerare l’allenamento di modelli di reti neurali in vari domini e configurazioni.