
A la hora de hablar de procesadores en muchas ocasiones aparecen conceptos como CPU, GPU, TPU y NPU. Cada una de estas siglas hacen referencia a un tipo de procesador que es adecuado para un tipo de aplicación específica, incluyendo los modelos de aprendizaje automático. La CPU y GPU son los procesadores que se encuentran en los ordenadores domésticos, aunque cada vez existen más variedad de TPU y NPU.
Tabla de contenidos
CPU
La CPU (Unidad Central de Procesamiento, del inglés Central Processing Unit) es el cerebro de los ordenadores o dispositivos electrónicos. Es el microprocesador que se encarga de procesar las instrucciones de los programas. Siendo la responsable de realizar las operaciones y coordinar otros componentes del ordenador.
Las CPUs están compuestas de una serie de unidades funcionales, como la unidad de control (CU, por las siglas en inglés de Control Unit), la unidad aritmético-lógica (ALU, por las siglas en inglés de Arithmetic Logic Unit) y la unidad de caché, que trabajan juntas para procesar las instrucciones. La CU gestiona el tráfico de información entre los registros de la CPU y las conexiones con la ALU. Por otro lado, la ALU se encarga de realizar las operaciones matemáticas y lógicas necesarias para completar las instrucciones. Finalmente, la memoria caché es una memoria de alta velocidad que se utiliza para almacenar temporalmente los datos e instrucciones más utilizados, permitiendo a la CPU acelerar la ejecución de las instrucciones, con lo permite aumentar el rendimiento general del sistema.

