2016-02-10 21 views
5

Dove lavoro, facciamo molti calcoli numerici e stiamo considerando l'acquisto di workstation con schede video NVIDIA a causa di CUDA (per lavorare con TensorFlow e Theano).Utilizzo di una GPU come scheda video e GPGPU

La mia domanda è: questi computer dovrebbero venire con un'altra scheda video per gestire il display e liberare NVIDIA per GPGPU?

Mi piacerebbe sapere se qualcuno conosce dati rigidi sull'utilizzo di una scheda video per display e GPGPU allo stesso tempo.

risposta

4

Nella mia esperienza è scomodo condividere una scheda GPU tra compiti di calcolo numerico e guidare un monitor video. Ad esempio, c'è una memoria limitata disponibile su qualsiasi GPU, che è spesso il fattore limitante delle dimensioni di un modello che è possibile addestrare. A meno che tu non stia giocando, una GPU abbastanza modesta è probabilmente adeguata per guidare il video. Ma per il serio lavoro di ML probabilmente vorrai una scheda ad alte prestazioni. Dove lavoro (Google) tipicamente inseriamo due GPU in macchine da scrivania quando si deve usare per il calcolo numerico.

+0

Grazie mille! - un'altra domanda: ho letto da qualche parte (penso che fosse sulla documentazione di Tensor Flow ma non riesco a trovarla) che il display potrebbe congelarsi momentaneamente a volte durante l'allenamento del modello. È così? –

7

Avendo passato questo, aggiungerò i miei due centesimi.

È utile avere una scheda dedicata per i calcoli, ma sicuramente non è necessaria.

Ho utilizzato una workstation di sviluppo con una singola GPU high-end per display e computer. Ho anche utilizzato workstation con più GPU e server di calcolo senza testa.

La mia esperienza è che fare calcoli sul display GPU va bene fintanto che le richieste sul display sono tipiche dell'ingegneria del software. In una configurazione Linux con un paio di monitor, browser Web, editor di testo, ecc., Utilizzo circa 200 MB per la visualizzazione fuori dai 6 GB della scheda, quindi solo circa il 3% di spese generali. Potresti vedere il display balbettare un po 'durante l'aggiornamento di una pagina web o qualcosa del genere, ma le richieste di throughput del display sono molto piccole.

Un problema tecnico degno di nota per completezza è che il driver NVIDIA, il firmware della GPU o il sistema operativo potrebbero avere un timeout per il completamento del kernel sulla GPU del display (eseguire 'deviceQueryDrv' di NVIDIA per vedere il "limite di tempo di esecuzione sui kernel" del driver ambientazione). Nella mia esperienza (su Linux), con l'apprendimento automatico, questo non è mai stato un problema poiché il timeout è di alcuni secondi e, anche con kernel personalizzati, la sincronizzazione tra più processori limita la quantità di roba necessaria per il lancio di un singolo kernel. Mi aspetterei che le esecuzioni tipiche delle operazioni pre-infornate in TensorFlow fossero due o più ordini di grandezza al di sotto di questo limite.

Detto questo, ci sono alcuni grandi vantaggi di disporre di più schede di calcolo in una stazione di lavoro (indipendentemente dal fatto che venga utilizzata o meno per la visualizzazione). Ovviamente c'è il potenziale per un maggiore throughput (se il tuo software può usarlo). Tuttavia, il vantaggio principale nella mia esperienza è la possibilità di eseguire lunghi esperimenti mentre contemporaneamente si sviluppano nuovi esperimenti.

È ovviamente possibile iniziare con una scheda e aggiungerne una in un secondo momento, ma assicurarsi che la scheda madre abbia un sacco di spazio e che l'alimentatore sia in grado di gestire il carico. Se decidi di avere due carte, una delle quali è una scheda di fascia bassa dedicata alla visualizzazione, ti suggerisco in particolare di non utilizzare la scheda di fascia bassa come scheda CUDA, in modo che non venga selezionata come predefinita per il calcolo.

Spero che questo aiuti.

+0

Grazie.Fortunatamente, penso che i computer che compriamo siano già dotati di un chip grafico Intel integrato, quindi forse questo problema non verrà affatto sollevato. Comunque, il grande capo qui sta considerando l'acquisto di un singolo server con un nvidia molto potente che tutti condividono lol. È possibile che il contesto passasse dall'avere più persone che utilizzano la GPU e il trasferimento dei dati coinvolti nel trasferimento dei dati sia peggio che acquistare semplicemente più economici nvidia per i dipendenti che ne hanno bisogno? –

+1

@Ricardo Il driver NVIDIA è maturo e molto bravo a cambiare contesto: qui non c'è alcuna barriera fondamentale, ma condividere la memoria, la larghezza di banda e la velocità di elaborazione ha lo svantaggio che ci si aspetta, quindi la fattibilità della condivisione delle GPU dipende dal dettagli della tua applicazione. I modelli di formazione per prestazioni allo stato dell'arte tendono ad essere impegnativi (ad esempio, più GPU pienamente utilizzate per diversi giorni per la classificazione delle immagini). Potresti dare un'occhiata agli algoritmi che vuoi eseguire e vedere per quanto tempo gli altri li eseguono, e quindi considerare anche i requisiti di test/debug/ottimizzazione. –