Esistono alcuni approcci che possono essere utilizzati per ridurre il tempo di addestramento delle reti neurali.
 
Allenare le reti neurali più velocemente è uno dei fattori importanti del deep learning . In genere troviamo tali difficoltà con le reti neurali per la loro complessa architettura e il gran numero di parametri utilizzati. Con l’ aumento delle dimensioni dei dati , della rete e dei pesi, aumenta anche il tempo di addestramento dei modelli, il che non va bene per i modellisti e i professionisti. In questo articolo, discuteremo alcuni dei suggerimenti e dei trucchi che possono accelerare l’addestramento delle reti neurali. I punti principali da discutere nell’articolo sono elencati di seguito. 

Sommario
Formazione multi-GPU
Ridimensionamento del tasso di apprendimento 
Programmi di frequenza di apprendimento ciclico
Mescolare l’allenamento     
Levigatura dell’etichetta
Trasferisci l’apprendimento
Allenamento misto di precisione
 

 
Iniziamo discutendo di come l’allenamento Multi-GPU può migliorare la velocità di apprendimento. 

Formazione multi-GPU
Questo suggerimento è puramente per accelerare le reti neurali che non hanno alcun collegamento con le prestazioni dei modelli. Questo suggerimento può diventare costoso ma è molto efficace. L’implementazione di una GPU può anche rendere più veloce l’addestramento delle reti neurali, ma l’applicazione di più GPU ha più vantaggi. Se qualcuno non è in grado di implicare GPU nel proprio sistema, può passare attraverso i notebook di collaborazione di Google che forniscono supporto per GPU e TPU su base online. 

Stai cercando un repository completo di librerie Python utilizzate nella scienza dei dati,  dai un’occhiata qui .
L’applicazione di più GPU durante l’addestramento distribuisce i dati in diverse GPU e queste GPU mantengono il peso della rete e fanno conoscere la dimensione del mini-batch dei dati. Ad esempio, se abbiamo una dimensione batch di 8192 e 256 GPU implementate, ogni GPU avrà un mini-batch di dimensione 32 o possiamo dire 32 campioni per addestrare una rete. Ciò significa che la formazione della rete diventerà più veloce.   

Ridimensionamento del tasso di apprendimento 
Questo è uno dei suggerimenti che può aiutarci a migliorare la velocità di addestramento delle reti neurali. In generale, l’addestramento della rete neurale con un lotto di grandi dimensioni rappresenta la bassa precisione di convalida. Nella sezione precedente, abbiamo visto che l’applicazione di più GPU distribuisce la dimensione del batch per prevenire un lento addestramento della rete. 

Una cosa che possiamo eseguire anche in uno scenario in cui le GPU non sono disponibili è ridimensionare il tasso di apprendimento; questo suggerimento può compensare l’effetto medio che ha il mini-batch. Ad esempio, possiamo aumentare la dimensione del batch 4 volte durante l’allenamento su quattro GPU. Possiamo anche moltiplicare il tasso di apprendimento per 4 per aumentare la velocità dell’allenamento.  

Possiamo anche dire che questo metodo è il learning rate warmup, che è una strategia semplice per iniziare l’addestramento del modello con tassi di apprendimento elevati. All’inizio, possiamo iniziare l’allenamento con un tasso di apprendimento inferiore e aumentarlo a un valore preimpostato in una fase di riscaldamento. Il tasso di apprendimento inferiore può essere durante le prime epoche. Quindi il tasso di apprendimento può decadere come di solito accade nella formazione standard. 

Entrambi questi trucchi sono utili quando si utilizza la formazione distribuita della rete utilizzando più GPU. Possiamo anche scoprire che nel riscaldamento della velocità di apprendimento i modelli più difficili da addestrare possono essere stabilizzati indipendentemente dalle dimensioni del batch e dal numero di GPU che stiamo utilizzando.        

Orari del tasso di apprendimento ciclico
Le pianificazioni della velocità di apprendimento possono essere di vari tipi, una di queste è la pianificazione della velocità di apprendimento ciclica e che aiuta ad aumentare la velocità di addestramento delle reti neurali. Questo funziona principalmente aumentando e diminuendo il tasso di apprendimento in un ciclo entro limiti superiori e inferiori predefiniti. In alcuni programmi, troviamo che il limite superiore diminuisce con l’avanzamento della procedura di addestramento.  

Le pianificazioni della frequenza di apprendimento ciclica una tantum sono una variante delle pianificazioni della frequenza di apprendimento ciclica che aumentano e diminuiscono la frequenza di apprendimento solo una volta durante l’intero processo di formazione. Possiamo anche considerarlo simile al riscaldamento della velocità di apprendimento di cui abbiamo discusso nella sezione precedente. Questo suggerimento può essere applicato anche al parametro della quantità di moto dell’ottimizzatore, ma nell’ordine inverso     

Mescolare l’allenamento 
Questo è un suggerimento molto semplice che può anche essere definito un mixup che funziona principalmente con le reti nel campo della visione artificiale. L’idea di questo suggerimento è tratta da questo articolo. Il processo di mixup aiuta ad evitare l’overfitting e riduce la sensibilità dei modelli di fronte ai dati contraddittori. Possiamo anche pensare a questo processo come a una tecnica di aumento dei dati che esegue in modo casuale il blending sui campioni di input. Andando in profondità scopriamo che questo suggerimento raccoglie una coppia di campioni di dati e genera nuovi campioni mentre calcola la media ponderata di input e output. 

