Blog Personal.

AMD, Deep Learning, Especulación, Futuro, GeForce, Inteligencia Artificial, Nvidia, Radeon

El Denoiser Engine

Esta es una continuación de la entrada de ayer…

Mi idea es que es posible que Coreteks tenga razón sobre otro procesador pero creo que erra acerca de la naturaleza de dicho procesador y pienso que lo que vamos a ver es lo podríamos ver es una red neural (chip especializado en IA) para limpiar el ruido de las imágenes producidas via Path Tracing.

Uno de los problemas del Path Tracing o más conocido como Monte Carlo Ray Tracing es la cantidad de muestras que son necesarias por pixel para conseguir una imagen nítida, es decir, sin ruido.

Esto provoca que se necesite una capacidad computacional enorme incluso hoy en día hasta el punto en que en cuanto a la capacidad de funcionar a tiempo real en un hardware doméstico empresas como Nvidia hablan de la aplicación de este tipo de Trazado de Rayos a tiempo real más allá de 2030…

Tal es la carga computacional de este tipo de renderizado que empresas como Disney y su filial Pixar decidieron hace unos años empezar a utilizar redes de Deep Learning para la re-construcción de imagenes para que estas imaginaran/alucinarán las imágenes completas de sus peliculas hechas en CG utilizando una muy menor cantidad de muestras.

Así pues con una imagen con muchas menos muestras por pixel se acaba consiguiendo el mismo resultado que una con muchas muestras por pixel utilizando un algoritmo de «Denoising» o de eliminación de ruido a través de Deep Learning y procesadores dedicados aplicando este algoritmo en las imagenes producidas por una GPU con muchas menos muestras.

Pues bien, el siguiente paso es añadir un procesador adicional al lado de la GPU especializado en IA pero cuyo trabajo sea tomar el búfer de imagen generado por la GPU con menos muestras y a partir del mismo alucinar/imaginar la imagen con la mayor nitidez posible cercana a si se hubiese hecho la imagen en bruto. Todo ello para conseguir casi la «misma» calidad de imagen pero con una fracción de la potencia computacional.

Actualmente las GPUs tienen arrays sistólicos llamados «Tensor Cores» por Nvidia que estan dentro de las SM de sus GPUs de arquitecturas Volta y Turing en adelante por lo que uno podría pensar que no es necesario. Desgraciadamente pese a las increibles cifras en potencia de cálculo que ofrecen siguen siendo demasiado lentas para realizar el Denoising con la soltura suficientemente alta, esto hace que para el mercado profesional y con tal de ahorrar en costes y tiempo el Denoiser Engine sea necesario.

Pe… pero Urian… ¿Que te has fumado?

Existe una patente de Disney/Pixar titulada Multi-scale architecture of denoising monte carlo renderings using neural networks donde precisamente nos hablan de este Denoiser Engine como concepto y creo que es algo que se va a estandarizar en el mundo de los gráficos en 3D.

La FIG. 14 ilustra un diagrama de bloques esquemático de un sistema de ejemplo para renderizar imágenes a través de Path Traching MC (Monte Carlo) usando muestreo adaptativo de acuerdo con algunas implementaciones.

De acuerdo a algunas implementaicones, una red neural de predicción de errores es asociado a un red neural denoiser y un renderizado Montecarlo para muestreo adaptativo. La FIG. 14 ilustra el diagrama en bloques del sistema de ejemplo 1400 para el renderizado de imagenes utilizado Path Tracing MC (Monte Carlo). El sistema 1400 puede incluir un renderizador 1410 configurado para renderizar imágenes 1412 utilizando Path Tracing MC (Monte Carlo). El sistema 1400 puede incluir un Denoiser 1420 acoplado al renderizador. El Denoiser 1420 puede incluir una red neural convolucional o una red neural perceptrón multicapa de acuerdo a varias implementaciones. El Denoiser 1420 puede ser un denoiser de un solo fotograma o un denoiser temporal…

… El Denoiser 1420 puede tomar una imagen con ruido 1412 (o una secuencia de imagenes) renderizada por el renderizador 1410 como entrada y producir la correspondiente imagen sin ruido 1422.

Es decir, lo que hacemos es asignar un co-procesador a la GPU especializado en ejecutar redes neurales y preparado para realizar el proceso de Denoising, dicho co-procesador en sus primeras versiones si lo aplicamos a las GPUs contemporáneas puede estar conectado a la GPU a través de una interfaz NVLink (Nvidia) o una interfaz xGMI (AMD) dentro de la misma tarjeta gráfica y recibir a partir de un mecanismo DMA el búfer de imagen con ruido para copiarlo a su memoria y aplicar el proceso de eliminación de ruido sobre la imagen generada por la GPU.

