# Acelerador de IA

Un acelerador de IA es una clase de acelerador por hardware o sistema informático 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. 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. A fecha de 2018, un típico chip de circuito integrado de IA contiene miles de millones de transistores MOSFET.
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

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

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.

### Uso de FPGA

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.
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.

### Arquitecturas de computación en memoria

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. 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. El sistema se basa en arrays de memoria de cambio de fase.

## Nomenclatura

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.
* Robots militares
* Robots agrícolas, por ejemplo, control de malezas sin pesticidas.
* Control por voz, p. ej. en teléfonos móviles, un objetivo para Qualcomm Zeroth.
* Traducción automática
* Vehículos aéreos no tripulados, p. ej. sistemas de navegación, p. ej. el Movidius Myriad 2 se ha probado con éxito guiando drones autónomos.
* Robots industriales, incrementando el rango de tareas que se pueden automatizar al agregar adaptabilidad a situaciones variables.
* Asistencia sanitaria, para ayudar con los diagnósticos.
* Motores de búsqueda, incrementando la eficiencia energética de los centros de datos y la capacidad de utilizar consultas cada vez más avanzadas.
* Procesamiento del lenguaje natural