Nvidia progreso el rendimiento de la IA con TensorRT

Nvidia ha estado trabajando en nuevas mejoras 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 convencionales y muchas de las mejores tarjetas gráficas para ejecutar tareas como Stable Diffusion y la generación de texto Llama 2. Probamos algunas de las últimas GPU de Nvidia usando TensorRT y encontramos ese rendimiento de transmisión estable se mejoró hasta en un 70%. TensorRT ahora debería estar disponible para descargar en la página Github de Nvidia, aunque se nos dio acceso anticipado para esta vista previa inicial.

Hemos visto muchos avances en la transmisión estable durante el año pasado. Nuestra primera vista previa utilizó la webui de Automatic1111, que inicialmente solo admitía GPU Nvidia en Windows. Desde entonces, la cantidad de bifurcaciones y herramientas de generación de IA de texto alternativo se ha disparado, y AMD e Intel han lanzado bibliotecas más ajustadas que de alguna manera han cerrado la brecha con el rendimiento de Nvidia. Puede consultar nuestro último resumen de pruebas de transmisión estable en nuestras revisiones de AMD RX 7800 XT y RX 7700 XT. Ahora, Nvidia está lista para ampliar nuevamente la brecha 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 de difusión estable base de Hugging Face se convierte al 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 resolver las cosas, pero una vez hecho esto, debería ver una mejora sustancial en el rendimiento, así como un mejor uso 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), mientras probamos la línea base de transmisión estable y el rendimiento usando Xformers. No estamos del todo listos para la actualización completa que compara el rendimiento de AMD, Intel y Nvidia en transmisión estable, ya que volvemos a probar varias GPU adicionales utilizando las últimas herramientas optimizadas. Por lo tanto, esta vista previa 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 se aplican las ganancias de TensorRT en toda la línea RTX de Nvidia.

Cada una de las galerías anteriores, en 512x512 y 768x768, utiliza los modelos Stable Diffusion 1.5. Hemos "regresado" al uso de la versión 1.5 en lugar de la versión 2.1, porque la comunidad de diseño generalmente prefiere los resultados de la versión 1.5, aunque los resultados deberían ser más o menos los mismos con los modelos más recientes. Para cada GPU, ejecutamos diferentes tamaños y números de lote para encontrar el rendimiento óptimo, generando 24 imágenes en total por ejecución. Luego promediamos el rendimiento de tres ejecuciones separadas para determinar la tasa general. Así, se generaron un total de 72 imágenes para cada formato de modelo y GPU (sin incluir las ejecuciones descartadas).

Varios factores entran en juego con el rendimiento general. El cálculo de la GPU es muy 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 puedes hacer con 24 GB de VRAM que no serán posibles con 8 GB. También se puede tener en cuenta el tamaño de la caché L2, 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 y tamaños de memoria casi idénticos.

Existen algunas ligeras diferencias en el rendimiento relativo, según el formato de plantilla 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 x 512 y entre un 40 y un 100 % para imágenes de 768 x 768. Luego, TensorRT aumenta el rendimiento entre un 50 y un 65 % adicional a 512 x 512 y entre un 45 y un 70 % a 768. x 768.

Lo interesante es que las ganancias más pequeñas (entre las GPU probadas hasta ahora) provienen del RTX 3090. No está claro cuál podría ser el factor limitante, aunque necesitaremos probar GPU adicionales para sacar conclusiones definitivas. 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 (la arquitectura Volta es Tensor de primera generación). En otras palabras, las arquitecturas más nuevas deberían funcionar mejor, aunque para el tipo de trabajo requerido en Stable Diffusion, parece reducirse principalmente al ancho de banda de memoria y computación sin procesar.

No estamos tratando de hacer de esto una comparación completa del rendimiento de Nvidia versus el rendimiento global, sino pruebas actualizadas del RX 7900 512 y alrededor de cinco fotogramas por minuto a 768 x 768. Estamos trabajando en pruebas completas de las GPU AMD con la última versión de DirectML. Rama Automatic1111, y tendremos un compendio de transmisión estable actualizado una vez que esté completo. También tenga en cuenta que el Intel Arc A770 gestiona 15,5 imágenes/min a 512x512 y 4,7 imágenes/min a 768x768.

