Los grandes modelos de lenguaje ahora están limitados menos por la capacitación y más por la rapidez y el bajo costo con el que podemos entregar tokens bajo tráfico real. Esto se reduce a tres detalles de implementación: cómo el tiempo de ejecución procesa por lotes las solicitudes, cómo se superpone el prellenado y la decodificación, y cómo almacena y reutiliza la caché KV. Los diferentes motores realizan diferentes compensaciones en estos ejes, que se muestran directamente como diferencias en los tokens por segundo, la latencia P50/P99 y el uso de memoria de la GPU.
Este artículo compara seis tiempos de ejecución que aparecen repetidamente en las pilas de producción:
vLLM TensorRT LLM Inferencia de generación de texto de cara abrazada (TGI v3) LMDeploy SGLang Inferencia de velocidad profunda/Inferencia ZeRO
1. vLLM
Diseño
vLLM se basa en PagedAttention. En lugar de almacenar el caché KV de cada secuencia en un búfer contiguo grande, divide KV en bloques de tamaño fijo y utiliza una capa de indirección para que cada secuencia apunte a una lista de bloques.
Esto da:
Fragmentación de KV muy baja (<4% de desperdicio reportado frente a 60-80% en asignadores ingenuos) Alta utilización de GPU con procesamiento por lotes continuo Soporte nativo para compartir prefijos y reutilización de KV a nivel de bloque
Las versiones recientes agregan cuantificación KV (FP8) e integran núcleos de estilo FlashAttention.
Actuación
Evaluación vLLM:
vLLM logra un rendimiento entre 14 y 24 veces mayor que Hugging Face Transformers y entre 2,2 y 3,5 veces mayor que el TGI anterior para los modelos LLaMA en GPU NVIDIA.
KV y comportamiento de la memoria.
PagedAttention proporciona un diseño KV que es compatible con GPU y resistente a la fragmentación. La cuantificación de KV del FP8 reduce el tamaño de KV y mejora el rendimiento de decodificación cuando la computación no es el cuello de botella.
donde encaja
Motor predeterminado de alto rendimiento cuando necesita un backend de servicio LLM general con buen rendimiento, buen TTFT y flexibilidad de hardware.
2. LLM TensorRT
Diseño
TensorRT LLM es un motor basado en compilación sobre NVIDIA TensorRT. Genera núcleos fusionados por modelo y forma, y expone una API ejecutora utilizada por marcos como Triton.
Su subsistema KV es explícito y rico en funciones:
Caché KV paginado Caché KV cuantificado (INT8, FP8, con algunas combinaciones aún en evolución) Caché KV de búfer circular Reutilización de caché KV, incluida la descarga de KV a la CPU y su reutilización entre mensajes para reducir TTFT
NVIDIA informa que la reutilización de KV basada en CPU puede reducir el tiempo hasta el primer token hasta 14 veces en H100 e incluso más en GH200 en escenarios específicos.
Actuación
TensorRT LLM es altamente ajustable, por lo que los resultados varían. Patrones comunes de comparaciones públicas y puntos de referencia de proveedores:
Latencia de solicitud única muy baja en las GPU NVIDIA cuando los motores se compilan para el modelo y la configuración exactos. Con una simultaneidad moderada, se puede ajustar para TTFT bajo o para alto rendimiento; Con una simultaneidad muy alta, los perfiles de rendimiento optimizado aumentan P99 debido al procesamiento por lotes agresivo.
KV y comportamiento de la memoria.
KV paginado más KV cuantificado brinda un fuerte control sobre el uso de la memoria y el ancho de banda. Las API de memoria y ejecutor le permiten diseñar políticas de enrutamiento con reconocimiento de caché en la capa de aplicación.
donde encaja
Cargas de trabajo críticas de latencia y entornos exclusivos de NVIDIA, donde los equipos pueden invertir en compilaciones de motores y ajustes por modelo.
3. Abrazar la cara TGI v3
Diseño
La inferencia de generación de texto (TGI) es una pila centrada en el servidor con:
Servidor HTTP y gRPC basado en Rust. Lotes continuos, streaming, ganchos de seguridad. Backends para PyTorch y TensorRT y estrecha integración con Hugging Face Hub.
TGI v3 agrega un nuevo proceso de contexto largo:
Prerrelleno fragmentado para entradas largas Almacenamiento en caché de prefijo KV para que los historiales de conversaciones largos no se vuelvan a calcular en cada solicitud
Actuación
Para indicaciones convencionales, el trabajo reciente de terceros muestra:
vLLM a menudo supera a TGI en tokens sin procesar por segundo con alta concurrencia debido a PagedAttention, pero la diferencia no es enorme en muchas configuraciones. TGI v3 procesa alrededor de 3 veces más tokens y es hasta 13 veces más rápido que vLLM en mensajes largos, en una configuración con historiales muy largos y almacenamiento en caché de prefijos habilitado.
Perfil de latencia:
P50 para indicaciones de longitud corta y media es similar a vLLM cuando ambos se ajustan con procesamiento por lotes continuo. Para historiales de chat largos, el prerrellenado domina en canales ingenuos; La reutilización de tokens anteriores por parte de TGI v3 proporciona una gran ganancia en TTFT y P50.
KV y comportamiento de la memoria.
TGI utiliza el almacenamiento en caché KV con núcleos de estilo de atención paginada y reduce el uso de memoria mediante la fragmentación del prellenado y otros cambios en el tiempo de ejecución. Integra cuantificación a través de bits y bytes y GPTQ y se ejecuta en varios backends de hardware.
donde cabe
La producción ya se acumula en Hugging Face, especialmente para cargas de trabajo de estilo chat con largos historiales donde el almacenamiento en caché de prefijos ofrece grandes ganancias en el mundo real.
4. Implementación LM
Diseño
LMDeploy es un conjunto de herramientas para la compresión y la implementación del ecosistema InternLM. Expone dos motores:
TurboMind: kernels CUDA de alto rendimiento para GPU NVIDIA Motor PyTorch: respaldo flexible
Características clave del tiempo de ejecución:
Procesamiento por lotes continuo y persistente Caché de KV bloqueado con un administrador para asignación y reutilización División y fusión dinámicas para bloques de atención Paralelismo tensor Solo peso y cuantificación de KV (incluido AWQ y cuantificación de KV INT8/INT4 en línea)
LMDeploy ofrece un rendimiento de solicitudes hasta 1,8 veces mayor que vLLM, lo que se atribuye a procesamiento por lotes persistente, KV bloqueado y núcleos optimizados.
Actuación
Las evaluaciones muestran:
Para modelos estilo Llama de 4 bits en A100, LMDeploy puede alcanzar tokens por segundo más altos que vLLM bajo restricciones de latencia comparables, especialmente en alta concurrencia. También informa que la inferencia de 4 bits es aproximadamente 2,4 veces más rápida que FP16 para los modelos compatibles.
Estado latente:
El TTFT de solicitud única se encuentra en el mismo estadio que otros motores de GPU optimizados cuando se configura sin límites de lotes extremos. En condiciones de alta concurrencia, el procesamiento por lotes persistente más el KV bloqueado permitieron a LMDeploy mantener un alto rendimiento sin el colapso de TTFT.
KV y comportamiento de la memoria.
La caché de KV bloqueada intercambia buffers contiguos por secuencia por una cuadrícula de fragmentos de KV administrados por el tiempo de ejecución, similar en espíritu a PagedAttention de vLLM pero con un diseño interno diferente. La compatibilidad con la cuantificación de peso y KV está dirigida a modelos grandes en GPU restringidas.
donde encaja
Implementaciones centradas en NVIDIA que desean el máximo rendimiento y se sienten cómodas usando herramientas específicas de TurboMind y LMDeploy.
5. Lenguaje SGL
Diseño
SGLang es ambos:
Un DSL para crear programas LLM estructurados, como agentes, flujos de trabajo RAG y canales de herramientas. Un tiempo de ejecución que implementa RadixAttention, un mecanismo de reutilización de KV que comparte prefijos utilizando una estructura de árbol de base en lugar de simples hashes de bloque.
RadixAtención:
Almacena KV para muchas solicitudes en un árbol de prefijos codificados por tokens. Permite altas tasas de aciertos de KV cuando muchas llamadas comparten prefijos, como pocas indicaciones de disparo, chat de múltiples turnos o cadenas de herramientas.
Actuación
Ideas clave:
SGLang logra un rendimiento hasta 6,4 veces mayor y una latencia hasta 3,7 veces menor que los sistemas básicos como vLLM, LMQL y otros en cargas de trabajo estructuradas. Las mejoras son mayores cuando hay una gran reutilización de prefijos, por ejemplo, chat de varios turnos o cargas de trabajo de evaluación con contexto repetido.
Las tasas de aciertos de caché KV reportadas oscilan entre aproximadamente el 50% y el 99%, y los programadores que reconocen el caché se acercan a la tasa de aciertos óptima en los puntos de referencia medidos.
KV y comportamiento de la memoria.
RadixAttention se ubica encima de los núcleos de estilo de atención paginada y se centra en la reutilización en lugar de solo en la asignación. SGLang se integra bien con sistemas de almacenamiento en caché de contexto jerárquico que mueven KV entre GPU y CPU cuando las secuencias son largas, aunque esos sistemas generalmente se implementan como proyectos separados.
donde cabe
Sistemas agentes, canales de herramientas y aplicaciones RAG pesadas donde muchas llamadas comparten prefijos de aviso grandes y la reutilización de KV es importante a nivel de aplicación.
6. Inferencia DeepSpeed / Inferencia ZeRO
Diseño
DeepSpeed proporciona dos piezas relevantes para la inferencia:
Inferencia DeepSpeed: núcleos de transformador optimizados más paralelismo de tensor y canalización. Inferencia ZeRO/Descarga ZeRO: técnicas que descargan los pesos de los modelos y, en algunas configuraciones, la caché KV, a la CPU o NVMe para ejecutar modelos muy grandes en una memoria GPU limitada.
ZeRO Inference se centra en:
Mantener pocos o ningún peso del modelo residente en la GPU. Transmitir tensores desde la CPU o NVMe según sea necesario. Orientar el rendimiento y el tamaño del modelo en lugar de una baja latencia.
Actuación
En el ejemplo de ZeRO Inference OPT 30B en un único V100 de 32 GB:
La descarga completa de la CPU alcanza aproximadamente 43 tokens por segundo La descarga completa de NVMe alcanza aproximadamente 30 tokens por segundo Ambas son entre 1,3 y 2,4 veces más rápidas que las configuraciones de descarga parcial, porque la descarga completa permite tamaños de lote más grandes
Estos números son pequeños en comparación con los tiempos de ejecución LLM residentes en GPU en A100 o H100, pero se aplican a un modelo que no cabe de forma nativa en 32 GB.
Una caracterización de E/S reciente de DeepSpeed y FlexGen confirma que los sistemas basados en descarga están dominados por lecturas pequeñas de 128 KiB y que el comportamiento de E/S se convierte en el principal cuello de botella.
KV y comportamiento de la memoria.
Los pesos de los modelos y, a veces, los bloques KV se descargan a la CPU o SSD para adaptarse a modelos que superan la capacidad de la GPU. TTFT y P99 son altos en comparación con los motores GPU puros, pero la desventaja es la capacidad de ejecutar modelos muy grandes que de otro modo no encajarían.
donde cabe
Inferencia sin conexión o por lotes, o servicios de bajo QPS donde el tamaño del modelo importa más que la latencia y el recuento de GPU.
Tablas comparativas
Esta tabla resume cualitativamente las principales compensaciones:
Elegir un tiempo de ejecución en la práctica
Para un sistema de producción, la elección tiende a reducirse a unos pocos patrones simples:
Quiere un motor predeterminado potente con un trabajo personalizado mínimo: puede comenzar con vLLM. Ofrece un buen rendimiento, TTFT razonable y un manejo sólido de KV en hardware común. Está comprometido con NVIDIA y desea un control detallado sobre la latencia y KV: puede usar TensorRT LLM, probablemente detrás de Triton o TGI. Planifique la construcción y puesta a punto de motores específicos del modelo. Tu pila ya está en Hugging Face y te interesan las conversaciones largas: puedes usar TGI v3. Su larga canalización de mensajes y su almacenamiento en caché de prefijos son muy efectivos para el tráfico de estilo conversación. Desea el máximo rendimiento por GPU con modelos cuantificados: puede usar LMDeploy con TurboMind y KV bloqueado, especialmente para modelos de la familia Llama de 4 bits. Está construyendo agentes, cadenas de herramientas o sistemas RAG pesados: puede usar SGLang y sugerencias de diseño para que la reutilización de KV a través de RadixAttention sea alta. Debe ejecutar modelos muy grandes en GPU limitadas: puede usar DeepSpeed Inference/Zero Inference, aceptar una mayor latencia y tratar la GPU como un motor de rendimiento con SSD en el bucle.
En general, todos estos motores convergen en la misma idea: la caché KV es el verdadero recurso de cuello de botella. Los ganadores son los tiempos de ejecución que tratan a KV como una estructura de datos de primera clase para ser paginada, cuantificada, reutilizada y descargada, no solo un gran tensor colocado en la memoria de la GPU.

Michal Sutter es un profesional de la ciencia de datos con una Maestría en Ciencias de Datos de la Universidad de Padua. Con una base sólida en análisis estadístico, aprendizaje automático e ingeniería de datos, Michal se destaca en transformar conjuntos de datos complejos en conocimientos prácticos.
🙌 Siga MARKTECHPOST: agréguenos como fuente preferida en Google.