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 son exclusivas de su línea RTX de tarjetas gráficas , [1] y están disponibles en varios videojuegos . El objetivo de estas tecnologías es permitir que la mayoría del proceso de gráficos se ejecute a una resolución más baja para aumentar el 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. resolución. Esto permite configuraciones gráficas y/o velocidades de fotogramas más altas para una resolución de salida determinada, según las preferencias del usuario. [2]
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 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 . [3] Nvidia también ha introducido la superresolución dinámica de aprendizaje profundo ( DLDSR ), una tecnología relacionada y opuesta en la que los gráficos se representan 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 IA para lograr una mayor calidad de imagen. que renderizar con resolución nativa. [4]
Nvidia anunció DLSS como una característica clave de las tarjetas de la serie GeForce 20 cuando se lanzaron en septiembre de 2018. [5] En ese momento, los resultados se limitaron a unos pocos videojuegos (a saber, Battlefield V [6] y Metro Exodus ) porque el algoritmo tenía que entrenarse específicamente en cada juego en el que se aplicaba y los resultados generalmente no eran tan buenos como los de una simple mejora de resolución. [7] [8]
En 2019, el videojuego Control se envió con trazado de rayos en tiempo real y una versión mejorada de DLSS, que no utilizaba Tensor Cores. [9] [10]
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 juegos recientemente lanzados , como Unreal Engine [11] y Unity . [12] Esta vez, Nvidia dijo que usó los Tensor Cores nuevamente y que no era necesario entrenar la IA específicamente en cada juego. [5] [13] A pesar de compartir la marca DLSS, las dos iteraciones de DLSS difieren significativamente y no son compatibles con versiones anteriores. [14] [15]
Al usar DLSS, dependiendo del juego, los usuarios tienen acceso a varios ajustes preestablecidos de calidad, además de la opción de configurar manualmente la resolución mejorada renderizada internamente:
La primera iteración de DLSS es un escalador de imágenes predominantemente espacial con dos etapas, ambas basadas en redes neuronales con codificadores automáticos convolucionales . [22] El primer paso es una red de mejora de imágenes que utiliza el cuadro actual y los vectores de movimiento para realizar mejoras de bordes y suavizado espacial . La segunda etapa es un paso de mejora de la imagen que utiliza un único fotograma sin formato de baja resolución para mejorar la imagen a la resolución de salida deseada. Usar un solo cuadro para la ampliación significa que la propia red neuronal debe generar una gran cantidad de información nueva para producir una salida de alta resolución, lo que puede provocar ligeras alucinaciones , como hojas que difieren en estilo del contenido original. [14]
Las redes neuronales se entrenan por juego generando un "cuadro perfecto" utilizando supermuestreo tradicional a 64 muestras por píxel, así como los vectores de movimiento para cada cuadro. Los datos recogidos 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 aumentan mediante aumentos 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. [15] [23]
Esta primera versión recibió una respuesta mixta, y muchos criticaron la apariencia, a menudo suave, y los artefactos en ciertas situaciones; [24] [7] [6] probablemente sea un efecto secundario de los datos limitados debido al uso de una sola entrada de cuadro para las redes neuronales que no se pudieron entrenar para funcionar de manera óptima en todos los escenarios y casos extremos . [14] [15]
Nvidia también demostró la capacidad de las redes de codificadores automáticos para aprender a recrear la profundidad de campo y el desenfoque de movimiento , [15] aunque esta funcionalidad nunca se ha incluido en un producto lanzado públicamente. [ cita necesaria ]
DLSS 2.0 es una implementación de muestreo ascendente de suavizado temporal (TAAU), que utiliza ampliamente datos de fotogramas anteriores a través de fluctuaciones de subpíxeles para resolver detalles finos y reducir el alias. Los datos que recopila DLSS 2.0 incluyen: la entrada sin procesar de baja resolución, vectores de movimiento , buffers de profundidad e información de exposición /brillo. [14] También se puede utilizar como una implementación TAA más simple en la que la imagen se representa con una resolución del 100%, en lugar de ser muestreada mediante DLSS. Nvidia lo denomina DLAA (anti-aliasing de aprendizaje profundo). [25]
TAA(U) se utiliza en muchos videojuegos y motores de juegos modernos , [26] sin embargo, todas las implementaciones anteriores han utilizado alguna forma de heurística escrita manualmente para evitar artefactos temporales como imágenes fantasma y parpadeos . Un ejemplo de esto es la sujeción de vecindad que evita enérgicamente 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. [14]
DLSS 2.0 utiliza una red neuronal convolucional de codificador automático [24] 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 TAA y TAAU, al mismo tiempo que elimina la mayoría de los artefactos temporales. Esta es la razón por la que DLSS 2.0 a veces puede producir una imagen más nítida que la renderizada a resoluciones más altas, o incluso nativas, usando 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 usa DLSS 2.0.
Debido a que los artefactos temporales ocurren en la mayoría de los estilos y entornos artísticos más o menos de la misma manera, no es necesario volver a entrenar la red neuronal que impulsa DLSS 2.0 cuando se usa en diferentes juegos. A pesar de esto, Nvidia envía con frecuencia nuevas revisiones menores de DLSS 2.0 con nuevos títulos, [27] por lo que esto podría sugerir que se pueden realizar algunas optimizaciones menores de entrenamiento a medida que se lanzan los juegos, aunque Nvidia no proporciona registros de cambios para estas revisiones menores para confirmar esto.
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 ~2 veces menos gastos generales (~1-2 ms frente a ~2-4 ms). [14]
También cabe señalar que las formas de TAAU como DLSS 2.0 no son escaladoras en el mismo sentido que 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 datos nuevos. En la práctica, esto significa que las texturas de baja resolución en los juegos seguirán pareciendo de baja resolución cuando se utilicen las técnicas TAAU actuales. Es por eso que Nvidia recomienda que los desarrolladores de juegos utilicen texturas de mayor resolución de la que normalmente usarían para una resolución de renderizado determinada aplicando un sesgo de mapa MIP cuando DLSS 2.0 está habilitado. [14]
Aumenta DLSS 2.0 haciendo uso de la interpolación de movimiento . El algoritmo de generación de fotogramas DLSS toma dos fotogramas renderizados del proceso de renderizado y genera un nuevo fotograma que realiza una transición suave entre ellos. Entonces, por cada fotograma renderizado, se genera un fotograma adicional. [3]
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 que ya está disponible en las GPU Turing y Ampere RTX anteriores. [28] Esto da como resultado que DLSS 3.0 sea exclusivo para la serie RTX 40.
En el momento del lanzamiento, DLSS 3.0 no funciona para pantallas de realidad virtual. [ cita necesaria ]
DLSS 3.5 agrega reconstrucción de rayos, reemplazando múltiples algoritmos de eliminación de ruido con un único modelo de IA entrenado con cinco veces más datos que DLSS 3. La reconstrucción de rayos estará disponible en todas las GPU RTX y se enfocará primero en juegos 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 . [19] [18]
DLSS requiere y aplica su propio método anti-aliasing . 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 con respecto a la resolución nativa. [29]
Opera con principios similares a los de 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 cuadro. En cambio, muestra 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 pasados, y puede considerarse como una implementación TAA avanzada y superior posible gracias a los núcleos tensoriales disponibles. [14]
Nvidia también ofrece suavizado de aprendizaje profundo (DLAA). DLAA proporciona los mismos usos de DLSS anti-aliasing impulsados por IA, pero sin ninguna funcionalidad de ampliación o reducción de escala. [25]
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 , que utilizan aceleradores de IA dedicados llamados Tensor Cores . [24] [ verificación fallida ] Los Tensor Cores están disponibles desde la microarquitectura GPU Nvidia Volta , que se utilizó por primera vez en la línea de productos Tesla V100 . [30] Se utilizan para realizar operaciones fusionadas de multiplicación y suma (FMA) que se utilizan ampliamente en cálculos de redes neuronales para aplicar una gran serie de multiplicaciones de pesos, seguidas de la adición de un sesgo. Los núcleos tensoriales pueden operar en los tipos de datos FP16, INT8, INT4 e INT1. Cada núcleo puede realizar 1024 bits de operaciones FMA por reloj, por lo que 1024 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. [31]
Los Tensor Cores utilizan CUDA Warp -Level Primitives en 32 subprocesos paralelos para aprovechar su arquitectura paralela. [32] Un Warp es un conjunto de 32 subprocesos que están configurados para ejecutar la misma instrucción.
Desde Windows 10 versión 1903 , Microsoft Windows proporcionó DirectML como parte de DirectX para admitir Tensor Cores.
Especialmente en las primeras versiones de DLSS, los usuarios reportaban cuadros borrosos. 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 DLSS AI se entrenó principalmente con material de imagen 4K. El hecho de que el uso de DLSS conduzca a imágenes particularmente borrosas en resoluciones más bajas, como Full HD , se debe al hecho de 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. [33]
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 y el trazado de rayos habilitado, se recomienda el uso de DLSS en modo Rendimiento incluso con tarjetas gráficas de alta gama de la generación actual, como la Nvidia GeForce RTX 4080, para para alcanzar 60 fps. [34]
Además, el uso de la generación de fotogramas DLSS puede provocar un aumento de la latencia de entrada [35] y artefactos visuales . [36]
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. Esto entrena al algoritmo para que pueda producir imágenes igualmente hermosas, pero sin requerir que la tarjeta gráfica trabaje tan duro 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 proporcionaría una mejora del rendimiento del 37%. Eso sería magia negra. Pero la diferencia de calidad al comparar los dos es casi ridícula, en lo lejos que está DLSS de la presentación nativa en estas áreas estresantes.
Recientemente, dos grandes títulos recibieron soporte NVIDIA DLSS, a saber, Metro Exodus y Battlefield V. Ambos juegos vienen con la implementación DXR (DirectX Raytracing) de NVIDIA que por el momento solo es compatible con las tarjetas GeForce RTX. DLSS hace que estos juegos se puedan reproducir 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 atacado 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, generalmente, DLSS viene con una mejora considerable de FPS. Cuánto 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 golpe a la calidad de la imagen.
Por supuesto, esta no es la primera implementación de DLSS que vemos en Control. El juego se envió con una interpretación bastante decente de la tecnología que en realidad no utilizaba aprendizaje automático.
Como 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 y al mismo tiempo conserva velocidades de fotogramas más altas en los juegos con trazado de rayos. Si bien la función no se utilizó tan bien en su primera versión, NVIDIA ahora confía en haber 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 se entrena utilizando contenido no específico del juego, ofreciendo 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 cuadros con alias del juego objetivo y luego, para cada uno, generamos un "cuadro perfecto" coincidente mediante supermuestreo o renderizado por acumulación. Estos cuadros emparejados se envían a la supercomputadora de NVIDIA. La supercomputadora entrena el modelo DLSS para reconocer entradas con alias y generar imágenes suavizadas de alta calidad que coincidan lo más posible con el "cuadro perfecto". Luego repetimos el proceso, pero esta vez entrenamos el 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 reproduzca la resolución completa del monitor a velocidades de cuadros más altas.
Las GPU NVIDIA ejecutan grupos de subprocesos conocidos como warps en forma SIMT (Instrucción única, subprocesos múltiples)