Existen varios términos específicos de proveedores para dispositivos de esta categoría, y se trata de una tecnología emergente sin un diseño dominante.
Tan temprano como 1993, los procesadores de señales digitales fueron utilizados como aceleradores de redes neuronales, por ejemplo, para acelerar software de reconocimiento óptico de caracteres. En los años 1990, también hubo intentos de crear sistemas paralelos de alto rendimiento para estaciones de trabajo destinadas a diversas aplicaciones, incluyendo simulación de redes neuronales. Los aceleradores basados en FPGA también se exploraron por primera vez en los años 1990 tanto para inferencia como para entrenamiento. ANNA fue un acelerador CMOS de redes neuronales desarrollado por Yann LeCun.
Computación heterogénea
La computación heterogénea se refiere a la incorporación de varios procesadores especializados en un solo sistema, o incluso un solo chip, cada uno optimizado para un tipo específico de tarea. Arquitecturas como el microprocesador Cell tienen características que se superponen significativamente con los aceleradores de IA incluyendo: soporte para aritmética de baja precisión empaquetada, arquitectura de flujo de datos y priorización del «rendimiento» sobre la latencia. El microprocesador Cell fue aplicado posteriormente a una serie de tareas, incluida la IA.
En los años 2000, las CPU también obtuvieron unidades SIMD cada vez más amplias, impulsadas por cargas de trabajo de vídeo y juegos; así como soporte para tipos de datos de baja precisión empaquetados.
Uso de GPU
Las GPU son hardware especializado para la manipulación de imágenes y el cálculo de propiedades de imágenes locales. La base matemática de las redes neuronales y la manipulación de imágenes son tareas vergonzosamente paralelas similares que involucran matrices, lo que hace que las GPU se utilicen cada vez más para tareas de aprendizaje automático. A fecha de 2016, las GPU son populares para el trabajo de IA y continúan evolucionando en una dirección para facilitar el aprendizaje profundo, tanto para entrenamiento como para inferencia en dispositivos como los coches autónomos. Los desarrolladores de GPU como Nvidia NVLink están desarrollando capacidad conectiva adicional para el tipo de cargas de trabajo de flujo de datos de las que se beneficia la IA. A medida que las GPU se han aplicado cada vez más a la aceleración de IA, los fabricantes de GPU han incorporado hardware específico de redes neuronales para acelerar aún más estas tareas. Los núcleos Tensor están destinados a acelerar el entrenamiento de las redes neuronales.
Microsoft ha usado chips FPGA para acelerar la inferencia. La aplicación de FPGA a la aceleración de IA motivó a Intel a adquirir Altera con el objetivo de integrar FPGA en CPU de servidores, que serían capaces de acelerar IA así como tareas de propósito general.
Aparición de ASICs aceleradores de IA dedicados
Si bien las GPU y los FPGA funcionan mucho mejor que las CPU para las tareas relacionadas con la IA, se puede obtener un factor de hasta 10 en eficiencia con un diseño más específico, a través de un circuito integrado de aplicación específica (ASIC). Estos aceleradores emplean estrategias como el uso optimizado de memoria y el uso de aritmética de menor precisión para acelerar el cálculo y aumentar el rendimiento de la computación. Algunos formatos de punto flotante de baja precisión adoptados usados en la aceleración de IA son half-precision y el formato de punto flotante bfloat16.
A fecha de 2016, el campo todavía está en constante cambio y los proveedores están impulsando su propio término de marketing para lo que equivale a un «acelerador de IA», con la esperanza de que sus diseños y APIs se conviertan en el diseño dominante. No hay consenso sobre el límite entre estos dispositivos, ni la forma exacta que tomarán; sin embargo, varios ejemplos apuntan claramente a llenar este nuevo espacio, con una buena cantidad de solapamiento de capacidades.
En el pasado, cuando surgieron los aceleradores de gráficos de consumo, la industria finalmente adoptó el término autoasignado de Nvidia, «la GPU», como el nombre colectivo para «aceleradores de gráficos», que había tomado muchas formas antes de establecerse en un pipeline general implementando un modelo presentado por Direct3D.
Aplicaciones potenciales
Vehículos autónomos: Nvidia ha enfocado sus boards de Drive PX-series a este espacio.
↑«The end of general purpose computers (not)».This presentation covers a past attempt at neural net accelerators, notes the similarity to the modern SLI GPGPU processor setup, and argues that general purpose vector accelerators are the way forward (in relation to RISC-V hwacha project. Argues that NN's are just dense and sparse matrices, one of several recurring algorithms)
↑Rastegari,Mohammad;Ordonez,Vicente;Redmon,Joseph;Farhadi,Ali(2016).«XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks».arXiv:1603.05279[cs.CV].
↑Khari Johnson (23 de mayo de 2018). «Intel unveils Nervana Neural Net L-1000 for accelerated AI training». VentureBeat. Archivado desde el original el 23 de mayo de 2018. Consultado el 23 de mayo de 2018. «...Intel will be extending bfloat16 support across our AI product lines, including Intel Xeon processors and Intel FPGAs.»
↑Michael Feldman (23 de mayo de 2018). «Intel Lays Out New Roadmap for AI Portfolio». TOP500 Supercomputer Sites. Consultado el 23 de mayo de 2018. «Intel plans to support this format across all their AI products, including the Xeon and FPGA lines».
↑Lucian Armasu (23 de mayo de 2018). «Intel To Launch Spring Crest, Its First Neural Network Processor, In 2019». Tom's Hardware. Consultado el 23 de mayo de 2018. «Intel said that the NNP-L1000 would also support bfloat16, a numerical format that’s being adopted by all the ML industry players for neural networks. The company will also support bfloat16 in its FPGAs, Xeons, and other ML products. The Nervana NNP-L1000 is scheduled for release in 2019.»
↑Elmar Haußmann (26 de abril de 2018). «Comparing Google's TPUv2 against Nvidia's V100 on ResNet-50». RiseML Blog. Archivado desde el original el 26 de abril de 2018. Consultado el 23 de mayo de 2018. «For the Cloud TPU, Google recommended we use the bfloat16 implementation from the official TPU repository with TensorFlow 1.7.0. Both the TPU and GPU implementations make use of mixed-precision computation on the respective architecture and store most tensors with half-precision.»
↑Joshua V. Dillon; Ian Langmore; Dustin Tran; Eugene Brevdo; Srinivas Vasudevan; Dave Moore; Brian Patton; Alex Alemi; Matt Hoffman; Rif A. Saurous (28 de noviembre de 2017), TensorFlow Distributions, Bibcode:2017arXiv171110604D, arXiv:1711.10604, Accessed 2018-05-23, «All operations in TensorFlow Distributions are numerically stable across half, single, and double floating-point precisions (as TensorFlow dtypes: tf.bfloat16 (truncated floating point), tf.float16, tf.float32, tf.float64). Class constructors have a validate_args flag for numerical asserts».
↑Abu Sebastian; Tomas Tuma; Nikolaos Papandreou; Manuel Le Gallo; Lukas Kull; Thomas Parnell; Evangelos Eleftheriou (2017). «Temporal correlation detection using computational phase-change memory». Nature Communications8. arXiv:1706.00511. doi:10.1038/s41467-017-01481-9.
↑Carlos Ríos;Nathan Youngblood;Zengguang Cheng;Manuel Le Gallo;Wolfram H.P. Pernice;C David Wright;Abu Sebastian;Harish Bhaskaran(2018).«In-memory computing on a photonic platform».arXiv:1801.06228[cs.ET].