Blog Personal.

Deep Learning, Futuro, Inteligencia Artificial, Nvidia

DLSS 2.0, Arrays Sistólicos y el fúturo de las GPUs.

Me he visto la presentación de Nvidia acerca del DLSS 2.0 y me ha parecido algo simplemente impresionante y explica muchas cosas o más bien pequeños detalles que luego comentare y que he visto en presentaciones de Nvidia y que la gente ha pasado por alto.

Obviamente es mucho mejor que la primera implementación que requería tener que entrenar la IA para cada juego lo que ha efectos prácticos inutilizabá por completo la idea, la nueva versión es completamente general y desde el momento en que se alimenta de la enorme tasa de cálculo de los Tensor Çores para hacerlo resulta en una ventaja increíble para Nvidia dado que su competencia directa, AMD, sigue con el viejo modelo del SIMD sobre registro incluso en las futuras RDNA2.

Por SM/CUTuringRDNA2Ratio
ALUs en FP3264641x
ALUs en FP165121288x
ALUs en Int810242564x
ALUs en Int420485124x

Para entenderlo hemos de tener en cuenta que la reconstrucción de la imagen a mayor resolución obviamente se hace cuando la imagen ya ha sido generada a tiempo real a menor resolución. Es en momento de la reconstrucción cuando los «Tensor Cores» que no son otra cosa que arrays sistólicos toman el poder y generan la imagen a mayor resolución en una fracción del tiempo del que le costaría renderizar esta a mayor resolución de manera nativa.

Es decir, dependiendo de la potencia de dichos «Tensor Cores» aka Arrays Sistólicos que tengamos en el sistema, el tiempo que necesitarán para la reconstrucción será mayor o menor, obviamente también dependerá de la resolución a la que queramos re-construir pero ya os podéis dar una idea de la desventaja en potencia de cálculo que tienen las GPUs de AMD en este aspecto al no disponer de Tensor Cores/Arrays Sistólicos.

En realidad vas a poder ejecutar el algoritmo pero en un tiempo mucho mayor que lo que tarde en resolver la escena utilizando los Tensor Cores/Arrays Sistólicos. Lo sorprendente es que como ya comente en una entrada sabemos que Intel en sus Xe HP van a tener ese tipo de unidades por lo que Intel cuando lance sus GPUs dedicadas al mercado podrá utilizar algoritmos similares.

¿Pero que es lo que ha añadido Nvidia a la receta para mejorar? Pues los vectores de movimiento o desplazamiento, información también utilizada en el Checkerboard Rendering que consiste en conocer de cada objeto cual ha sido su desplazamiento de un fotograma. ¿Y como podemos saberlo? Pues con un búfer que nos marca la posición de cada objeto en cada momento y sabiendo la posición del punto A al punto B podemos conocer la distancia que han recorrido.

En el Checkerboard se utiliza esto para renderizar los pixeles de manera alterna de un fotograma respecto al otro, de esta manera la carga sobre los Pixel/Fragment Shaders se reduce a la mitad. Pero en el DLSS 2.0 es una entrada de información más para que así el sistema alucine de manera más correcta los pixeles, requiere trabajar con múltiples muestras y trabajar con el fotograma anterior pero lo mejor es que da una mayor fidelidad de imagen y acelerá la velocidad en la que la IA soluciona la imagen, no solo va más rápido sino que se ve mejor y sin tener que depender del lanzamiento de un nuevo hardware, sinceramente…

Y esto cambia por completo el paradigma dado que los que llevan años en la ignorancia de pedir más y más núcleos se van a enfadar mucho.

Pero hay una razón para ello, los Tensor Cores ocupan una porción de lo que es la unidad SM en comparacion con el resto y sale más rentable renderizar a menos resolución y re-construir que hacerlo en nativo llegados a ciertas resoluciones debido a que la complejidad de la GPU sería demasiado grande para obtener el resultado en nativo, esto no significa que la cantidad de SM en cada generación se quede estancada pero Nvidia le va a dar una importancia a los Tensor Cores, aumentando su tamaño de una generación a otra para que el tiempo de reconstrucción disminuya y con ello se puedan ganar unos preciosos milisegundos en el renderizado.

