¿Qué es un Tensor Core y para qué sirve?

¿Qué es un Tensor Core?

Los Tensor Cores o Núcleos Tensores de son microprocesadores dentro de determinadas familias de productos Nvidia que están preparados para hacer operaciones y procesar datos agrupados en tensores, lo cual ayuda a acelerar la carga de trabajo en determinadas operaciones con matrices de gran tamaño, que es al final lo que es un tensor: diferentes matrices operadas entre sí, o dicho de otra manera, grupos enormes de datos interrelacionados entre ellos mismos. Estos datos sobre todo se usan en los campos de la inteligencia artificial o redes neuronales.

En un mismo ordenador de hoy en día tenemos una gran variedad de procesadores, los cuales tienen diferentes funciones y algunos pueden hacen determinadas operaciones de forma más eficiente y rápida, como los núcleos tensores. Operar con tensores no es algo nuevo, pero en determinadas aplicaciones actuales ha aparecido la demanda de procesar estos datos más rápido, como en el campo de la IA, que ha obtenido una gran relevancia en los últimos años. Antes para esta tarea se utilizaban núcleos de tarjetas gráficas convencionales, pero estos no son suficiente para algunas tareas que requieren más potencia, y estos núcleos específicos para procesar tensores, como explica Nvidia en su propia web sobre tensores, pueden ofrecer hasta 32 veces más rendimiento y son mucho más eficientes.

Un caso similar de desarrollo de nuevos núcleos en tarjetas gráficas podrían ser los núcleos RT de Nvidia, los cuales están pensados para realizar tareas de trazado de rayos en tiempo real con su tecnología RTX. Esta tarea, al igual que el cálculo con tensores, se puede hacer en tarjetas gráficas sin estos núcleos, pero a una velocidad mucho menor.

Estos núcleos, que antes estaban pensados para tarjetas gráficas de servidores, también han llegado para acelerar tareas de IA domésticas en la familia RTX, un buen ejemplo de ello serían tecnologías como por ejemplo el DLSS de Nvidia, que por inteligencia artificial mejora la resolución de la imagen con una carga de rendimiento mínima, al igual que el FSR de AMD, aunque este último no hace uso de inteligencia artificial como explicábamos en la review anterior.

¿Para qué sirve un Tensor Core?

Los Tensor Cores son núcleos de procesamiento especializados, son como pequeñas CPUs preparadas y diseñadas para procesar un tipo de dato en especial, como estas tarjetas Nvidia Ampere y para usarse en tareas muy específicas, que en este caso es el cálculo y operación de tensores.

Los tensores son objetos algebraicos que describen una relación entre objetos de un mismo espacio vectorial en tres dimensiones o más, o explicado de otra forma más sencilla, es una forma de relacionar objetos entre sí. Por ejemplo, imaginemos que tenemos un número, ese número se conoce como escalar y por sí solo no tiene relación, pero si juntamos varios escalares podemos formar un vector, el cual está relacionando a esos tres escalares entre sí. Un ejemplo de vector podría ser el movimiento de un coche en un tiempo determinado, con un componente del vector siendo la distancia recorrida en x, otro componente la distancia recorrida en y, y un componente final el tiempo que ha tardado en recorrer esa distancia.

Con eso tendríamos un vector que representa una información a partir de 3 escalares. Si juntamos ese vector con otros podemos formar una matriz, la cual contendrá diferentes vectores, relacionándolos entre ellos. Volviendo al ejemplo anterior, ahora tendríamos una matriz, que podríamos ver como una carretera, en la que tenemos en cada columna un vector diferente que describe el movimiento de un coche como dijimos antes que a si vez contiene los tres datos anteriores de posición recorrida en x e y, y el tiempo. Gracias a la matriz estaríamos relacionando todos esos datos.

Ahora, un tensor resultaría de si mezclamos varias matrices entre sí, es decir, imaginemos que ahora con los ejemplos anteriores empezamos a mezclar carreteras, con sus coches dentro, todos esos datos relacionados entre sí, eso es un tensor, y si hacemos eso otra vez y relacionamos ese tensor con otro obtendremos un tensor más grande pudiendo repetir ese proceso indefinidamente pudiendo llegar a vectores de miles de dimensiones.

Todo lo que hemos estado haciendo en los pasos anteriores ha sido relacionar datos entre ellos, y un tensor permite relacionar gran cantidad de datos en una sola unidad, como en el ejemplo anterior que hemos relacionado el trayecto de diferentes coches en varias carreteras en un tensor.

Tener núcleos específicos para procesar estos entramados de datos aceleran mucho la operación con ellos que de otra forma tendrían que separarse y desmembrarse para que un procesador convencional procesara cada dato individualmente del tensor.