Nvidia ha estado ocupada trabajando en mejoras adicionales a su conjunto de herramientas AI/ML (Inteligencia artificial/Aprendizaje automático) y LLM (Modelo de lenguaje grande). La última incorporación es TensorRT y TensorRT-LLM, diseñadas para optimizar el rendimiento de las GPU de consumo y muchas de las mejores tarjetas gráficas para realizar tareas como Stable Diffusion y generación de texto Llama 2. Probamos algunas de las últimas GPU de Nvidia usando TensorRT y descubrimos que El rendimiento en difusión estable mejoró hasta en un 70%. TensorRT debería estar disponible para descargar desde la página Github de Nvidia ahora, aunque tuvimos acceso anticipado para este vistazo inicial.
Hemos visto mucho movimiento en Stable Diffusion durante el último año. Nuestro primer vistazo utilizó la webui Automatic1111, que inicialmente solo admitía GPU Nvidia en Windows. Desde entonces, la cantidad de bifurcaciones y herramientas alternativas de generación de IA de texto a imagen se ha disparado, y tanto AMD como Intel han lanzado bibliotecas más optimizadas que de alguna manera han acortado la brecha con el rendimiento de Nvidia. Puede ver nuestro último resumen de puntos de referencia de difusión estable en nuestras revisiones de AMD RX 7800 XT y RX 7700 XT. Ahora, Nvidia está lista para ampliar la brecha nuevamente con TensorRT.
La idea básica es similar a lo que ya han hecho AMD e Intel. Aprovechando ONNX, un formato abierto para modelos y operadores de IA y ML, el modelo básico de difusión estable de Hugging Face se convierte a un formato ONNX. Desde allí, puedes optimizar aún más el rendimiento de la GPU específica que estás utilizando. TensorRT tarda unos minutos (o a veces más) en modificar las cosas, pero una vez hecho esto, debería ver un aumento sustancial en el rendimiento junto con una mejor utilización de la memoria.
Ejecutamos todas las GPU de la serie RTX 40 más recientes de Nvidia a través del proceso de ajuste (cada una debe realizarse por separado para un rendimiento óptimo), además de probar el rendimiento base de Difusión estable y el rendimiento utilizando Xformers. No estamos del todo listos para la actualización completa que compara el rendimiento de AMD, Intel y Nvidia en Stable Diffusion, ya que estamos volviendo a probar un montón de GPU adicionales utilizando las últimas herramientas optimizadas, por lo que esta revisión inicial se centra únicamente en las GPU de Nvidia. Hemos incluido una serie RTX 30 (RTX 3090) y una serie RTX 20 (RTX 2080 Ti) para mostrar cómo las ganancias de TensorRT se aplican a toda la línea RTX de Nvidia.
Imagen 1 de 3
(Crédito de la imagen: Tom’s Hardware)(Crédito de la imagen: Tom’s Hardware)(Crédito de la imagen: Tom’s Hardware)
Imagen 1 de 3
(Crédito de la imagen: Tom’s Hardware)(Crédito de la imagen: Tom’s Hardware)(Crédito de la imagen: Tom’s Hardware)
Cada una de las galerías anteriores, en 512×512 y 768×768, utiliza los modelos Stable Diffusion 1.5. «Regresamos» para usar 1,5 en lugar de 2,1, ya que la comunidad de criadores generalmente prefiere resultados de 1,5, aunque los resultados deberían ser aproximadamente los mismos con los modelos más nuevos. Para cada GPU, ejecutamos diferentes tamaños de lotes y recuentos para encontrar el rendimiento óptimo, generando un total de 24 imágenes por ejecución. Luego promediamos el rendimiento de tres ejecuciones separadas para determinar la tasa general, por lo que se generó un total de 72 imágenes para cada formato de modelo y GPU (sin contar las ejecuciones descartadas).
Varios factores entran en juego con el rendimiento general. El cálculo de la GPU es bastante importante, al igual que el ancho de banda de la memoria. La capacidad de VRAM tiende a ser un factor menor, además de permitir potencialmente objetivos de resolución de imagen o tamaños de lote más grandes; en otras palabras, hay cosas que puede hacer con 24 GB de VRAM que no serán posibles con 8 GB. Los tamaños de caché L2 también se pueden tener en cuenta, aunque no hemos intentado modelarlo directamente. Lo que podemos decir es que las tarjetas 4060 Ti de 16 GB y 8 GB, que tienen básicamente las mismas especificaciones (relojes ligeramente diferentes debido al modelo personalizado de 16 GB), tenían un rendimiento casi idéntico y tamaños de lote ideales.
Existen algunas diferencias modestas en el rendimiento relativo según el formato de modelo utilizado. El modelo base es el más lento, con Xformers aumentando el rendimiento entre un 30% y un 80% para imágenes de 512×512 y entre un 40% y un 100% para imágenes de 768×768. TensorRT aumenta el rendimiento entre un 50 y un 65 por ciento adicional a 512 x 512 y entre un 45 y un 70 por ciento adicional a 768 x 768.
Curiosamente, las ganancias más pequeñas (de las GPU probadas hasta ahora) provienen del RTX 3090. No está exactamente claro cuál podría ser el factor limitante, aunque tendremos que probar GPU adicionales para llegar a conclusiones firmes. La serie RTX 40 tiene núcleos Tensor de cuarta generación, la serie RTX 30 tiene núcleos Tensor de tercera generación y la serie RTX 20 tiene núcleos Tensor de segunda generación (siendo la arquitectura Volta Tensor de primera generación). En otras palabras, las arquitecturas más nuevas deberían ser más capaces, aunque para el tipo de trabajo necesario en Stable Diffusion parece reducirse principalmente al ancho de banda de memoria y computación sin procesar.
No intentamos hacer de esta una comparación completa entre Nvidia y el rendimiento mundial, pero las pruebas actualizadas del RX 7900 XTX como ejemplo logran alrededor de 18~19 imágenes por minuto para 512×512 y alrededor de cinco imágenes por minuto a 768×768. Estamos trabajando en pruebas completas de las GPU AMD con la última rama Automatic1111 DirectML y tendremos un compendio de Difusión estable actualizado una vez que esté completo. También tenga en cuenta que el Arc A770 de Intel gestiona 15,5 imágenes/min a 512×512 y 4,7 imágenes/min a 768×768.
(Crédito de la imagen: Nvidia)
Entonces, ¿qué está pasando exactamente con TensorRT para mejorar tanto el rendimiento? Hablé con Nvidia sobre este tema y se trata principalmente de optimizar recursos y formatos de modelo.
ONNX fue desarrollado originalmente por Facebook y Microsoft, pero es una iniciativa de código abierto basada en el modelo de licencia Apache. ONNX está diseñado para permitir el uso de modelos de IA con una amplia variedad de backends: PyTorch, OpenVINO, DirectML, TensorRT, etc. ONNX permite una definición común de diferentes modelos de IA al proporcionar un modelo gráfico de cálculo junto con los operadores integrados necesarios y un conjunto de tipos de datos estándar. Esto permite que los modelos se transporten fácilmente entre múltiples marcos de aceleración de IA.
Mientras tanto, TensorRT está diseñado para funcionar mejor en GPU Nvidia. Para aprovechar TensorRT, un desarrollador normalmente necesitaría escribir sus modelos directamente en el formato esperado por TensorRT o convertir un modelo existente a ese formato. ONNX ayuda a simplificar este proceso, razón por la cual AMD (DirectML) e Intel (OpenVINO) lo han utilizado para las ramas sintonizadas de Stable Diffusion.
Finalmente, una de las mejores cosas de TensorRT es que también puedes ajustar una ruta óptima con un modelo. En nuestro caso, estamos agrupando imágenes de 512×512 y 768×768. El modelo genérico de TensorRT que generamos puede tener un tamaño de imagen dinámico de 512×512 a 1024×1024, con un tamaño de lote de uno a ocho, y una configuración ideal de 512×512 y un tamaño de lote de 1. Hacer lotes de 512×512 de 8 podría terminar siendo el 10% más lento, más o menos. Entonces podemos crear otro modelo de TensorRT dirigido específicamente a 512x512x8, o 768x768x4, o lo que sea. E hicimos todo esto para encontrar la mejor configuración para cada GPU.
La bifurcación DirectML de AMD tiene algunas opciones similares, aunque por el momento hemos encontrado algunas limitaciones (no podemos hacer un tamaño de lote distinto de uno, por ejemplo). También anticipamos más ajustes en los modelos AMD e Intel, aunque con el tiempo las ganancias probablemente disminuirán.
(Crédito de la imagen: Nvidia)
El TensorRT actualizado no es solo para difusión estable, por supuesto. Nvidia compartió la diapositiva anterior que detalla las mejoras que midió con la inferencia Llama 2 7B int4, usando TensorRT. Es una herramienta de generación de texto con siete mil millones de parámetros.
Como muestra el gráfico, generar un solo lote de texto muestra un beneficio modesto, pero la GPU en este caso (RTX 4090) no parece funcionar completamente. Aumentar el tamaño del lote a cuatro aumenta el rendimiento general en 3,6 veces, mientras que un tamaño de lote de ocho proporciona una aceleración de 4,4 veces. En este caso, se pueden usar tamaños de lote más grandes para generar múltiples respuestas de texto, lo que permite al usuario seleccionar la que prefiera, o incluso combinar partes del resultado, si eso es útil.
TesorRT-LLM aún no se ha lanzado, pero debería estar disponible en desarrollador.nvidia.com (se requiere registro gratuito) en un futuro próximo.
(Crédito de la imagen: Nvidia)
Finalmente, como parte de sus actualizaciones centradas en IA para LLM, Nvidia también está trabajando en una herramienta TensorRT-LLM que le permitirá usar Llama 2 como modelo base y luego importar datos locales para dominios más específicos y actualizados. conocimiento. . Como ejemplo de lo que esto puede hacer, Nvidia importó 30 artículos de noticias recientes de Nvidia a la herramienta y puede ver la diferencia en la respuesta entre el modelo base Llama 2 y el modelo con estos datos locales.
El modelo básico le brinda toda la información sobre cómo generar oraciones significativas y cosas así, pero no tiene conocimiento de eventos o anuncios recientes. En este caso, parece que Alan Wake 2 no tiene información oficial publicada. Sin embargo, con datos locales actualizados es posible dar una respuesta más significativa.
Otro ejemplo dado por Nvidia fue el uso de estos datos locales con su propio historial de correo electrónico o chat. Entonces puedes preguntar cosas como: «¿De qué película hablamos Chris y yo el año pasado?» y podría dar una respuesta. Es potencialmente una opción de búsqueda más inteligente que utiliza su propia información.
No podemos evitar ver esto como un caso de uso potencial para nuestro propio HammerBot, pero tendremos que ver si se puede usar en nuestros servidores específicos (ya que necesita una tarjeta RTX). Como ocurre con todos los LLM, la calidad de los resultados puede variar ligeramente según los datos de capacitación y las preguntas que haga.
(Crédito de la imagen: Nvidia)
Nvidia también anunció actualizaciones de su súper resolución de video, ahora con soporte para GPU de la serie RTX 20 y reducción de artefactos nativos. Esto último significa que si estás viendo una transmisión de 1080p en un monitor de 1080p, VSR aún puede ayudarte con la eliminación de ruido y la mejora de la imagen. VSR 1.5 está disponible con los controladores más recientes de Nvidia.