# Procesador de aprendizaje profundo

Un procesador de aprendizaje profundo (DLP), o deep learning accelerator, es un circuito electrónico diseñado para algoritmos de aprendizaje profundo, generalmente con una memoria principal (MP) separada y una arquitectura de conjunto de instrucciones dedicada. Los procesadores de aprendizaje profundo van desde dispositivos móviles, como unidades de procesamiento neuronal (NPU) en teléfonos celulares Huawei, hasta servidores de computación en la nube, como unidades de procesamiento tensorial (TPU) en la plataforma Google Cloud.
El objetivo de los DLP es proporcionar una mayor eficiencia y rendimiento para los algoritmos de aprendizaje profundo que la unidad central de procesamiento (CPU) general y las unidades de procesamiento de gráficos (GPU). La mayoría de los DLP emplean una gran cantidad de componentes informáticos para aprovechar el paralelismo de alto nivel de datos, un búfer/memoria en chip relativamente más grande para aprovechar los patrones de reutilización de datos y operadores de ancho de datos limitado (limited data-width operators) para la resistencia a errores del aprendizaje profundo. Los procesadores de aprendizaje profundo difieren de los aceleradores de IA en que están especializados para ejecutar algoritmos de aprendizaje, mientras que los aceleradores de IA suelen estar más especializados para la inferencia. Los dos términos (DLP y acelerador de IA), sin embargo, no se utilizan de forma rigurosa y, a menudo, se superponen.

## Historia
### El uso de CPU/GPU

Al principio, se adoptaron CPU generales para realizar algoritmos de aprendizaje profundo. Más tarde, las GPU se introducen en el dominio del aprendizaje profundo. Por ejemplo, en 2012, Alex Krizhevsky adoptó dos GPU para entrenar una red de aprendizaje profundo, la llamada, AlexNet, que ganó el campeonato ISLVRC-2012. A medida que aumenta el interés por los algoritmos de aprendizaje profundo y las DLP, los fabricantes de GPU comienzan a agregar funciones relacionadas con el aprendizaje profundo tanto en hardware (por ejemplo, operadores INT8) como en software (por ejemplo, biblioteca cuDNN). Nvidia incluso lanzó Turing Tensor Core, un DLP, para acelerar el procesamiento de aprendizaje profundo.

### El primer DLP

Para proporcionar una mayor eficiencia en el rendimiento y la energía, el diseño de dominio específico comenzó paulatinamente a llamar mucho la atención. En 2014, Chen et al. propuso el primer DLP del mundo, DianNao (en chino, "cerebro eléctrico"), para acelerar especialmente las redes neuronales profundas. DianNao proporciona el rendimiento máximo de 452 Gop/s (de operaciones clave en redes neuronales profundas) solo en un espacio reducido de 3,02 mm$^2$ y 485 mW. Posteriormente, los sucesores (DaDianNao, ShiDianNao, PuDianNao) son propuestos por el mismo grupo, formando la Familia DianNao

### Los florecientes DLP

Inspirados en el trabajo pionero de la familia DianNao, se han presentado muchos DLP, tanto en el mundo académico como en el industrial, con un diseño optimizado para aprovechar las características de las redes neuronales profundas para una alta eficiencia. Solo en ISCA 2016, tres sesiones, el 15% de los trabajos aceptados fueron diseños de arquitectura sobre aprendizaje profundo. Dichos esfuerzos incluyen Eyeriss (MIT), EIE (Stanford), Minerva (Harvard), Stripes (Universidad de Toronto) en el mundo académico y TPU (Google), MLU (Cambricon) en la industria. Se presentan varios trabajos representativos en la Tabla 1.
Tabla 1. Típicos DLP :
| Año | DLP | Institución | Tipo | Computación | Jerarquía de memoria | Control | Rendimiento máximo |
| 2014 | DianNao | ICT, CAS | digital | vector MACs | scratchpad | VLIW | 452 Gops (16-bit) |
| 2014 | DaDianNao | ICT, CAS | digital | vector MACs | scratchpad | VLIW | 5.58 Tops (16-bit) |
| 2015 | ShiDianNao | ICT, CAS | digital | scalar MACs | scratchpad | VLIW | 194 Gops (16-bit) |
| 2015 | PuDianNao | ICT, CAS | digital | vector MACs | scratchpad | VLIW | 1,056 Gops (16-bit) |
| 2016 | DnnWeaver | Georgia Tech | digital | Vector MACs | scratchpad | - | - |
| 2016 | EIE | Stanford | digital | scalar MACs | scratchpad | - | 102 Gops (16-bit) |
| 2016 | Eyeriss | MIT | digital | scalar MACs | scratchpad | - | 67.2 Gops (16-bit) |
| 2016 | Prime | UCSB | hybrid | Process-in-Memory | ReRAM | - | - |
| 2017 | TPU | Google | digital | scalar MACs | scratchpad | CISC | 92 Tops (8-bit) |
| 2017 | PipeLayer | U of Pittsburgh | hybrid | Process-in-Memory | ReRAM | - | |
| 2017 | FlexFlow | ICT, CAS | digital | scalar MACs | scratchpad | - | 420 Gops |
| 2018 | MAERI | Georgia Tech | digital | scalar MACs | scratchpad | - | |
| 2018 | PermDNN | City University of New York | digital | vector MACs | scratchpad | - | 614.4 Gops (16-bit) |
| 2019 | FPSA | Tsinghua | hybrid | Process-in-Memory | ReRAM | - | |
| 2019 | Cambricon-F | ICT, CAS | digital | vector MACs | scratchpad | FISA | 14.9 Tops (F1, 16-bit) 956 Tops (F100, 16-bit) |

