Dovrei usare GPU o CPU per deduzione?


13

Sto gestendo una rete neurale di apprendimento profondo che è stata addestrata da una GPU. Ora voglio distribuire questo a più host per deduzione. La domanda è: quali sono le condizioni per decidere se dovrei usare GPU o CPU per deduzione?


Aggiunta di maggiori dettagli dai commenti qui sotto.

Sono nuovo di questo, quindi la guida è apprezzata.

  • Memoria : GPU è K80

  • Quadro : Cuda e cuDNN

  • Dimensione dei dati per carichi di lavoro : 20G

  • Nodi di calcolo da consumare : uno per lavoro, anche se vorrebbe considerare un'opzione di scala

  • Costo : posso permettermi un'opzione GPU se i motivi hanno senso

  • Distribuzione : in esecuzione sui propri server bare metal ospitati, non nel cloud.

In questo momento sto funzionando su CPU semplicemente perché l'applicazione funziona bene. Ma al di fuori di questo motivo, non sono sicuro del motivo per cui si dovrebbe anche prendere in considerazione la GPU.


Per consigli sul confronto tra due potenziali approcci, sarà utile per gli altri conoscere alcuni dettagli del proprio compito. Ad esempio, qual è la dimensione dei tuoi dati, qual è la capacità di memoria della tua GPU, il numero di nodi di elaborazione che prevedi di utilizzare e forse anche quale framework di riduzione delle mappe hai in mente.
Dynamic Stardust,

@DynamicStardust ... e il costo. Nodi CPU EC2 economici o costosi nodi GPU ECW? Questa è una domanda troppo vaga.
Spacedman,

Risposte:


8

@Dan @SmallChess, non sono completamente d'accordo. È vero che per l'allenamento gran parte della parallelizzazione può essere sfruttata dalle GPU, risultando in un allenamento molto più veloce. Per quanto riguarda l'inferenza, questa parallelizzazione può essere molto meno, tuttavia la CNN trarrà comunque un vantaggio da ciò con conseguente inferenza più veloce. Ora ti devi solo chiedere: è importante l'inferenza più veloce? Voglio queste dipendenze extra (una buona GPU, i file giusti installati ecc.)?

Se la velocità non è un problema, scegli la CPU. Tuttavia nota che le GPU possono renderlo un ordine di grandezza più veloce nella mia esperienza.


Punto interessante che sollevate, perché la CNN trarrebbe beneficio dall'elaborazione parallela durante l'inferenza?
Dan,

1
Con l'addestramento i calcoli paralleli potrebbero essere ovvi: hai più input, ognuno dei quali deve essere inoltrato, totalmente indipendente l'uno dall'altro. Per una convoluzione, il kernel viene moltiplicato per più "patch" di input. Anche questi possono essere fatti in parallelo. Questo è ciò che rende la CNN così potente: non solo hanno bisogno di meno parametri per allenarsi, ma è anche più parallelizzata, rendendo così le GPU così potenti. Non so su cosa lavori, ma lavoro sulla segmentazione (classificazione pixelwise) delle immagini e quando uso le GPU per deduzione ottengo un enorme miglioramento della velocità (> x10).
Laurens Meeus,

@LaurensMeeus Sono anche nuovo di questo spettro e sto facendo un'analisi dei costi delle VM cloud. Userei comunque la GPU per l'allenamento se mi alleno solo all'analisi del testo e non alle immagini?
Squ1rr3lz

2
@ Squ1rr3lz Sono il 95% che dovresti. Ogni forma di calcolo parallelo dovrebbe ottenere un vantaggio sulle GPU. Non sono un esperto in questo campo, ma dato che l'analisi del testo è anche con livelli convoluzionali (sia esso 1D anziché 2D), questo è già uno dei motivi per cui potrebbe / dovrebbe essere più veloce. Se possibile, prova da solo quale influenza ha l'abilitazione / disabilitazione della GPU.
Laurens Meeus,

6

L'esecuzione di un'inferenza su una GPU anziché su una CPU ti consentirà di avvicinarti allo stesso aumento di velocità dell'allenamento, meno un po 'di sovraccarico di memoria.

Tuttavia, come hai detto, l'applicazione funziona correttamente sulla CPU. Se arrivate al punto in cui la velocità di inferenza è un collo di bottiglia nell'applicazione, l'aggiornamento a una GPU allevierà quel collo di bottiglia.


Completamente d'accordo. Ancora non capisco perché il post della CPU sia superato.
Laurens Meeus,

1
GeForce GTX Titan X offre prestazioni tra 5,3 e 6,7 volte superiori rispetto alla CPU Intel Xeon E5 a 16 core - che è molto inferiore alla velocità raggiunta durante l'allenamento - dal blog di NVidia: devblogs.nvidia.com/…
seanhalle

4

Utilizzeresti la GPU solo per allenarti perché il deep learning richiede calcoli enormi per arrivare a una soluzione ottimale. Tuttavia, non è necessario disporre di macchine GPU per la distribuzione .

Prendiamo ad esempio il nuovo iPhone X di Apple. Il nuovo iPhone X ha un algoritmo di apprendimento automatico avanzato per il rilevamento facciale. I dipendenti Apple devono disporre di un gruppo di macchine per la formazione e la convalida. Ma il tuo iPhone X non ha bisogno di una GPU per eseguire il modello.


Grazie per questa spiegazione. Quello che non capisco quindi è perché Nvidia sta promuovendo l'uso delle GPU come migliore soluzione per dedurre se la CPU può farlo bene. Inoltre, perché Google sta spingendo anche TPU per deduzione se lo fa tutto con la CPU? Ha qualcosa a che fare con il calcolo parallelo?
Dan,

3
@SmallChess IPhone X non aveva un avanzato processore simile a TPU in esso puramente per inferenza? extremetech.com/mobile/…
Laurens Meeus,

3
@SmallChess Ma perché non può essere? Forse non capisco del tutto. Non otterrai ancora qualche miglioramento nella velocità?
Laurens Meeus,

2
Onestamente, NVidia ha un fantastico dipartimento di marketing ed è nel loro interesse promuovere l'invio di GPU NVidia per deduzione. È nel loro interesse, non nel tuo.
seanhalle,

1
Dal blog di NVidia: "258 contro 242 immagini / secondo" per CPU NVIDIA Tegra X1 vs i7 6700K quando si esegue l'inferenza: devblogs.nvidia.com/…
seanhalle
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.