Machine learning su larga scala rispetto all'hardware HPC tradizionale

2

Ho trascorso gli ultimi giorni a lavorare con tensorflow per la prima volta come parte di un incarico di elaborazione del linguaggio naturale per la mia laurea. È stato interessante (il divertimento non è la parola giusta) cercando di farlo funzionare su una GPU ma mi ha fatto pensare.

I recenti progressi nell'apprendimento approfondito si sono manifestati con il maturare delle tecnologie GPGPU e sono arrivati i framework per rendere molto più veloce e più facile l'enorme quantità di algebra lineare sul tuo computer. Nvidia ora vende chip progettati specificamente per questo compito e da ciò che capisco, documenti come quello con AlexNet non sarebbe stato possibile senza l'accelerazione GPU. Questo punto è ben articolato dagli autori:

All of our experiments suggest that our results can be improved simply by waiting for faster GPUs and bigger datasets to become available.

Dato questo, la mia domanda è allora perché non abbiamo visto più adozione di GPU per le attività HPC tradizionali (simulazione, rendering, ecc.)? Questi carichi di lavoro sono in circolazione da anni, ma sembra che solo di recente GPGPU sia decollato come approccio. Mi sembra che i requisiti siano abbastanza simili, ovvero 'leggi un carico di dati, esegui un carico di trasformazioni in virgola mobile sui dati, salva alcuni dati, ripeti' ma un'occhiata a TOP500 rivela che molti dei sistemi in uso stanno ancora utilizzando CPU (sebbene un numero crescente utilizzi processori "manycore" come Intel Phi che sembrano scavalcare la divisione CPU / GPU).

Esistono in realtà meno somiglianze tra i tradizionali carichi di lavoro HPC e ML su larga scala di quanto immagino? Forse è che le GPU sono meno efficienti in termini di flop / w che è ciò che conta davvero quando si tratta di gestire un enorme cluster di elaborazione? Si tratta solo di uno sforzo di marketing molto efficace di Nvidia nello spazio di apprendimento automatico?

    
posta HJCee 24.01.2017 - 00:30
fonte

1 risposta

3

It appears to me that the requirements are pretty similar, namely 'read a load of data, do a load of floating point transforms on the data, save some data, repeat

Penso che copra molti HPC tradizionali, ma non tutti. Ho solo un'esperienza limitata con CUDA, ma la mia comprensione è che la ramificazione dipendente dai dati uccide le prestazioni della GPU. Tutti i thread all'interno di un warp devono eseguire la stessa istruzione nello stesso momento. Se fili diversi all'interno di un ordito prendono rami diversi, devono essere eseguiti in serie. Questo è un limite piuttosto serio. A volte i problemi possono essere risolti per funzionare all'interno di quel vincolo , ma non sempre.

    
risposta data 27.01.2017 - 01:44
fonte

Leggi altre domande sui tag