Ir al contenido

Acelerador de IA

De Wikipedia, la enciclopedia libre

Un acelerador de IA es una clase de acelerador por hardware[1]​ o sistema informático[2]​ diseñado para acelerar aplicaciones de inteligencia artificial, especialmente redes neuronales artificiales, visión artificial y aprendizaje automático. Las aplicaciones típicas incluyen algoritmos para robótica, internet de las cosas y otras tareas con gran uso de datos o conducidas por sensores.[3]​ Son a menudo diseños de múltiples núcleos y generalmente enfocados en aritmética de baja precisión, nuevas arquitecturas de flujo de datos o capacidad de computación en memoria.[4]​ A fecha de 2018, un típico chip de circuito integrado de IA contiene miles de millones de transistores MOSFET.[5]

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.

Historia de la aceleración de IA

[editar]

Los sistemas de computadoras tienen frecuentemente complementada la CPU con aceleradores de propósito especial para tareas específicas, conocidos como coprocesadores. Entre las unidades de hardware de aplicación específica se incluyen tarjetas de vídeo para gráficos, tarjetas de sonido, unidades de procesamiento gráfico y procesadores de señales digitales. A medida que las cargas de trabajo de aprendizaje profundo e inteligencia artificial aumentaron en importancia en la década de 2010, se desarrollaron o adaptaron unidades de hardware especializadas a partir de productos existentes para acelerar estas tareas.

Intentos tempranos

[editar]

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.[6]​ 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.[7][8][9]​ Los aceleradores basados en FPGA también se exploraron por primera vez en los años 1990 tanto para inferencia[10]​ como para entrenamiento.[11]​ ANNA fue un acelerador CMOS de redes neuronales desarrollado por Yann LeCun.[12]

Computación heterogénea

[editar]

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[13]​ 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,[14][15][16]​ incluida la IA.[17][18][19]

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.[20]

Uso de GPU

[editar]

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.[21][22][23]​ 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[24]​ como para inferencia en dispositivos como los coches autónomos.[25]​ 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.[26]​ 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.[27][28]​ Los núcleos Tensor están destinados a acelerar el entrenamiento de las redes neuronales.[28]

Uso de FPGA

[editar]

Los frameworks de aprendizaje profundo todavía están evolucionando, lo que dificulta el diseño de hardware personalizado. Los dispositivos reconfigurables, como los field-programmable gate arrays (FPGA), hacen que sea más fácil evolucionar hardware, frameworks y software participativamente.[10][11][29]

Microsoft ha usado chips FPGA para acelerar la inferencia.[30][31]​ 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.[32]

Aparición de ASICs aceleradores de IA dedicados

[editar]

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[33][34]​ 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.[35][36]​ 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.[37][38][39][40][41][42][43]

Arquitecturas de computación en memoria

[editar]

En junio de 2017, investigadores de IBM anunciaron una arquitectura en contraste con la arquitectura de Von Neumann basada en computación en memoria y arrays de memoria de cambio de fase aplicada a la detección de correlación temporal, con la intención de generalizar el enfoque a la computación heterogénea y a sistemas masivamente paralelos.[44]​ En octubre de 2018, investigadores de IBM anunciaron una arquitectura basada en procesamiento en memoria y modelada en la red sináptica del cerebro humano para acelerar redes neuronales profundas.[45]​ El sistema se basa en arrays de memoria de cambio de fase.[46]

Nomenclatura

[editar]

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»,[47]​ 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

[editar]

Véase también

[editar]

Referencias