Uno dei nostri articoli spiega il processo di miscelazione utilizzato dal processo di miscelazione. Ad esempio, in un’attività di classificazione delle immagini, il processo funzionerà unendo le immagini nell’input e lo stesso parametro di fusione per calcolare una media ponderata delle etichette di output.       

Levigatura dell’etichetta
Lo smoothing delle etichette è una tecnica generale per accelerare il processo di addestramento delle reti neurali. Un set di dati di classificazione normale è costituito dalle etichette codificate a caldo, dove una classe true ha i valori di una e le altre classi hanno il valore zero. In una situazione del genere, una funzione softmax non emette mai i vettori codificati one-hot. Questa procedura crea principalmente un divario tra le distribuzioni delle etichette di verità di base e le previsioni del modello.

L’applicazione dell’uniformità delle etichette può ridurre il divario tra la distribuzione delle etichette di verità di base e le previsioni del modello. Nello smoothing delle etichette, sottraiamo principalmente alcuni epsilon dalle etichette vere e aggiungiamo i risultati della sottrazione agli altri. In questo modo i modelli ottengono un overfitting di prevenzione e funzionano come regolatori. Una cosa da notare qui è che se il valore di epsilon diventa molto grande, le etichette possono appiattirsi troppo. 

Il forte valore dell’uniformità delle etichette consente una minore conservazione delle informazioni dalle etichette. L’effetto dello smoothing delle etichette può essere visto anche nella velocità dell’addestramento delle reti neurali perché il modello apprende più velocemente dai soft target che sono una media ponderata degli hard target e la distribuzione uniforme sulle etichette. Questo metodo può essere utilizzato con varie procedure di modellazione come la classificazione delle immagini, la traduzione linguistica e il riconoscimento vocale.

Trasferisci l’apprendimento
L’apprendimento del trasferimento può essere spiegato come il processo in cui un modello inizia la sua formazione trasferendo i pesi da altri modelli, invece di allenarsi da zero. Questo è un ottimo modo per aumentare l’allenamento del modello e può anche aiutare ad aumentare le prestazioni del modello perché i pesi che stiamo usando con il processo sono già allenati e un’enorme quantità di tempo di allenamento può essere ridotto da tutto il tempo di allenamento. Uno dei nostri articoli spiega come eseguire questo tipo di apprendimento.   

Allenamento misto di precisione
Possiamo definire questo tipo di addestramento per creare un modello per apprendere sia virgola mobile a 16 bit che a 32 bit in modo che il modello possa apprendere più velocemente e il tempo di addestramento del modello possa essere ridotto. Prendiamo un esempio di una semplice rete neurale in cui il modello deve rilevare un oggetto dalle immagini. Addestrare un tale modello significa trovare il peso limite della rete in modo tale che possa essere in grado di eseguire il rilevamento di oggetti dai dati. Questi pesi dei bordi possono essere archiviati in un formato a 32 bit. 

Questa formazione generale può comportare la propagazione in avanti e all’indietro e per funzionare in questo modo richiederà miliardi di moltiplicazioni se i punti sono a 32 bit. Possiamo evitare che il punto a 32 bit rappresenti un numero durante l’allenamento. Nei gradienti di backpropagation che la rete sta calcolando possono essere valori molto bassi e in tali condizioni è necessario spingere molta memoria per rappresentare i numeri. Possiamo anche gonfiare questi gradienti in modo da non richiedere molta memoria per rappresentare questi numeri.  

Possiamo anche rappresentare i numeri con 16 bit e possiamo risparmiare molta memoria di archiviazione del modello e il programma di allenamento può essere più veloce di prima. Questa procedura può essere spiegata come l’addestramento del modello mentre le operazioni aritmetiche hanno pochi bit. L’unica cosa che deve essere considerata in tale formazione è l’accuratezza. Ciò può accadere perché l’accuratezza del modello è notevolmente inferiore. 

Come spiegato in precedenza, possiamo addestrare il modello sia a 16 bit che a 32 bit utilizzando l’addestramento a precisione mista in cui mantiene la copia principale dei parametri di peso effettivi nel formato di precisione a 32 bit originale. E possiamo usarlo come un vero e proprio set di pesi che utilizziamo con il modello dopo l’allenamento. 

Tra l’allenamento, possiamo convertire i 32 bit in precisioni a 16 bit e possiamo eseguire la propagazione in avanti con tutte le operazioni aritmetiche con meno memoria e la perdita può essere calcolata per alimentare dopo un po’ di tempo scalandola nella backpropagation dove i gradienti sono anche scalati. 

Nella backpropagation, calcoliamo gradienti a 16 bit e i gradienti finali vanno al set effettivo di pesi che utilizziamo nel modello. La procedura sopra indicata è un’iterazione e questo accade per molte iterazioni. L’immagine qui sotto spiega l’intera procedura che abbiamo discusso. 

 Possiamo trovare l’intera idea dietro questa procedura qui . Inoltre, TensorFlow fornisce un esempio di questo tipo di formazione qui .

Parole finali 
Nell’articolo, abbiamo discusso i trucchi e i suggerimenti che possono essere utilizzati per accelerare l’addestramento delle reti neurali. Poiché il tempo di addestramento e le prestazioni dei modelli sono fattori importanti che devono essere considerati nella modellazione, dovremmo cercare di utilizzarli nei nostri processi.             

 

Di ihal