Cuando Nvidia presento los Tegra Orin, casi nadie se percato de un detalle.

Hay un modelo muy parecido al actual Drive PX Pegasus que son 2 SoC Tegra con 2 GPUs simétricas, si 2 Tegra Orin con la configuración máxima alcanzan los 400 TOPS, entonces las GPUs en el Drive PX de gama más alta alcanzan los 1600 TOPS, es decir, 800 TOPS cada una y 800 TOPS son 400 TFLOPS en FP16 via Tensor Cores. Dado el ratio de 8:1 con las unidades SM esto son la friolera de… ¡50 TFLOPS en FP32!

Lo cual es una burrada enorme, miremos las especificaciones que se «filtraron» a través de un benchmark de lo que va a ser supuestamente la GA100.

Unos 124 SM a 1.11 Ghz nos da lo siguiente:

(1,11*10^9)*124*64*2= ¡17,61 TFLOPS en FP32 (nucleos CUDA)!

Vale que la velocidad en la versión final será más alta pero necesitaríamos una potencia en total de 3 veces la velocidad de reloj o aumentar enormemente la cantidad de núcleos. ¿Como se explica entonces la enorme cantidad de TOPS que aparece en la diapositiva? La única explicación razonable es que Nvidia vaya a aumentar el ratio de Tensor Cores por unidades CUDA en cada SM, posiblemente de 8:1 a 16:1. Es el cambio más fácil de hacer y la ventaja es que esto acelerá el DLSS 2.0 ya que va a permitir un tiempo de resolución más bajo que con Turing, permitiendo que tarjetas de gamas más bajas adquieran mayores resoluciones de salida o permitiendo renderizar á menor resolución de entrada para obtener mayor tasa de fotogramas.

¿Y esto cuando lo veremos en AMD? Pues en RDNA 2 no, en CDNA que ha perdido la capacidad de renderizar sabemos que veremos dicho tipo de unidades, pero es una ramificación distinta para el mercado HPC y fuera del mercado de las GPUs por lo que tendremos que esperar posiblemente a RDNA 3 para ver dichas unidades en una GPU de AMD, lo que va a resultar en una enorme desventaja para AMD incluyendo las consolas de videojuegos que se basan en RDNA 2 y por tanto carecen de esta capacidad.

Es decir, no me extrañaría ver una eventual PS5 Pro en unos años o una Xbox Series XL donde su gran «novedad» sea la incorporación de arrays sistólicos/Tensor Cores/Unidades Matriciales para realizar algoritmos similares al DLSS 2.0 y poder conseguir una mayor tasa de fotogramas que los modelos originales en vez de aumentar considerablemente la cantidad de Compute Units.

El otro motivo por el cual aumentar la cantidad de Tensor Cores es el «Denoising» para el trazado de rayos o eliminación de ruido. Nvidia lo aplica solamente para Raytracing que no ejecuta en tiempo real por el momento y por tanto para el rendering offline utilizado en películas y demás. La idea del Denoising es que en el trazado de rayos si utilizamos una cantidad de muestras por pixel relativamente baja lo que obtenemos es una imagen completamente granulada con una cantidad enorme de espacios en pantalla sin valor.

Esto de momento no es un problema por el uso del renderizado híbrido donde los pixeles que no reciben la información del trazado de rayos se encuentran previamente renderizados via rasterización. Es decir, el llamado trazado de rayos a tiempo real que estamos viendo actualmente no es más que un parche sobre la rasterización y no es realmente trazado de rayos a tiempo real. Simplemente el trazado de rayos a tiempo real con pocas muestras se ve horrible y es impráctico en las GPUs actuales, el motivo de ello es que se necesita una cantidad ingente de muestras por pixel para tener la imagen limpia.

¿Entonces? Pues de la misma manera que hacemos que para una mayor resolucion lo que son los arrays sistólicos se imaginen pixeles aquí es lo mismo, la idea es renderizar a menos muestras por pixel para luego reconstruir la imagen con mayor definición via IA.

De momento nos quedan varios años para el salto al Trazado de Rayos y el abandono de la rasterización y por el momento estas soluciones son para renderizadores que no funcionan a tiempo real pero son el referente de cara al futuro y el primer paso va a ocurrir en las estaciones de trabajo, de ahí otro motivo para Nvidia para aumentar el ratio de arrays sistólicos/Tensor Cores en un futuro cercano.