[editar]
  1. «Intel unveils Movidius Compute Stick USB AI Accelerator». 21 de julio de 2017. Archivado desde el original el 11 de agosto de 2017. Consultado el 28 de julio de 2019. 
  2. «Inspurs unveils GX4 AI Accelerator». 21 de junio de 2017. 
  3. «Google Developing AI Processors». Google using its own AI accelerators.
  4. "A Survey of ReRAM-based Architectures for Processing-in-memory and Neural Networks", S. Mittal, Machine Learning and Knowledge Extraction, 2018.
  5. «13 Sextillion & Counting: The Long & Winding Road to the Most Frequently Manufactured Human Artifact in History». Computer History Museum. 2 de abril de 2018. Consultado el 28 de julio de 2019. 
  6. «convolutional neural network demo from 1993 featuring DSP32 accelerator». 
  7. «design of a connectionist network supercomputer». 
  8. «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)
  9. Ramacher, U.; Raab, W.; Hachmann, J.A.U.; Beichter, J.; Bruls, N.; Wesseling, M.; Sicheneder, E.; Glass, J. et al.. «SYNAPSE-1: a high-speed general purpose parallel neurocomputer system». Proceedings of 9th International Parallel Processing Symposium (IEEE Comput. Soc. Press). doi:10.1109/ipps.1995.395862. Consultado el 19 de febrero de 2022. 
  10. a b «Space Efficient Neural Net Implementation». 
  11. a b «A Generic Building Block for Hopfield Neural Networks with On-Chip Learning». 1996. Archivado desde el original el 17 de octubre de 2017. Consultado el 28 de julio de 2019. 
  12. Application of the ANNA Neural Network Chip to High-Speed Character Recognition
  13. «Synergistic Processing in Cell's Multicore Architecture». 2006. 
  14. De Fabritiis, G. (2007). «Performance of Cell processor for biomolecular simulations». Computer Physics Communications 176 (11-12): 660-664. arXiv:physics/0611201. doi:10.1016/j.cpc.2007.02.107. 
  15. Video Processing and Retrieval on Cell architecture. 
  16. Benthin, Carsten; Wald, Ingo; Scherbaum, Michael; Friedrich, Heiko (2006). 2006 IEEE Symposium on Interactive Ray Tracing. pp. 15-23. ISBN 978-1-4244-0693-7. doi:10.1109/RT.2006.280210. 
  17. «Development of an artificial neural network on a heterogeneous multicore architecture to predict a successful weight loss in obese individuals». Archivado desde el original el 30 de agosto de 2017. Consultado el 28 de julio de 2019. 
  18. Kwon, Bomjun; Choi, Taiho; Chung, Heejin; Kim, Geonho (2008). 2008 5th IEEE Consumer Communications and Networking Conference. pp. 1030-1034. ISBN 978-1-4244-1457-4. doi:10.1109/ccnc08.2007.235. 
  19. Duan, Rubing; Strey, Alfred (2008). Euro-Par 2008 – Parallel Processing. Lecture Notes in Computer Science 5168. pp. 665-675. ISBN 978-3-540-85450-0. doi:10.1007/978-3-540-85451-7_71. 
  20. «Improving the performance of video with AVX». 8 de febrero de 2012. 
  21. «microsoft research/pixel shaders/MNIST». 
  22. «how the gpu came to be used for general computation». 
  23. «imagenet classification with deep convolutional neural networks». 
  24. «nvidia driving the development of deep learning». 17 de mayo de 2016. 
  25. «nvidia introduces supercomputer for self driving cars». 6 de enero de 2016. 
  26. «how nvlink will enable faster easier multi GPU computing». 14 de noviembre de 2014. 
  27. "A Survey on Optimized Implementation of Deep Learning Models on the NVIDIA Jetson Platform", 2019.
  28. a b Harris, Mark (11 de mayo de 2017). «CUDA 9 Features Revealed: Volta, Cooperative Groups and More». Consultado el 12 de agosto de 2017. 
  29. «FPGA Based Deep Learning Accelerators Take on ASICs». The Next Platform. 23 de agosto de 2016. Consultado el 7 de septiembre de 2016. 
  30. «microsoft extends fpga reach from bing to deep learning». 27 de agosto de 2015. 
  31. Chung, Eric; Strauss, Karin; Fowers, Jeremy; Kim, Joo-Young; Ruwase, Olatunji; Ovtcharov, Kalin (23 de febrero de 2015). «Accelerating Deep Convolutional Neural Networks Using Specialized Hardware». Microsoft Research. 
  32. "A Survey of FPGA-based Accelerators for Convolutional Neural Networks", Mittal et al., NCAA, 2018.
  33. «Google boosts machine learning with its Tensor Processing Unit». 19 de mayo de 2016. Consultado el 13 de septiembre de 2016. 
  34. «Chip could bring deep learning to mobile devices». www.sciencedaily.com. 3 de febrero de 2016. Consultado el 13 de septiembre de 2016. 
  35. «Deep Learning with Limited Numerical Precision». Archivado desde el original el 9 de septiembre de 2016. Consultado el 28 de julio de 2019. 
  36. Rastegari, Mohammad; Ordonez, Vicente; Redmon, Joseph; Farhadi, Ali (2016). «XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks». arXiv:1603.05279  [cs.CV]. 
  37. Khari Johnson (23 de mayo de 2018). «Intel unveils Nervana Neural Net L-1000 for accelerated AI training». VentureBeat. 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.» 
  38. 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». 
  39. 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.» 
  40. «Available TensorFlow Ops | Cloud TPU | Google Cloud». Google Cloud. Consultado el 23 de mayo de 2018. «This page lists the TensorFlow Python APIs and graph operators available on Cloud TPU.» 
  41. 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.» 
  42. Tensorflow Authors (28 de febrero de 2018). «ResNet-50 using BFloat16 on TPU». Google. Consultado el 23 de mayo de 2018. 
  43. 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» .
  44. 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 Communications 8. arXiv:1706.00511. doi:10.1038/s41467-017-01481-9. 
  45. «A new brain-inspired architecture could improve how computers handle data and advance AI». American Institute of Physics. 3 de octubre de 2018. Consultado el 5 de octubre de 2018. 
  46. 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]. 
  47. «NVIDIA launches the World's First Graphics Processing Unit, the GeForce 256». 
  48. «drive px». 
  49. «design of a machine vision system for weed control». Archivado desde el original el 23 de junio de 2010. Consultado el 17 de junio de 2016. 
  50. «qualcomm research brings server class machine learning to every data devices». October 2015. 
  51. «movidius powers worlds most intelligent drone». 16 de marzo de 2016. 

Enlaces externos

[editar]