¿Pero cual puede ser este co-procesador? Pues va a tener que ser un chip especializado en redes neurales y aquí entramos en el chip que Coreteks utilizó en su video para ilustrar su erróneo «Traversal Engine» para explicar que existe otro procesador en las RTX 30×0.

El chip utilizado para ilustrar es el llamado RC18, un chip no comercial pero de investigación que Nvidia presento el año pasado y que son 36 pequeños chips en modo MCM conectados entre si utilizando un NoC (Red en un Chip) para la intercomunicación entre si.

La clave del RC18 no son sus chips sino la intercomunicación de los chips entre si y el consumo energético de la misma pero Nvidia puede hacer una version monolitica del mismo o un chip parecido.

Cada Chip es un Array Sistólico de 4×4 Processing Elements (PE) y una CPU del tipo RISC-V haciendo de director de orquesta, aparte que cada PE tiene 8 unidades ALUs del tipo MAC (Multiply ACcumulator) y un búfer de acumulación que le sirve de memoria.

En un Array Sistólico las ALUs no leen y escriben sus datos en los registros sino que los pasan como parametros de entrada de otras ALUs y reciben los datos como parametros de salida de otras ALUs.

El RC18 no tiene memoria externa por el hecho que ya la tiene dentro de cada uno de los PEs, pese a que queda muy bonito utilizar el RC18 creo más bien que los primeros Denoiser Engines que vamos a ver van a ser completamente monolíticos en forma y van a tener una memoria propia asignada en el que el búfer de imagen o porciones del mismo van a ser copiados via el mecanismo DMA de la GPU a la RAM del Denoiser Engine y una vez terminado el proceso de limpieza de ruido se va a copiar la imagen resultante de vuelta a la memoria de la GPU.

Otra posibilidad de la que hablo Coreteks en su video de cara al «Traversal Engine» pero aplicado a nuestro Denoiser Engine es colocar tarjetas de expansión a otro puerto PCIe diferente al de la gráfica.

En este caso la comunicación entre ambas partes se haría a través de la comunicación con los puertos PCIe.

El mercado objetivo para este tipo de co-procesador es el de las granjas de renderizado profesionales y para los profesionales del modelado 3D donde se va a ofrecer la capacidad de renderizar escenas en mucho menos tiempo. Pero no es el único mercado objetivo, en realidad cualquier mercado donde tengan justificación los «Tensor Cores» van servir para que el Denoiser Engine tenga sentido pero para que tenga mucho más sentido el Denoiser Engine ha de tener una potencia muy superior a cualquier solución de Nvidia (o AMD) con una gráfica dedicada utilizando sus Tensor Cores en un ratio que ha de ir de 2X a 10X en el rendimiento de la GeForce de gama más alta.

¿Pero como sería la organización del chip? Bueno, Nvidia solo tendría que utilizar una GPU como base pero cambiando algunas cosas, no pocas.

  • Eliminación del Procesador de Comandos para Gráficos.
  • Eliminación de las unidades de función fija para gráficos (teselador, unidades de rasterizado, unidades de filtraje de texturas, RT Core y ROPS) así como la eliminación de su sistema de comunicación con la cache.
  • Eliminación de las unidades CUDA (FP32 e Int32) o su equivalente en otra arquitectura.
  • Se mantendrían solo los Tensor Cores.
  • Eliminación del Adaptador de Pantalla.
  • Eliminación de los Codec de Video por hardware.
  • Cada unidad SM o grupo de SM tiene un núcleo RISC-V (o F32 en el caso de AMD).

Actualmente la GPU más potente de Nvidia (La A100) tiene una potencia de 624 TFLOPS en FP16 utilizando los Tensor Cores, el Denoiser Engine no debería bajar de los 1 PFLOP en FP16 e incluso acercarse a os 2 PFLOPS para la primera generación de este procesador de apoyo, pero tened en cuenta que todo esto es es una especulación por mi parte.

Ahora bien… ¿Creo que lo vamos a ver en la gama RTX 30×0? Sinceramente lo dudo pero no descarto nada por si acaso pero tengo muy claro que lo veremos a corto plazo, quizás para el año que viene pero no creo que tardemos en ver una solución así.

Esto es todo, tenéis los comentarios de esta misma entrada para comentar y no olvidéis que tenemos Discord.

5 2 votes
Article Rating
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Set

El detalle es que los desarrolladores no van invertir tiempo o no van implementar una tecnica cerrada que solo funciona en un hardware, desde que salio las RTX Nvidia esta investigando un denoising por IA pero no se si tendra tanto futuro hasta para gastar silicio en un chip aparte. Los desarrolladores se han decidido por denoising generalizados que funciona en las ALUs tradicionales de la GPU, asi que funcionan en cualquier GPU. Los resultados son buenos, Metro Exodus solo usa 1 sample por pixel y no tiene ruido apreciable. Talvez muy futuro cuando el hardware en general tengan “Tensor… Read more »