Actualización de TensorRT de difusión estable de Nvidia

(Crédito de la imagen: Nvidia)

Entonces, ¿qué está pasando exactamente con TensorRT que puede mejorar tanto el rendimiento? He hablado con Nvidia sobre este tema y se trata principalmente de optimizar recursos y formatos de plantillas.

ONNX fue desarrollado inicialmente 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, proporcionando un modelo gráfico computacional junto con los elementos integrados necesarios. operadores y un conjunto de tipos de datos estándar. Esto permite que los modelos se transporten fácilmente entre diferentes marcos de aceleración de IA.

TensorRT, por otro lado, está diseñado para funcionar mejor en GPU Nvidia. Para aprovechar TensorRT, un desarrollador normalmente debe escribir sus modelos directamente en el formato esperado por TensorRT o convertir un modelo existente a este formato. ONNX ayuda a simplificar este proceso, razón por la cual AMD (DirectML) e Intel (OpenVINO) lo han utilizado para ramas optimizadas de Stable Diffusion.

Finalmente, una de las opciones de TensorRT es que también puedes definir una ruta óptima con un modelo. En nuestro caso, producimos lotes de imágenes de 512x512 y 768x768. El modelo genérico de TensorRT que generamos puede tener un tamaño de imagen dinámico de 512x512 a 1024x1024, con un tamaño de lote de uno a ocho, y una configuración óptima de 512x512 y un tamaño de lote de 1. Hacer 512x512 en lotes de 8 podría terminar siendo 10 % más lento, más o menos. Por lo tanto podemos hacer otro Modelo TensorRT que apunta 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 ofrece opciones similares, aunque actualmente nos hemos encontrado con algunas limitaciones (no podemos crear un tamaño de lote distinto de uno, por ejemplo). También esperamos más ajustes en los modelos AMD e Intel, aunque con el tiempo las ganancias deberían disminuir.

Actualización de TensorRT de difusión estable de Nvidia

(Crédito de la imagen: Nvidia)

Por supuesto, la actualización de TensorRT no es solo para una versión estable. Nvidia compartió la diapositiva anterior que detalla las mejoras medidas 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 genera un beneficio modesto, pero la GPU en este caso (RTX 4090) no parece beneficiarse del entrenamiento completo. 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 produce 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 Developer.nvidia.com (se requiere registro gratuito) en un futuro próximo.

Actualización de TensorRT de difusión estable de Nvidia

(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 permitirá usar Llama 2 como modelo base y luego importar datos locales para obtener información más específica del dominio y actualizaciones. 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 base proporciona toda la información sobre cómo generar oraciones significativas, etc., pero no tiene conocimiento de eventos o anuncios recientes. En este caso, las cosas Alan despierta 2 no se ha publicado ninguna información oficial. Sin embargo, con datos locales actualizados, es posible proporcionar una respuesta más significativa.

Otro ejemplo que dio Nvidia fue el uso de estos datos locales con su propio correo electrónico o historial de chat. Entonces podrías preguntarle cosas como: "¿De qué película hablamos Chris y yo el año pasado?". y él podría dar una respuesta. Esta es una opción de búsqueda potencialmente más inteligente, que utiliza su propia información.

No podemos evitar ver esto como un caso de uso potencial para nuestro propio HammerBot, aunque tendremos que ver si se puede utilizar en nuestros servidores particulares (ya que requiere una tarjeta RTX). Como ocurre con todos los LLM, la calidad de los resultados puede variar un poco según los datos de capacitación y las preguntas que haga.

Actualización de TensorRT de difusión estable de Nvidia

(Crédito de la imagen: Nvidia)

Nvidia también anunció actualizaciones de su video de súper resolución, 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 a eliminar el ruido y mejorar la imagen. VSR 1.5 está disponible con los controladores más recientes de Nvidia.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir