¿Problemas con la IA o el desarrollo full-stack? Nuestros expertos están aquí para guiarle: asesoramiento personalizado, integración técnica y mucho más. Contacte con nosotros en [email protected].

Motores de inferencia GenAI: TensorRT-LLM vs vLLM vs Hugging Face TGI vs LMDeploy

El auge de la IA generativa (GenAI) ha transformado sectores como el procesamiento del lenguaje natural o la generación de contenidos creativos. Sin embargo, desplegar estos potentes modelos de forma eficiente a gran escala sigue siendo un reto.

TensorRT-LLM, vLLM, Hugging Face TGI y LMDeploy

Los motores de inferencia desempeñan un papel fundamental a la hora de optimizar el rendimiento, reducir la latencia y maximizar la utilización de los recursos. En este artículo, nos sumergimos en cuatro soluciones líderes: TensorRT-LLM, vLLM, Hugging Face TGI y LMDeploy.

Cada uno de ellos aporta puntos fuertes únicos, ya sea la precisión acelerada por hardware de NVIDIA, la innovadora gestión de la memoria de vLLM, el ecosistema listo para la producción de TGI o el enfoque de LMDeploy en la velocidad y la simplicidad. Acompáñanos en la comparación de estos motores para ayudarte a encontrar el más adecuado para tus cargas de trabajo GenAI.

TensorRT-LLM: la potencia de NVIDIA para la inferencia optimizada

TensorRT-LLM es la respuesta de NVIDIA para conseguir que los modelos de lenguaje de gran tamaño se ejecuten con rapidez y fluidez. Basado en su framework TensorRT, está diseñado para exprimir hasta la última gota de rendimiento de las GPUs NVIDIA. Lo hace con trucos como la fusión de capas, el ajuste de la precisión (FP16, INT8, FP8...) y la optimización del núcleo que reduce el tiempo de cálculo sin afectar a la precisión del modelo.

TensorRT-LLM

No se trata sólo de velocidad. TensorRT-LLM maneja grandes modelos de manera eficiente mediante la gestión inteligente de la memoria, por lo que no se bloquea a mitad de ejecución. También admite el procesamiento dinámico por lotes, lo que te permite procesar varias solicitudes a la vez sin quedarte sin memoria. Si ya utilizas hardware NVIDIA, no hay duda de que TensorRT-LLM está estrechamente vinculado a su ecosistema, como CUDA y cuDNN, e incluso se integra con Triton Inference Server y NVIDIA Dynamo de NVIDIA.

Dicho esto, no es perfecto para todo el mundo. La configuración puede resultar complicada si no te sientes cómodo con las herramientas de NVIDIA, y es menos flexible si utilizas hardware que no sea NVIDIA. Aun así, es difícil de superar en cuanto a potencia bruta y optimización en las GPU NVIDIA.

vLLM: Inferencia de alto rendimiento con PagedAttention

vLLM es muy bueno en el manejo rápido de grandes volúmenes de trabajos de inferencia. Es un proyecto de código abierto que brilla cuando se necesita un alto rendimiento sin ralentización. La salsa secreta es PagedAttention, un truco que gestiona la memoria mucho mejor que la mayoría. En lugar de cargar todo a la vez y consumir RAM, divide las cachés de clave-valor en trozos, tomando sólo lo que se necesita. Menos desperdicio, más velocidad.

vLLM

También es muy flexible. Funciona con modelos populares como LLaMA o Mistral nada más sacarlo de la caja, y es compatible con muchos tipos de hardware, incluidas las GPU de NVIDIA o AMD. También dispone de agrupación dinámica por lotes para agrupar las solicitudes de forma eficiente y mantener el canal de procesamiento funcionando sin problemas. La configuración es bastante sencilla si estás acostumbrado a Python y PyTorch.

La principal limitación de vLLM es su relativa inmadurez en el mercado, lo que significa que puede que aún no ofrezca el amplio conjunto de funciones disponibles en soluciones más consolidadas. Sin embargo, para las organizaciones que buscan una solución eficiente que ofrezca una inferencia de alto rendimiento, vLLM representa una excelente opción.

Cara de abrazo TGI: Una solución de producción para la generación de textos

Hugging Face TGI (Text Generation Inference) está pensado para aquellos que quieren poner en marcha modelos sin quebraderos de cabeza. Es una herramienta creada por el equipo de Hugging Face, por lo que funciona bien con su enorme biblioteca de modelos preentrenados, como BERT, GPT y otros. Está diseñado para su uso en el mundo real, como la alimentación de chatbots o aplicaciones donde la generación de texto tiene que trabajar rápido y no se bloquee.

Cara de abrazo TGI