## Arquitectura DLP

Con la rápida evolución de los algoritmos de aprendizaje profundo y DLP, se han explorado muchas arquitecturas. Los DLP se pueden clasificar en tres categorías según su implementación: circuitos digitales, circuitos analógicos y circuitos híbridos. Como los DLP analógicos puros rara vez son vistos, la referencia es a los digitales y los híbridos.

### DLP digitales

Los componentes principales de la arquitectura de DLP generalmente incluyen un componente de computación, la jerarquía de memoria en el chip y la lógica de control que administra los flujos de computación y comunicación de datos.
Con respecto al componente de computación, dado que la mayoría de las operaciones en el aprendizaje profundo se pueden agregar a operaciones vectoriales, las formas más comunes para construir componentes de computación en DLP digitales son la organización basada en MAC (acumulación multiplicadora), ya sea con MAC vectoriales o MAC escalares. En lugar de SIMD o SIMT en dispositivos de procesamiento general, el paralelismo específico del dominio de aprendizaje profundo se explora mejor en estas organizaciones basadas en MAC. Con respecto a la jerarquía de la memoria, dado que los algoritmos de aprendizaje profundo requieren un gran ancho de banda para proporcionar datos suficientes al componente de computación, los DLP suelen emplear un búfer en chip de tamaño relativamente mayor (decenas de kilobytes o varios megabytes) pero con una estrategia de reutilización de datos en chip dedicada y estrategia de intercambio de datos para aliviar la carga del ancho de banda de la memoria. Por ejemplo, DianNao, 16 MAC vectorial de 16 pulgadas, requiere 16 × 16 × 2 = 512 datos de 16 bits, es decir, requisitos de ancho de banda de casi 1024 GB/s entre componentes de computación y búfer. Con la reutilización en el chip, estos requisitos de ancho de banda se reducen drásticamente. En lugar de la memoria caché ampliamente utilizada en los dispositivos de procesamiento general, las DLP siempre usan la memoria de borrador, ya que podría brindar mayores oportunidades de reutilización de datos al aprovechar el patrón de acceso a datos relativamente regular en los algoritmos de aprendizaje profundo. Con respecto a la lógica de control, a medida que los algoritmos de aprendizaje profundo siguen evolucionando a una velocidad espectacular, los DLP comienzan a aprovechar la ISA (arquitectura de conjunto de instrucciones) dedicada para respaldar el dominio de aprendizaje profundo de manera flexible. Al principio, DianNao usó un conjunto de instrucciones de estilo VLIW donde cada instrucción podía terminar una capa en un DNN. Cambricon presenta el primer ISA específico de dominio de aprendizaje profundo, que podría admitir más de diez algoritmos de aprendizaje profundo diferentes. TPU también revela cinco instrucciones clave de la ISA estilo CISC.

### DLP híbridos

