Facebook rilascia “Neural Network Compiler” per PyTorch 1.10
Un team di ingegneri software di Facebook, guidato dall’ingegnere software Bertrand Maher , ha recentemente rilasciato un compilatore JIT per CPU basato su LLVM, chiamato NNC, per ” Neural Network Compiler “. Il risultato è stato derivato dalla suite pyhpc-benchmark .
Il benchmark stesso è un paese delle meraviglie per un compilatore ML, con molte opportunità per la fusione dei loop, il che significa che puoi ottenere accelerazioni davvero sorprendenti. Mentre il benchmark originale forza l’esecuzione a thread singolo (e NNC fa bene, producendo 23 volte su NumPy), brilla davvero quando si solleva il tappo del threading. Su una scatola di sviluppo a 96 core, ha visto 150 volte su PyTorch 1.9 e 300 volte su NumPy .
Enormi quantità di tempo e risorse vengono impiegate nello sviluppo di frontend Python per backend ad alte prestazioni, ma di solito sono pensati per l’apprendimento profondo. Il team di sviluppo ha voluto vedere se può trarre vantaggio da questi progressi, utilizzando queste librerie per la modellazione geofisica, utilizzando un simulatore oceanico in puro Python Veros .
Le prestazioni di Jax sembrano molto competitive, sia su GPU che su CPU. È costantemente tra le migliori implementazioni sulla CPU e mostra le migliori prestazioni sulla GPU.
Le prestazioni di Jax su GPU sembrano essere abbastanza dipendenti dall’hardware. Le prestazioni di Jax sono significativamente migliori (relativamente parlando) su una Tesla P100 rispetto a una Tesla K80.
Numba è un’ottima scelta sulla CPU se non ti dispiace scrivere esplicitamente per i loop (che può essere più leggibile di un’implementazione vettorializzata), essendo leggermente più veloce di Jax con poco sforzo.
Se si dispone di carichi di lavoro paralleli imbarazzanti, è facile ottenere velocità superiori a 1000 volte su GPU di fascia alta.
Tensorflow non è eccezionale per applicazioni come questa, poiché manca di strumenti per applicare aggiornamenti parziali ai tensori (nel senso di tensor[2:-2] = 0.).
Non preoccuparti di usare Pytorch o Vanilla Tensorflow sulla CPU. Tensorflow con XLA (experimental_compile) è fantastico!
Raggiungere le prestazioni Fortran sulla CPU con implementazioni vettoriali è difficile.
Veros è il versatile simulatore oceanico che mira a essere un potente strumento che rende la modellazione oceanica ad alte prestazioni accessibile e divertente. Veros supporta un backend NumPy per problemi su piccola scala e un backend JAX ad alte prestazioni con supporto per CPU e GPU. È completamente parallelizzato tramite MPI e supporta l’esecuzione distribuita. Veros è attualmente in fase di sviluppo presso il Niels Bohr Institute , Università di Copenaghen..