Unidad de procesamiento tensorial
# Unidad de procesamiento tensorial

Una unidad de procesamiento tensorial o TPU (del inglés tensor processing unit) es un circuito integrado de aplicación específica y acelerador de IA (ASIC, AI accelerator application-specific integrated circuit) desarrollado por Google para el aprendizaje automático con redes neuronales artificiales y más específicamente optimizado para usar TensorFlow, la biblioteca de código abierto para aprendizaje automático.

En comparación con las unidades de procesamiento gráfico (que a partir de 2016 se usan con frecuencia para las mismas tareas), estas unidades están diseñadas para un mayor volumen de cálculo de precisión reducida (por ejemplo, desde 8 bits de precisión) y carecen de hardware para la rasterización/cartografía de textura. El término ha sido acuñado para un chip específico diseñado para el marco TensorFlow de Google. Otros diseños de aceleradores de IA están apareciendo también en otros proveedores y están dirigidos a mercados de robótica e incrustados.

Google también ha utilizado las TPU para el procesamiento de texto de Street View y ha podido encontrar todo el texto en la base de datos de Street View en menos de cinco días. En Fotos, una TPU individual puede procesar más de 100 millones de fotos al día. También se utiliza en Rank Brain, utilizado por Google para proporcionar resultados de búsqueda. La unidad de procesamiento de tensores se anunció en 2016 en Google I/O, aunque la compañía declaró que el TPU había sido utilizado dentro de su centro de datos durante más de un año antes

El tamaño del chip puede caber en una ranura de disco duro dentro de un bastidor de un centro de datos, de acuerdo con el ingeniero de hardware Norm Jouppi de Google.

Google ha declarado que sus unidades de procesamiento de tensor propietaria se utilizaron en la serie AlphaGo contra Lee Sedol de juegos Go hombre vs máquina.

La primera generación de las TPU de Google se presentó en la conferencia I/O 2016, diseñado específicamente para ejecutar redes neuronales entrenadas. Estas TPU tienen menos precisión en comparación con los cómputos realizados en una CPU o GPU normales, pero es suficiente para los cálculos que tienen que realizar.

## Arquitectura

### Primera generación

En la primera generación, la TPU es un motor de multiplicación matricial de 8 bits, controlado con un juego de instrucciones CISC por un procesador host sobre un bus PCIe 3.0. Está fabricado con un proceso de 28nm en un chip con tamaño ≤ 331 mm². Tiene un reloj a 700 MHz y un diseño térmico de potencia de 28-40 W. Tiene 28 MB de memoria en chip y 4 MB de acumuladores de 32 bits, que toman los resultados de una matriz 256 × 256 de multiplicadores de 8 bits. Las instrucciones transfieren datos hacia o desde el anfitrión o host, realizando multiplicaciones matriciales o convoluciones, y aplicando funciones de activación

### Segunda generación

La segunda generación de la TPU de Google se presentó en el I/O 2017. Esto no solo va a acelerar la aplicación de redes neuronales (inferencia), sino también la formación de estas redes. Estas TPU tienen una potencia de procesamiento de 180 TFLOPS y están interconectados a un con 11.5 PFLOPS. La topología de la arquitectura del sistema de grupos tiene esferas en forma de red de 8 × 8 TPU.

La TPU de segunda generación forman parte del Google Compute Engine, una oferta de servicios en la nube de la compañía.

Los detalles técnicos de la segunda generación actualmente (mayo de 2017) no están disponibles. Sin embargo, se supone que utiliza memoria GDDR5.

### Tercera generación

Google anunció en la conferencia inaugural del I/O 2018, su congreso de desarrolladores, la tercera generación de su TPU. Es ocho veces más potente que la generación anterior, con hasta 100 PFLOPS de rendimiento.

