Hay ejemplos para la llamada computación neural como el chip Myriad2 basado en SHAVE, básicamente o al menos parte de él, un VLIW (bajo 30 nm y 1-2 W)
Ahora, ¿tiene sentido diseñar una red neuronal en un FPGA? Específicamente, ¿un RNN o un TDNN?
Hay ejemplos para la llamada computación neural como el chip Myriad2 basado en SHAVE, básicamente o al menos parte de él, un VLIW (bajo 30 nm y 1-2 W)
Ahora, ¿tiene sentido diseñar una red neuronal en un FPGA? Específicamente, ¿un RNN o un TDNN?
Suponiendo que necesita los PESOS y la multiplicación y la suma, con los PESOS almacenados en la memoria local, y también necesita ese comportamiento de umbral no lineal (algunos analógicos o lotta digitales ---- tabla de búsqueda ---- para implementar el no linealidad), cuántas sinapsis (no neuronas, sino sinapsis) pueden encajar en un gran FPGA?
Los FPGA son para crear una lógica personalizada, y cuando puedes personalizar la lógica, puedes hacer que se ejecute más rápido, y al hacer que se ejecute más rápido, me refiero a cortar ciclos de reloj entre operaciones en una CPU. Una cosa es que los FPGA no están utilizando de manera extraordinaria operaciones de punto flotante y especialmente las funciones exponenciales y de registro, pero si necesita que su lógica se ejecute rápidamente, lo único mejor es un ASIC personalizado. También puede ahorrar energía con un FPGA.
Las funciones de registro y exp son muy caras y requieren muchos recursos FPGA para implementar. Supongo que podría aproximarlos con tablas de búsqueda y utilizar operaciones de punto fijo a costa de la precisión numérica. GPU y CPU ya tienen estos en hardware.
GPU y CPU son el camino a seguir, tienen software de cadenas de herramientas y reducen el tiempo que lleva implementar una red neuronal. Además, las GPU probablemente tengan la misma capacidad de paralelismo que una FPGA porque ahora tienen miles de núcleos. No uses FPGA's solo porque son 'geniales'