TGI se encarga del trabajo pesado con funciones como el procesamiento por lotes continuo, que mantiene el sistema ocupado intercambiando nuevas peticiones a medida que terminan las anteriores. Admite aceleración por GPU y puede ampliarse si se dispone del hardware necesario. Además, incorpora funciones de seguridad, como el filtrado de salidas erróneas, lo que resulta muy útil para la producción. Puede desplegarse con Docker en unos pocos pasos, por lo que es relativamente fácil de configurar.

¿El inconveniente? Está vinculado al ecosistema de Hugging Face, así que si no estás ya en ese mundo, puede parecerte restrictivo. Aún así, para una opción plug-and-play lista para usar, TGI es una gran elección.

LMDeploy: Despliegue eficaz con una velocidad de descodificación superior

LMDeploy es un conjunto de herramientas de los equipos MMRazor y MMDeploy, creado para comprimir, desplegar y ejecutar grandes modelos lingüísticos sin complicaciones. ¿Por qué destaca? Tiene una velocidad de descodificación excelente: hasta 1,8 veces más solicitudes por segundo que vLLM en una GPU A100. Esto se debe a trucos como el procesamiento por lotes persistente, el almacenamiento en caché de KV bloqueado y los hábiles núcleos CUDA que mantienen ocupada a la GPU.

LMDeploy

Tiene dos motores: TurboMind para obtener el máximo rendimiento y uno PyTorch para facilitar los retoques. TurboMind es la estrella aquí - empuja la inferencia de 4 bits 2,4 veces más rápido que FP16, y maneja grandes modelos como Llama-2 70B con facilidad. También puede cuantizar pesos y cachés KV para ahorrar memoria sin perjudicar la precisión. El despliegue también es muy sencillo: un solo comando configura un servidor en varias máquinas si es necesario. Además, recuerda el historial de chat en las conversaciones de varias rondas, por lo que no pierde el tiempo rehaciendo el trabajo anterior.

¿El inconveniente? TurboMind es quisquilloso: aún no funciona bien con modelos de atención de ventana deslizante como Mistral. Y si no utilizas GPUs NVIDIA, tendrás que recurrir al motor PyTorch, más lento. Aun así, si buscas velocidad y simplicidad en el hardware adecuado, LMDeploy es una gran elección.

Comparación de rendimiento: Latencia, rendimiento y escalabilidad

Analicemos cómo se comportan estos motores en cuanto a latencia (rapidez con la que finaliza una solicitud), rendimiento (cuántas solicitudes pueden recibir) y escalabilidad (cómo gestionan cargas mayores o más hardware).

TensorRT-LLM brilla en latencia si tienes GPUs NVIDIA. Está muy optimizado para el hardware de NVIDIA, por lo que las solicitudes individuales terminan rápidamente: menos de 50 ms para la mayoría de los modelos en una A100. El rendimiento también es excelente, especialmente con el procesamiento dinámico por lotes. Las pruebas realizadas por BentoML muestran que este motor alcanza los 700 tokens por segundo con 100 usuarios simultáneos para Llama 3 70B Q4 en una GPU A100 de 80 GB. TensorRT-LLM se comporta muy bien en escenarios con entradas largas y altas tasas de peticiones, ofreciendo un buen rendimiento. La escalabilidad en múltiples GPUs está soportada desde el primer momento con un rendimiento excelente.

vLLM también ofrece un buen rendimiento, sobre todo en cargas de trabajo de descodificación intensiva, con un alto rendimiento y una baja latencia tras las últimas actualizaciones. Las pruebas realizadas por BentoML muestran que este motor alcanza los 600-650 tokens por segundo con 100 usuarios simultáneos para Llama 3 70B Q4 en una GPU A100 de 80 GB. La latencia es buena, pero no tanto como la de TensorRT-LLM: en torno a 60-80 ms para ejecuciones en solitario. Escala bien entre GPUs, incluso mezclando marcas, pero está menos pulido para configuraciones enormes.

Hugging Face TGI funciona de forma similar a vLLM, ofreciendo un equilibrio entre rendimiento y facilidad de uso. La latencia es decente: 50-70 ms en una buena GPU. Las pruebas realizadas por BentoML muestran que este motor alcanza los 600-650 tokens por segundo con 100 usuarios simultáneos para Llama 3 70B Q4 en una GPU A100 de 80 GB. Está construido para escalar para producción, por lo que maneja más usuarios o máquinas sin problemas, especialmente con Docker.

LMDeploy gana en velocidad de descodificación. Sobresale en la tasa de generación de tokens, especialmente para modelos pequeños, y tiene un bajo tiempo hasta el primer token (TTFT) para modelos cuantizados grandes. La latencia es baja: 40-60 ms. Y el rendimiento es excelente. Las pruebas realizadas por BentoML muestran que este motor alcanza los 700 tokens por segundo con 100 usuarios simultáneos para Llama 3 70B Q4 en una GPU A100 de 80 GB. El escalado es fácil con su configuración de servidor, pero se apoya mucho en las GPU NVIDIA para obtener los mejores resultados; el modo PyTorch se queda atrás.

