¿Qué diferencia los procesadores para IA de una CPU convencional?

La inteligencia artificial está en auge desde los últimos años, ya hablemos de Machine Learning o Deep Learning, de aprendizaje o inferencia, de un SoC para móviles a una GPU. Sus aplicaciones son amplias y en diferentes mercados. Es por ello que os vamos a introducir los diferentes tipos de procesadores para la inteligencia artificial, sus características y las diferencias entre estos.

Existen diferentes formas de acelerar los algoritmos de inteligencia artificial, algunas más complejas que otras, unas más rápidas, pero menos versátiles, mientras que unas últimas preparadas para varias utilidades. Los tipos de procesador que os vamos a introducir se utilizan a diario en diferentes lugares y para diferentes aplicaciones.

Cualquier hardware sirve para la IA

Procesador

Antes de introducirnos en los diferentes tipos de hardware para la IA hemos de tener en cuenta que en el fondo estamos hablando de ejecutar programas, por lo que cualquier tipo de unidad de procesamiento puede ejecutar algoritmos dedicados a la inteligencia artificial, pero de la misma manera que no utilizamos la CPU para mover programas gráficos, tampoco se hace de cara a la inteligencia artificial.

Por lo que la afirmación de que cualquier hardware sirve para la inteligencia artificial esta cogida con pinzas, obviamente que podemos ejecutar los algoritmos en cualquier hardware, pero el nivel de eficiencia es mucho menor cuando hablamos de unidades más generalistas y que no están especializadas.

En general  son las unidades que están pensadas para el cálculo de matrices las que tienen una enorme ventaja sobre otros tipos de unidades a la hora de ejecutar algoritmos de inteligencia artificial. Más que nada por qué a nivel matemático dicho cálculo del álgebra lineal se utiliza continua y constante y reiterativamente y creednos, las CPU y las GPUs no están optimizadas para este tipo de cálculos.

Primer tipo de procesadores para la IA: arrays sistólicos

Los arrays sistólicos son un tipo de unidad de la que ya hablamos en el artículo titulado «Procesadores dedicados para IA, ¿cuáles son y cómo funcionan?» En este mismo sitio web que es HardZone, por lo que si queréis una versión más detallada de los mismos os recomendamos leer dicho artículo donde explicamos su funcionamiento de manera más detallada.

Los arrays sistólicos parten del mismo concepto base que el resto de procesadores, en este caso es un array de ALUs donde cada una no envía el resultado a los registros sino a la ALU que tiene al lado, excepto en los extremos que es por donde entran y salen los datos a tratar.

Esta configuración tiene una enorme potencia de cálculo respecto al área que ocupan y la energía que consumen, no obstante su simplicidad limita la cantidad de algoritmos de inteligencia artificial que pueden ejecutar, por lo que sus capacidades son limitadas, no en potencia sino en el tipo de red neural que pueden ejecutar y su complejidad, que no tamaño.

Segundo tipo de procesadores para la inteligencia artificial: ASICs

NVIDIA RC-18

El segundo tipo de procesadores especializado para la IA son una evolución del primer tipo, al igual que con los arrays sistólicos todas las unidades se encuentran interconectadas entre sí en una matriz, pero con una diferencia importante.

Cada elemento no es una ALU sino un procesador completo que tiene su propia memoria local y se comunica con el que tiene al lado. Por lo que en este tipo de unidades se pueden ejecutar algoritmos para la IA más complejos, por lo que hay una mayor versatilidad a la hora de programar los algoritmos con herramientas como Tensorflow y Pytorch, pero no tienen el excelente ratio de potencia respecto al área y el consumo que tienen los arrays sistólicos debido a su mayor complejidad.

¿Su principal ventaja? El hecho que sus unidades sean más complejas permite ejecutar cualquier tipo de algoritmo, mientras que en el caso de los arrays sistólicos sus capacidades están limitadas en ese aspecto. Dado que estos se diseñan pensando en el área y el consumo. En especial los arrays sistólicos los podemos encontrar dentro de otro tipo de procesadores y en cambio los ASICs especializados son unidades en sí mismos.

Tercer tipo de procesadores para la inteligencia artificial: FPGA

FPGA arquitectura

El tercer tipo de procesadores especializados para la IA son los FPGA, no solo a chips dedicados sino también a los integrados en SoCs o eFPGA. El motivo de ello es que los FPGA por su naturaleza permiten varias entradas y salidas al mismo tiempo y la interconexión entre los diferentes elementos que la forman gracias a la capacidad que tienen de configurarse.

El uso de FPGAs configurados como procesadores para la IA no es una rareza, por ejemplo Microsoft no utiliza arrays sistólicos y tampoco ASICs para la IA en sus servidores Azure sino FPGAs. ¿Su mayor desventaja? Debido a que los núcleos son configurables su rendimiento es en cuanto a área y consumo que las otras dos soluciones.

¿Su mayor ventaja? El hecho que al ser configurable podemos hacer que un FPGA se comporte como un ASIC o como un array sistólico, así pues cuando es necesaria la capacidad de programación de los ASIC el FPGA o conjunto de FPGA se puede configurar como tal, si en cambio es necesaria la potencia del array sistólico entonces el FPGA se puede configurar como dicho tipo de unidad.

Cuarto tipo de procesadores para la inteligencia artificial: GPUs

NVIDIA Mineria Stock

Las tarjetas gráficas también se pueden utilizar para el cálculo de algoritmos para la IA y no, no nos estamos refiriendo a las de NVIDIA y sus Tensor Cores, sino que todo cálculo con matrices se puede vectorizar y por tanto transformarse en un cálculo de vectores desde el punto de vista matemático para ser ejecutados en las clásicas unidades SIMD en las GPU. La eficiencia no es tan grande como el resto de unidades y su rendimiento en comparación es mucho más bajo, pero es más alto que el de una CPU.

Una de las claves para el uso de tarjetas gráficas para la IA es el soporte de formatos de datos de baja precisión, los cuales no se suelen utilizar para el cálculo gráfico, pero si en los procesadores para la inteligencia artificial. Esto conlleva a que estas GPU tengan el soporte para dichos formatos y puedan trabajar con datos a esas precisiones.

Para el cálculo de matrices, las GPUs hacen una vectorización de la matriz, ya que no se diseñaron para trabajar con matrices, sino con vectores. Dicho proceso de vectorización es necesario para que la GPU pueda realizar los cálculos, pero son unidades mucho más lentas que los otros tres tipos de unidades de los que os hemos hablado más arriba.