Ho visto discussioni sul "sovraccarico" di una GPU e che per le "piccole" reti, potrebbe effettivamente essere più veloce allenarsi su una CPU (o rete di CPU) rispetto a una GPU.
Cosa si intende per "piccolo"?
Ad esempio, un MLP a strato singolo con 100 unità nascoste sarebbe "piccolo"?
La nostra definizione di "piccolo" cambia per le architetture ricorrenti?
Ci sono altri criteri da considerare quando si decide se allenarsi su CPU o GPU?
MODIFICA 1:
Ho appena trovato un post sul blog (forse obsoleto? È del 2014):
"... La maggior parte delle schede di rete funziona solo con la memoria registrata con la CPU e quindi il trasferimento da GPU a GPU tra due nodi sarebbe simile a questo: GPU 1 a CPU 1 a Scheda di rete 1 a Scheda di rete 2 a CPU Da 2 a GPU 2. Ciò significa che se si sceglie una scheda di rete lenta, potrebbero non esserci accelerazioni su un singolo computer. Anche con le schede di rete veloci, se il cluster è grande, non si ottengono nemmeno accelerazioni dalle GPU rispetto alle CPU poiché le GPU funzionano troppo velocemente perché le schede di rete le stiano al passo.
Questo è il motivo per cui molte grandi aziende come Google e Microsoft utilizzano CPU anziché cluster GPU per addestrare le loro grandi reti neurali. "
Quindi ad un certo punto, secondo questo post, avrebbe potuto essere più veloce usare le CPU. È ancora così?
EDIT 2: Sì, quel post sul blog potrebbe benissimo essere obsoleto perché:
Ora sembra che le GPU all'interno di un nodo siano connesse tramite bus PCIe, quindi la comunicazione può avvenire a circa 6GiB / s. (Ad esempio: https://www.youtube.com/watch?v=el1iSlP1uOs , circa 35 minuti tra). L'altoparlante implica che questo è più veloce che passare da GPU1 a CPU a GPU2. Significherebbe che la scheda di rete non è più il collo di bottiglia.