Los DLP híbridos resaltan por la inferencia de DNN y la aceleración del entrenamiento debido a su alta eficiencia. Las arquitecturas de procesamiento en memoria (PIM) son uno de los tipos más importantes de DLP híbrida. El concepto de diseño clave de PIM es cerrar la brecha entre la computación y la memoria de las siguientes maneras: 1) Mover componentes de computación a celdas de memoria, controladores o chips de memoria para aliviar el problema del muro de memoria. Estas arquitecturas acortan significativamente las rutas de datos y aprovechan un ancho de banda interno mucho mayor, lo que da como resultado una mejora atractiva del rendimiento. 2) Construir motores DNN de alta eficiencia mediante la adopción de dispositivos computacionales. En 2013, HP Lab demostró la asombrosa capacidad de adoptar la estructura de barras cruzadas ReRAM para la informática. Inspirándose en esta obra, se propone un trabajo para explorar la nueva arquitectura y el diseño del sistema basado en ReRAM, memoria de cambio de fase, etc.

## GPU y FPGA

A pesar de las DLP, las GPU y las FPGA también se utilizan como aceleradores para aumentar la velocidad de la ejecución de algoritmos de aprendizaje profundo. Por ejemplo, Summit, una supercomputadora de IBM para el Laboratorio Nacional de Oak Ridge, contiene 27 648 tarjetas Nvidia Tesla V100, que se pueden usar para acelerar los algoritmos de aprendizaje profundo. Microsoft construye su plataforma de aprendizaje profundo utilizando FPGA en su Azure para admitir servicios de aprendizaje profundo en tiempo real. En la Tabla 2, se comparan las DLP con las GPU y las FPGA en términos de objetivo, rendimiento, eficiencia energética y flexibilidad.
Tabla 2. DLP vs. GPU vs. FPGA :
| | Objetivo | Rendimiento | Eficiencia energética | Flexibilidad |
| DLP | aprendizaje profundo | alto | alto | específico del dominio |
| FPGA | todo | bajo | moderado | general |
| GPU | cálculo matricial | moderado | bajo | aplicaciones de matriz |

## Semiconductores atómicamente delgados para el aprendizaje profundo

Los semiconductores atómicamente delgados se consideran prometedores para el hardware de aprendizaje profundo de bajo consumo en el que se utiliza la misma estructura básica del dispositivo tanto para las operaciones lógicas como para el almacenamiento de datos. En 2020, Marega et al. publicó experimentos con un material de canal activo de área grande para desarrollar dispositivos y circuitos de lógica en memoria basados en transistores de efecto de campo de puerta flotante (FGFET). Utilizan materiales bidimensionales como el disulfuro de molibdeno semiconductor para ajustar con precisión los FGFET como bloques de construcción en los que se pueden realizar operaciones lógicas con los elementos de memoria.

## Núcleo de tensor fotónico integrado

En 2021, J. Feldmann et al. propuso un acelerador por hardware fotónico integrado para el procesamiento convolucional paralelo. Los autores identifican dos ventajas clave de la fotónica integrada sobre sus contrapartes electrónicas: (1) transferencia de datos masivamente paralela a través de multiplexación por división de longitud de onda junto con peines de frecuencia, y (2) velocidades de modulación de datos extremadamente altas. Su sistema puede ejecutar billones de operaciones de acumulación múltiple por segundo, lo que indica el potencial de la fotónica integrada en aplicaciones de inteligencia artificial con gran cantidad de datos.

## Benchmarks (puntos de referencia)

La evaluación comparativa ha servido durante mucho tiempo como base para el diseño de nuevas arquitecturas de hardware, donde tanto los arquitectos como los profesionales pueden comparar varias arquitecturas, identificar sus cuellos de botella (obstrucciones) y realizar la optimización del sistema/arquitectura correspondiente. La Tabla 3 enumera varios puntos de referencia típicos para DLP.
| Año | Benchmark | Afiliaciones | # de microbenchmarks | # de componentes benchmarks | # de aplicación benchmarks |
| 2012 | BenchNN | ICT, CAS | N/A | 12 | N/A |
| 2016 | Fathom | Harvard | N/A | 8 | N/A |
| 2017 | BenchIP | ICT, CAS | 12 | 11 | N/A |
| 2017 | DAWNBench | Stanford | 8 | N/A | N/A |
| 2017 | DeepBench | Baidu | 4 | N/A | N/A |
| 2018 | MLPerf | Harvard, Intel, and Google, etc. | N/A | 7 | N/A |
| 2019 | AIBench | ICT, CAS and Alibaba, etc. | 12 | 16 | 2 |
| 2019 | NNBench-X | UCSB | N/A | 10 | N/A |