Conclusión: TensorRT-LLM y LMDeploy lideran en velocidad bruta. Tu elección dependerá de tu hardware y del número de solicitudes que gestiones.

Funciones de cuantificación

La cuantificación reduce la precisión del modelo para disminuir el uso de memoria y acelerar la inferencia, lo que es importante en entornos con recursos limitados. A continuación se muestra el rendimiento de cada motor:

TensorRT-LLM admite FP8, FP4, INT4 con cuantificación de pesos basada en la activación (AWQ) e INT8 con SmoothQuant, lo que ofrece sólidas opciones para optimizar el rendimiento de las GPU NVIDIA.

vLLM proporciona flexibilidad con GPTQ, AWQ, INT4, INT8 y FP8, adaptándose a diversas necesidades de hardware y precisión.

Hugging Face TGI integra bitsandbytes para la cuantificación de 8 y 4 bits y GPT-Q para la cuantificación de sólo peso, apta para implantaciones de producción.

LMDeploy ofrece AWQ de 4 bits, cuantificación de 8 bits y cuantificación de caché INT8/INT4 KV en línea, lo que mejora la eficiencia de los modelos de gran tamaño en hardware limitado.

Compatibilidad de hardware

El soporte de hardware determina dónde se pueden instalar estos motores, lo que repercute en la escalabilidad y el rendimiento:

TensorRT-LLM es exclusivo de NVIDIA CUDA y aprovecha los aceleradores de la GPU para obtener un alto rendimiento.

vLLM es compatible con NVIDIA CUDA, AMD ROCm, AWS Neuron y CPU, lo que ofrece una amplia compatibilidad para diversas configuraciones.

Hugging Face TGI funciona con NVIDIA CUDA, AMD ROCm, Intel Gaudi y AWS Inferentia, lo que proporciona flexibilidad para diversos entornos de hardware.

LMDeploy está optimizado para NVIDIA CUDA, lo que garantiza el máximo rendimiento en las GPU NVIDIA, pero con soporte limitado para otras plataformas.

Facilidad de uso

El proceso de configuración e integración puede afectar a los plazos de desarrollo. A continuación se explica cómo funciona cada motor:

TensorRT-LLM requiere convertir los puntos de control, construir el motor TensorRT y configurar los parámetros, lo que lo convierte en un reto y consume mucho tiempo para los ingenieros.

vLLM es fácil de usar, con una documentación exhaustiva, una instalación sencilla y una integración perfecta con la biblioteca Python.

Hugging Face TGI se beneficia del ecosistema de Hugging Face, que ofrece imágenes Docker preconstruidas y documentación exhaustiva para una rápida implantación.

LMDeploy ofrece una configuración sencilla con un solo comando para iniciar el servidor y API de Python para la personalización, equilibrando la facilidad con la flexibilidad.

Conclusión

Elegir el motor adecuado depende de su caso de uso, hardware y habilidades.

TensorRT-LLM es tu motor de inferencia si estás ejecutando grandes modelos en GPUs NVIDIA y necesitas cada onza de velocidad (piensa en aplicaciones de baja latencia como chatbots en tiempo real o asistentes de IA donde las respuestas tienen que generarse en milisegundos). Es perfecto para las empresas que ya están inmersas en el mundo de NVIDIA, pero puede resultar excesivo si lo que buscas es simplicidad.

vLLM es un gran compromiso entre velocidad y simplicidad. Funciona muy bien para nuevas empresas o investigadores que quieren algo flexible y rápido de configurar.

Hugging Face TGI es equivalente a vLLM en términos de velocidad y simplicidad. Es fácil de implantar, se escala sin problemas y se vincula al centro de modelos de Hugging Face, por lo que es ideal para equipos que desean una solución sencilla.

LMDeploy brilla por su rendimiento, al igual que TensorRT-LLM. Es adecuado para usuarios con GPU NVIDIA que desean una configuración sencilla y un rendimiento máximo, pero es menos práctico si tus modelos no funcionan bien con TurboMind.

Si no puede o no quiere desplegar su propio modelo GenAI usted mismo, puede utilizar NLP Cloud y aprovechar modelos rápidos de IA generativa a escala en producción. ¡Pruebe ahora la inferencia rápida en NLP Cloud!

Si tiene alguna pregunta sobre motores de inferencia en general, no dude en consultarnos, ¡siempre es un placer asesorarle!

Julien
Director Técnico de NLP Cloud