Esto es todo, tenéis el Discord y los comentarios de esta entrada para comentarla.

0 0 vote
Article Rating
11 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Daniel

Mm, suena muy interesante, pero (probablemente me equivoque), juraría haber leído por aquí que las nuevas consolas llevan arrays sistolicos

Ger

Buenas Urian muy interesante el DLSS2.0 y una pena que las nuevas consolas no puedan tenerlo pues parece un gran avance. Dicho esto, podrías hacer una entrada DLSS 2.0 vs FIDELITY FX? Es posible que Sony y Microsoft junto con AMD tengan una solución custom para PS5 y XBOX SERIES X, es decir, que puedan llegar a añadir tensor cores (o algo similar) en RDNA2? Gracias

Juan

Muy interesante Urian. Gracias por la entrada!

Steven

Hola AMD talves no tienen tantos algoritmos y por eso no los incluye

Cuesta

Genial artículo Urian. Vi el análisis de The Tech Chap y también me pareció impresionante.
Dejo el vídeo por si a alguien le interesa.
https://www.youtube.com/watch?v=eS1vQ8JtbdM

Set

Lo ultimo, en realidad sea Ray Tracing hibrido o no, hay siempre ruido, si tu como en Battlefield 5 usas solo reflejos rt si no usas denoising, Tendea ruido en los reflejos, asi que todos los juegos sean hibridos o no utilizan siempre filtros denoising para eliminar el ruido, que son filtros via shaders tradicionales de la GPU(FP32), de momento no se esta utlizando denoising IA, ni siquiera en juegos con iluminación completa por Ray Tracing (sin rasterizacion) como Quake 2, utiliza filtros TAA + mas un filtro basado en esfericas para la iluminación global: https://youtu.be/FewqoJjHR0A Sobre el DLSS 2.0… Read more »

Charli

Hablas de una ps5 pro o xbox xl, pero no de una hipotética swicth pro dlls2, ya te lo comenté en entradas anteriores, es difícil añadir estos arrays sistolicos en swicth? Si se pudiera se podrían sacar resoluciones 720p o menores(se da mucho en swicth) y que se reescalaran a 4k o 2k o mínimo 1080p, incluso juegos que ya hay mediante parche? Se verían mejor que una ps5 pro? Sería tremendo una portátil que demuestre tal potencia!!!!!!!

Charli

Después de ver el video, soy yo o incluso desde 540p reescalando a 1080p, se ve incluso mejor que 1080p nativos??? Increíble todos los fps extras que se consiguen, esto es un salto gráfico exponencial altísimo!!!!!

MACUZO-AUC

Es bastante decepcionante, pero interesante para una primera etapa primitiva de IA. Si construyes una función de reconstrucción como es este tipo de escalado, es una muy pequeña etapa referente al universo de soluciones requeridas para las fotografía. Se me ocurren varias utilidades: Mejorar el procesamiento de la informacion de los tonos de imagen, un IA-TONEMAP, implementando modelos de percepción y modelos biológicos mucho más dinámicos y precisos. Prácticamente tendrías una respuesta de rango dinámico como si fuese un ojo real, extrapolado a una pantalla. Tanto que podría ser útil para reconstruir las zonas HDR correctamente en los BACKLIGHT de… Read more »

Big crunch

Nvidia sí utiliza denoising en tiempo real, es por eso que se puede hacer raytracing en videojuegos. La resolución de rayos es muy baja comparada con prerenderizados. https://youtu.be/YjjTPV2pXY0 Las rdna 2 también lo hacen. El Minecraft es 100% raytracing. Funciona a 45 fps y full hd en xbox series x. La 2080 ti alcanza 56, así que es acorde a la diferencia de potencia bruta entre gpus. Es decir, rdna 2 no lo hace nada mal en raytracing, similar a nvidia. Y probablemente también similar en IA por la razón que sea En cuanto al dlss me pregunto si el… Read more »

Charli

Urian quién te ha molestado tanto como para quitar comentarios???? Set? Si te molestan ciertos comentarios borralos, hay algunos que aportan a veces cosas interesantes.