GPU
Las GPUs (Unidad de Procesamiento Gráfico, del inglés Graphics Processing Unit) son unos procesadores especializados en procesamiento de gráficos, vídeos y animaciones. Su principal uso es para mejorar el rendimiento de aplicaciones que requieren un gran procesamiento gráfico, como pueden ser los juegos, aplicaciones de animación 3D y modelado.
A diferencia de las CPUs, diseñadas para realizar tareas de propósito general, las GPUs están diseñadas para realizar muchas operaciones en paralelo de forma eficiente. Justamente el tipo de problemas que se encuentra al procesar gráficos.
Las GPU modernas también suelen incluir memoria de alta velocidad dedicada, que es capaz de proporcionar un ancho de banda de datos mucho más alto que la memoria principal de la computadora. Esto permite que la GPU acceda a los datos de manera más rápida y eficiente, lo que ayuda a mejorar el rendimiento general de la computadora.
TPU
Una TPU (Unidad de Procesamiento de Tensores, del inglés Tensor Processing Unit) es un procesador diseñado específicamente para el procesamiento de tareas de inteligencia artificial que requieren grandes cantidades de operaciones de multiplicación de matrices.
A diferencia de las CPUs o GPUs, diseñadas para realizar una amplia gama de tareas, las TPU están altamente optimizadas para realizar operaciones matemáticas en grandes conjuntos de datos en paralelo. Algo que las convierte en una solución ideal para realizar tareas de reconocimiento de voz, reconocimiento de imágenes o traducción de idiomas.
NPU
Una NPU (Unidad de Procesamiento Neural, del inglés Neural Processing Unit) es un procesador creado especialmente para acelerar el procesamiento de redes neuronales profundas en aplicaciones de inteligencia artificial. Permitiendo la ejecución de modelos de una manera más eficiente que las GPUs o GPUs.
Las NPU se utilizan en aplicaciones de inteligencia artificial en las que el procesamiento de grandes cantidades de datos en tiempo real es esencial. Ejemplos de estas aplicaciones incluyen la conducción autónoma, la video vigilancia y tareas de automatización industrial.
Diferencias entre TPU y NPU
Aunque tanto las TPU como las NPU están diseñadas para trabajar especificaste con modelos de aprendizaje profundo, por lo que pueden parecer el mismo tipo de procesador, existen algunas diferencias entre ellas:
- Propósito: Las TPU están diseñadas para acelerar el procesamiento de operaciones tensoriales, que se utilizan en el procesamiento de imágenes y en el aprendizaje profundo basado en convoluciones. Las NPU, por otro lado, están diseñadas específicamente para acelerar el procesamiento de redes neuronales profundas.
- Arquitectura: Las TPU están diseñadas como un sistema en chip (SoC, del inglés System on a Chip) que contiene una gran cantidad de núcleos de procesamiento paralelo, mientras que las NPU se construyen generalmente como un procesador separado o como parte de un SoC. Esto significa que las TPU suelen tener una mayor cantidad de núcleos de procesamiento que las NPU.
- Rendimiento: Las TPU son conocidas por ser muy eficientes en términos de energía y ofrecen un rendimiento excepcional para aplicaciones específicas, como el aprendizaje profundo. Las NPU, por otro lado, pueden ser menos eficientes en términos de energía, pero son muy versátiles y pueden utilizarse en una variedad de aplicaciones de inteligencia artificial.
Usos en aprendizaje automático de las GPU, GPU, TPU y NPU
Los modelos de aprendizaje automático se pueden ejecutar tanto en GPU, GPU, TPU como NPU, aunque, dependiendo el problema, puede ser más eficiente un tipo de procesador u otro. Actualmente los ordenadores domésticos suelen contar únicamente con CPU y GPU, por lo que son los más utilizados. Aunque algunos SoC, como los procesadores M de Apple, ya empiezan a incluir NPU. Los principales usos en aprendizaje automático de cada uno de los procesadores son:
- CPU: Las CPUs son la unidad de procesamiento principal de los ordenadores y se pueden utilizar para realizar cualquier operación, aunque no sea la solución más eficiente. En el aprendizaje automático, las CPU se utilizan en los ordenadores personales para el procesado de datos de baja intensidad. Suele ser el tipo de procesador que usamos para las tareas básicas en Python u otro lenguaje.
- GPU: Las GPUs se utilizan para acelerar el procesamiento de datos en aplicaciones de aprendizaje profundo. Esto se debe a que los algoritmos de aprendizaje profundo suelen requerir una gran cantidad de operaciones matriciales, que pueden procesarse de manera más eficiente en una GPU que en una CPU. Aunque no son la mejor opción, es un componente que se encuentra habitualmente en los ordenadores domésticos.
- TPU: Las TPU se utilizan para acelerar el procesamiento de operaciones tensoriales. Son especialmente eficientes en tareas como el procesamiento de grandes conjuntos de datos, la construcción de modelos de aprendizaje profundo y la ejecución de inferencias.
- NPU: Las NPU se utilizan para acelerar el procesamiento de redes neuronales profundas. Las NPU son capaces de procesar grandes cantidades de datos y realizar operaciones matriciales en paralelo, lo que las hace especialmente eficientes para tareas como el procesamiento de imágenes y el reconocimiento de voz.
Conclusiones
Antiguamente los ordenadores contaban solamente con una CPU, pero para algunas aplicaciones estos no son los procesadores más adecuados. En los ordenadores domésticos suele existir también una GPU, que es más eficiente para entrenar modelos de aprendizaje profundo. Además de estos también existen procesadores específicos como TPU y NPU especialmente diseñados para procesar operaciones con tensores y redes neuronales.
Imagen de Colin Behrens en Pixabay
La entrada carece de una mención a las QPU (Quantum Processing Units), los procesadores que impulsan los computadores cuánticos. Dado que se analizan las diferencias entre CPU, GPU, TPU y NPU, la ausencia de las QPU resulta una omisión notable. Estas unidades son clave en el ámbito de la computación cuántica y que debería incluirse para ofrecer una visión completa de los procesadores especializados.
Hola Carlos, tienes razón en que no he incluido los procesadores cuánticos en esta comparativa. A la fecha de publicación, los QPU tenían un interés práctico limitado en aplicaciones de Machine Learning e Inteligencia Artificial, que son los temas principales tratados en el blog.
No obstante, la computación cuántica es un tema que he tratado en el blog. Por ejemplo, aborde los fundamentos de la computación cuántica en un entrada anterior: Fundamentos de computación cuántica.