El supermuestreo de aprendizaje profundo ( DLSS ) es una familia de tecnologías de mejora y escalado de imágenes de aprendizaje profundo en tiempo real desarrolladas por Nvidia que están disponibles en varios videojuegos . El objetivo de estas tecnologías es permitir que la mayoría de la secuencia de gráficos se ejecute a una resolución más baja para un mayor rendimiento y luego inferir una imagen de mayor resolución a partir de esto que se aproxime al mismo nivel de detalle que si la imagen se hubiera renderizado a esta resolución más alta. Esto permite configuraciones gráficas más altas y/o velocidades de cuadros para una resolución de salida determinada, según la preferencia del usuario. [1]
A partir de septiembre de 2022, la primera y segunda generación de DLSS están disponibles en todas las tarjetas de la marca RTX de Nvidia en los títulos compatibles, mientras que la tercera generación presentada en el evento GTC 2022 de Nvidia es exclusiva de las tarjetas gráficas de la serie RTX 40 de la generación Ada Lovelace . [2] Nvidia también ha presentado la súper resolución dinámica de aprendizaje profundo ( DLDSR ), una tecnología relacionada y opuesta donde los gráficos se renderizan a una resolución más alta y luego se reducen a la resolución de pantalla nativa utilizando un algoritmo de reducción de resolución asistido por inteligencia artificial para lograr una calidad de imagen más alta que la renderización en resolución nativa. [3]
Nvidia promocionó DLSS como una característica clave de las tarjetas de la serie GeForce 20 cuando se lanzaron en septiembre de 2018. [4] En ese momento, los resultados se limitaron a unos pocos videojuegos (a saber, Battlefield V [5] y Metro Exodus ) porque el algoritmo tenía que ser entrenado específicamente en cada juego en el que se aplicaba y los resultados generalmente no eran tan buenos como el simple aumento de resolución. [6] [7]
En 2019, el videojuego Control se lanzó con trazado de rayos en tiempo real y una versión mejorada de DLSS, que no utilizaba los núcleos Tensor. [8] [9]
En abril de 2020, Nvidia anunció y envió una versión mejorada de DLSS llamada DLSS 2.0 con la versión del controlador 445.75. DLSS 2.0 estaba disponible para algunos juegos existentes, incluidos Control y Wolfenstein: Youngblood , y luego se agregaría a muchos juegos y motores de juego recién lanzados como Unreal Engine [10] y Unity . [11] Esta vez, Nvidia dijo que usó los núcleos Tensor nuevamente y que la IA no necesitaba ser entrenada específicamente en cada juego. [4] [12] A pesar de compartir la marca DLSS, las dos iteraciones de DLSS difieren significativamente y no son compatibles con versiones anteriores. [13] [14]
Al usar DLSS, según el juego, los usuarios tienen acceso a varios ajustes de calidad predeterminados, además de la opción de configurar manualmente la resolución mejorada y renderizada internamente:
La primera iteración de DLSS es un escalador de imágenes predominantemente espacial con dos etapas, ambas basadas en redes neuronales convolucionales de autocodificador . [21] El primer paso es una red de mejora de imágenes que utiliza el cuadro actual y los vectores de movimiento para realizar la mejora de bordes y el anti-aliasing espacial . La segunda etapa es un paso de mejora de la imagen que utiliza el único cuadro sin procesar de baja resolución para mejorar la imagen a la resolución de salida deseada. El uso de un solo cuadro para la mejora de la escala significa que la propia red neuronal debe generar una gran cantidad de información nueva para producir la salida de alta resolución, lo que puede dar lugar a ligeras alucinaciones, como hojas que difieren en estilo del contenido de origen. [13]
Las redes neuronales se entrenan para cada juego generando un "cuadro perfecto" mediante el supermuestreo tradicional de 64 muestras por píxel, así como los vectores de movimiento para cada cuadro. Los datos recopilados deben ser lo más completos posible, incluyendo tantos niveles, horas del día, configuraciones gráficas, resoluciones, etc. como sea posible. Estos datos también se amplían utilizando ampliaciones comunes como rotaciones, cambios de color y ruido aleatorio para ayudar a generalizar los datos de prueba. El entrenamiento se realiza en la supercomputadora Saturn V de Nvidia. [14] [22]
Esta primera iteración recibió una respuesta mixta, con muchos criticando la apariencia a menudo suave y los artefactos en ciertas situaciones; [23] [6] [5] probablemente un efecto secundario de los datos limitados de usar solo una entrada de cuadro para las redes neuronales que no pudieron ser entrenadas para funcionar de manera óptima en todos los escenarios y casos extremos . [13] [14]
Nvidia también demostró la capacidad de las redes de codificadores automáticos para aprender la capacidad de recrear la profundidad de campo y el desenfoque de movimiento , [14] aunque esta funcionalidad nunca se ha incluido en un producto lanzado públicamente. [ cita requerida ]
DLSS 2.0 es una implementación de anti-aliasing upsampling temporal (TAAU), que utiliza datos de fotogramas anteriores de forma extensiva a través de fluctuaciones de subpíxeles para resolver detalles finos y reducir el aliasing. Los datos que recopila DLSS 2.0 incluyen: la entrada de baja resolución sin procesar, vectores de movimiento , búferes de profundidad e información de exposición /brillo. [13] También se puede utilizar como una implementación TAA más simple donde la imagen se renderiza a una resolución del 100 %, en lugar de ser sobremuestreada por DLSS; Nvidia lo denomina DLAA (anti-aliasing de aprendizaje profundo). [24]
TAA(U) se utiliza en muchos videojuegos y motores de juegos modernos , [25] sin embargo, todas las implementaciones anteriores han utilizado alguna forma de heurística escrita manualmente para evitar artefactos temporales como imágenes superpuestas y parpadeos . Un ejemplo de esto es la fijación de vecindad que evita forzosamente que las muestras recopiladas en fotogramas anteriores se desvíen demasiado en comparación con los píxeles cercanos en fotogramas más nuevos. Esto ayuda a identificar y corregir muchos artefactos temporales, pero eliminar deliberadamente detalles finos de esta manera es análogo a aplicar un filtro de desenfoque y, por lo tanto, la imagen final puede aparecer borrosa cuando se utiliza este método. [13]
DLSS 2.0 utiliza una red neuronal con autocodificador convolucional [23] entrenada para identificar y corregir artefactos temporales, en lugar de heurísticas programadas manualmente como se mencionó anteriormente. Debido a esto, DLSS 2.0 generalmente puede resolver los detalles mejor que otras implementaciones de TAA y TAAU, al mismo tiempo que elimina la mayoría de los artefactos temporales. Es por eso que DLSS 2.0 a veces puede producir una imagen más nítida que la renderización a resoluciones más altas o incluso nativas utilizando TAA tradicional. Sin embargo, ninguna solución temporal es perfecta y los artefactos (en particular, las imágenes fantasma) aún son visibles en algunos escenarios cuando se utiliza DLSS 2.0.
Debido a que los artefactos temporales ocurren en la mayoría de los estilos y entornos artísticos de manera similar, la red neuronal que impulsa DLSS 2.0 no necesita volver a entrenarse cuando se utiliza en diferentes juegos. A pesar de esto, Nvidia envía con frecuencia nuevas revisiones menores de DLSS 2.0 con nuevos títulos, [26] por lo que esto podría sugerir que se pueden realizar algunas optimizaciones de entrenamiento menores a medida que se lanzan los juegos, aunque Nvidia no proporciona registros de cambios para estas revisiones menores para confirmarlo.
Los principales avances en comparación con DLSS 1.0 incluyen: retención de detalles significativamente mejorada, una red neuronal generalizada que no necesita volver a entrenarse por juego y una sobrecarga ~2 veces menor (~1-2 ms frente a ~2-4 ms). [13]
También debe tenerse en cuenta que las formas de TAAU como DLSS 2.0 no son escaladores en el mismo sentido que las técnicas como ESRGAN o DLSS 1.0, que intentan crear nueva información a partir de una fuente de baja resolución; en cambio, TAAU trabaja para recuperar datos de fotogramas anteriores, en lugar de crear nuevos datos. En la práctica, esto significa que las texturas de baja resolución en los juegos seguirán apareciendo de baja resolución cuando se utilicen las técnicas TAAU actuales. Es por eso que Nvidia recomienda a los desarrolladores de juegos que utilicen texturas de mayor resolución de la que normalmente utilizarían para una resolución de renderizado determinada aplicando un sesgo de mapa mip cuando DLSS 2.0 esté habilitado. [13]
Mejora el DLSS 2.0 mediante el uso de interpolación de movimiento . El algoritmo de generación de cuadros DLSS toma dos cuadros renderizados del flujo de renderizado y genera un nuevo cuadro que realiza una transición fluida entre ellos. Por lo tanto, por cada cuadro renderizado, se genera un cuadro adicional. [2]
DLSS 3.0 utiliza un acelerador de flujo óptico (OFA) de nueva generación incluido en las GPU RTX de la generación Ada Lovelace. El nuevo OFA es más rápido y preciso que el OFA ya disponible en las GPU RTX Turing y Ampere anteriores. [27] Esto hace que DLSS 3.0 sea exclusivo para la serie RTX 40.
En el momento de su lanzamiento, DLSS 3.0 no funciona con pantallas VR. [ cita requerida ]
DLSS 3.5 agrega reconstrucción de rayos, reemplazando múltiples algoritmos de eliminación de ruido con un solo modelo de IA entrenado en cinco veces más datos que DLSS 3. La reconstrucción de rayos está disponible en todas las GPU RTX y los primeros juegos específicos con trazado de ruta (también conocido como "trazado de rayos completo"), incluido el DLC Phantom Liberty de Cyberpunk 2077 , Portal con RTX y Alan Wake 2. [ 18] [17]
DLSS requiere y aplica su propio método de suavizado de bordes . Por lo tanto, dependiendo del juego y la configuración de calidad utilizada, el uso de DLSS puede mejorar la calidad de la imagen incluso en comparación con la resolución nativa. [28]
Funciona con principios similares a TAA . Al igual que TAA, utiliza información de fotogramas anteriores para producir el fotograma actual. A diferencia de TAA, DLSS no muestrea cada píxel en cada fotograma. En cambio, muestrea diferentes píxeles en diferentes fotogramas y utiliza píxeles muestreados en fotogramas anteriores para completar los píxeles no muestreados en el fotograma actual. DLSS utiliza el aprendizaje automático para combinar muestras en el fotograma actual y en fotogramas anteriores, y puede considerarse una implementación avanzada y superior de TAA que es posible gracias a los núcleos tensoriales disponibles. [13]
Nvidia también ofrece anti-aliasing de aprendizaje profundo (DLAA). DLAA proporciona el mismo anti-aliasing impulsado por IA que utiliza DLSS, pero sin ninguna funcionalidad de aumento o reducción de escala. [24]
Con la excepción de la versión shader-core implementada en Control , DLSS solo está disponible en las series de tarjetas de video GeForce RTX 20 , GeForce RTX 30 , GeForce RTX 40 y Quadro RTX , utilizando aceleradores de IA dedicados llamados Tensor Cores . [23] [ verificación fallida ] Los Tensor Cores están disponibles desde la microarquitectura de GPU Nvidia Volta , que se utilizó por primera vez en la línea de productos Tesla V100 . [29] Se utilizan para realizar operaciones de multiplicación-suma fusionada (FMA) que se usan ampliamente en los cálculos de redes neuronales para aplicar una gran serie de multiplicaciones en pesos, seguida de la adición de un sesgo. Los núcleos Tensor pueden operar en tipos de datos FP16, INT8, INT4 e INT1. Cada núcleo puede realizar 1024 bits de operaciones FMA por reloj, es decir, 1024 operaciones INT1, 256 INT4, 128 INT8 y 64 FP16 por reloj por núcleo tensor, y la mayoría de las GPU de Turing tienen unos cientos de núcleos tensoriales. [30]
Los núcleos Tensor utilizan primitivas de nivel Warp de CUDA en 32 subprocesos paralelos para aprovechar su arquitectura paralela. [31] Un Warp es un conjunto de 32 subprocesos que están configurados para ejecutar la misma instrucción.
Desde la versión 1903 de Windows 10 , Microsoft Windows proporcionó DirectML como parte de DirectX para soportar Tensor Cores.
En particular, en las primeras versiones de DLSS, los usuarios informaron de fotogramas borrosos. Por ello, Andrew Edelsten, un empleado de Nvidia, comentó el problema en una publicación de blog en 2019 y prometió que estaban trabajando para mejorar la tecnología y aclaró que el algoritmo de IA de DLSS se entrenó principalmente con material de imagen 4K. El hecho de que el uso de DLSS produzca imágenes especialmente borrosas en resoluciones más bajas, como Full HD , se debe a que el algoritmo tiene mucha menos información de imagen disponible para calcular una imagen adecuada en comparación con resoluciones más altas como 4K. [32]
Se ha criticado que, al implementar DLSS en sus juegos, los desarrolladores de juegos ya no tienen un incentivo para optimizarlos para que también funcionen sin problemas en resolución nativa en hardware de PC moderno. Por ejemplo, para el juego Alan Wake 2 en resolución 4K con la configuración de gráficos más alta con el trazado de rayos habilitado, se recomienda el uso de DLSS en modo Rendimiento incluso con tarjetas gráficas de gama alta de la generación actual, como la Nvidia GeForce RTX 4080, para lograr 60 fps. [33]
Además, el uso de la generación de cuadros DLSS puede provocar una mayor latencia de entrada [34] y artefactos visuales . [35]
El supermuestreo de aprendizaje profundo utiliza inteligencia artificial y aprendizaje automático para producir una imagen que parece una imagen de mayor resolución, sin la sobrecarga de renderizado. El algoritmo de Nvidia aprende de decenas de miles de secuencias de imágenes renderizadas que se crearon utilizando una supercomputadora. Eso entrena al algoritmo para que pueda producir imágenes igualmente hermosas, pero sin requerir que la tarjeta gráfica trabaje tanto para hacerlo.
Por supuesto, esto es de esperarse. DLSS nunca iba a proporcionar la misma calidad de imagen que el 4K nativo y, al mismo tiempo, ofrecer un aumento del rendimiento del 37 %. Eso sería magia negra. Pero la diferencia de calidad al comparar los dos es casi ridícula, en cuanto a lo lejos que está DLSS de la presentación nativa en estas áreas estresantes.
Recientemente, dos grandes títulos recibieron soporte para NVIDIA DLSS, concretamente Metro Exodus y Battlefield V. Ambos juegos vienen con la implementación de DXR (DirectX Raytracing) de NVIDIA que, por el momento, solo es compatible con las tarjetas GeForce RTX. DLSS hace que estos juegos se puedan jugar a resoluciones más altas con velocidades de cuadro mucho mejores, aunque hay una disminución notable en la nitidez de la imagen. Ahora, AMD ha dado un golpe a DLSS, diciendo que los métodos AA tradicionales como SMAA y TAA "ofrecen combinaciones superiores de calidad de imagen y rendimiento".
El beneficio para la mayoría de las personas es que, en general, DLSS viene con una mejora considerable de FPS. La cantidad varía de un juego a otro. En Metro Exodus, el salto de FPS apenas se notó y ciertamente no valió la pena el extraño impacto en la calidad de la imagen.
Por supuesto, esta no es la primera implementación de DLSS que hemos visto en Control. El juego se envió con una versión bastante decente de la tecnología que en realidad no usaba aprendizaje automático
Como se prometió, NVIDIA ha actualizado la red DLSS en una nueva actualización de GeForce que proporciona una calidad de imagen mejor y más nítida, al tiempo que conserva velocidades de cuadro más altas en juegos con trazado de rayos. Si bien la función no se utilizó tan bien en su primera iteración, NVIDIA ahora confía en que ha solucionado con éxito todos los problemas que tenía antes.
El DLSS original requería entrenar la red de IA para cada juego nuevo. DLSS 2.0 entrena utilizando contenido no específico del juego, lo que ofrece una red generalizada que funciona en todos los juegos. Esto significa integraciones de juegos más rápidas y, en última instancia, más juegos DLSS.
Desarrollamos un nuevo algoritmo de procesamiento de imágenes que se aproximaba a nuestro modelo de investigación de IA y se ajustaba a nuestro presupuesto de rendimiento. Este enfoque de procesamiento de imágenes para DLSS está integrado en Control
El equipo de DLSS primero extrae muchos fotogramas con alias del juego de destino y luego, para cada uno, generamos un "fotograma perfecto" coincidente mediante supermuestreo o renderizado por acumulación. Estos fotogramas emparejados se envían a la supercomputadora de NVIDIA. La supercomputadora entrena al modelo DLSS para reconocer entradas con alias y generar imágenes anti-aliasing de alta calidad que coincidan lo más posible con el "fotograma perfecto". Luego repetimos el proceso, pero esta vez entrenamos al modelo para generar píxeles adicionales en lugar de aplicar AA. Esto tiene el efecto de aumentar la resolución de la entrada. La combinación de ambas técnicas permite que la GPU renderice la resolución completa del monitor a velocidades de cuadro más altas.
Las GPU NVIDIA ejecutan grupos de subprocesos conocidos como warps en modo SIMT (instrucción única, subproceso múltiple)