Conclusiones clave
- vLLM y Hugging Face TGI son los dos servidores de inferencia de código abierto (Apache 2.0) dominantes para servicio multiinquilino de alto rendimiento; ambos soportan continuous batching y paralelismo tensor multi-GPU.
- NVIDIA NIM es un microservicio de pago y preconstruido (suscripción NVIDIA AI Enterprise) que envuelve TensorRT-LLM para el máximo rendimiento en hardware NVIDIA, con soporte respaldado por SLA.
- Ollama no está diseñado para servicio multiinquilino empresarial -- es un runtime orientado a un solo nodo y un solo usuario; úselo para portátiles de desarrolladores y prototipos de edge/departamento, no para tráfico de API en producción.
- La madurez de Kubernetes difiere: vLLM y TGI ofrecen Helm charts comunitarios/oficiales, NIM tiene su propio Operator de NVIDIA, Ollama solo tiene charts comunitarios sin ganchos de autoescalado nativos.
- La licencia determina el coste total: vLLM y TGI son gratuitos y de código abierto; NIM añade un coste de suscripción por GPU además de la GPU misma, a cambio de soporte y optimización llave en mano.
- La observabilidad difiere marcadamente: vLLM y TGI exponen métricas de Prometheus de serie; NIM se integra con la pila de monitorización DCGM/Base Command de NVIDIA; Ollama tiene telemetría integrada mínima.
- Use vLLM para el mejor rendimiento por precio de código abierto, TGI si ya está dentro del ecosistema Hugging Face, NIM si necesita soporte del fabricante y puede pagarlo, y reserve Ollama para prototipado.
📍 En una frase
Para el servicio de LLM multi-GPU empresarial, vLLM y Hugging Face TGI son las dos opciones de código abierto listas para producción, NVIDIA NIM es la alternativa de pago llave en mano, y Ollama está diseñado para un solo usuario, no multiinquilino.
💬 En términos simples
Ejecutar un modelo de IA en su portátil es un problema distinto a atender a cientos de empleados o clientes desde un grupo de GPU compartido. vLLM y TGI son software gratuito diseñado para el segundo problema. NVIDIA NIM hace el mismo trabajo como producto de pago y ya empaquetado, con soporte de NVIDIA detrás. Ollama, la herramienta que la mayoría usa para probar un modelo en local, no se diseñó para tantos usuarios simultáneos.
¿Qué es un servidor de inferencia LLM empresarial?
Un servidor de inferencia LLM empresarial es la capa de software que acepta solicitudes concurrentes de muchos usuarios o aplicaciones y las enruta eficientemente por un grupo de GPU compartido. Es distinto de un runtime de un solo usuario, que carga un modelo para un solo proceso en una sola máquina.
Tres cosas separan al software de servicio de nivel empresarial de una herramienta de portátil: continuous batching (agrupar varias solicitudes en curso en el mismo paso de GPU), paralelismo multi-GPU (repartir un modelo entre varias GPU o nodos), y una superficie de API de producción (health checks, métricas, ganchos de autoescalado) que un equipo de plataforma puede operar dentro de Kubernetes.
vLLM, Hugging Face TGI y NVIDIA NIM se construyeron desde el inicio en torno a estos tres requisitos. Ollama, construido sobre llama.cpp, se diseñó para la portabilidad y la simplicidad en una sola máquina -- un objetivo distinto y válido, pero no el mismo. Consulte nuestra comparativa de motores para un solo usuario si la pregunta que realmente se está haciendo es "qué se instala más fácil en mi PC" -- esta guía cubre el otro extremo de esa decisión.
Comparativa: vLLM vs TGI vs NVIDIA NIM vs Ollama
| Capacidad | vLLM | TGI | NVIDIA NIM | Ollama |
|---|---|---|---|---|
| Licencia | Apache 2.0 / Gratis | Apache 2.0 / Gratis | NVIDIA AI Enterprise / Pago | MIT / Gratis |
| Diseñado para | Servicio GPU de alto rendimiento | Servicio de producción nativo HF | Stack empresarial NVIDIA llave en mano | Un usuario, no multiinquilino |
| Multi-GPU | Paralelismo tensor + pipeline | Paralelismo tensor | Paralelismo tensor (TensorRT-LLM) | Solo un nodo |
| Continuous batching | Sí (PagedAttention) | Sí (router Rust) | Sí (backend Triton) | Limitado / experimental |
| Cuantización | GPTQ / AWQ / FP8 / INT4 | GPTQ / AWQ / bitsandbytes | FP8 / INT4 (TensorRT-LLM) | GGUF Q4-Q8 |
| Despliegue Kubernetes | Helm chart / KServe | Helm chart oficial de HF | NIM Operator (oficial) | Solo charts comunitarios |
| Modelo de soporte | Comunidad / GitHub | Comunidad + contratos HF | Soporte NVIDIA con SLA | Solo comunidad |
| Observabilidad | Métricas Prometheus integradas | Prometheus + trazas OTel | NVIDIA DCGM + Prometheus | Mínima / ninguna integrada |
Entendiendo vLLM: el líder de rendimiento de código abierto
vLLM es un servidor de inferencia de código abierto (Apache 2.0) diseñado específicamente para servicio multi-GPU de alto rendimiento. Surgió del Sky Computing Lab de UC Berkeley y es uno de los motores de código abierto más desplegados para APIs de LLM en producción.
- PagedAttention: gestiona la caché KV en bloques de tamaño fijo en lugar de una asignación contigua por solicitud, lo que eleva la utilización de memoria GPU alcanzable y permite que más solicitudes concurrentes compartan una GPU.
- Continuous batching: las nuevas solicitudes se unen a un lote en ejecución en lugar de esperar a que termine el lote actual, manteniendo alta la utilización de GPU bajo tráfico variable.
- Multi-GPU y multi-nodo: el paralelismo tensor reparte las capas de un modelo entre las GPU de un nodo; el paralelismo de pipeline reparte entre nodos para modelos demasiado grandes para la VRAM combinada de un nodo.
- Cuantización: los formatos GPTQ, AWQ, FP8 e INT4 reducen la huella de VRAM por réplica, aumentando el número de réplicas simultáneas que una flota de GPU fija puede alojar.
- API compatible con OpenAI:
vllm serve <model>expone un reemplazo directo de la API OpenAI Chat Completions, minimizando el trabajo de integración en la aplicación. - vLLM incluye un Helm chart oficial y se integra con KServe para servicio de modelos nativo de Kubernetes, con autoescalado impulsado por la profundidad de la cola o la utilización de GPU.
# Servir un modelo con paralelismo tensor en 4 GPU
pip install vllm
vllm serve meta-llama/Llama-3.3-70B-Instruct \
--tensor-parallel-size 4 \
--gpu-memory-utilization 0.9 \
--host 0.0.0.0 --port 8000Entendiendo Hugging Face TGI: la opción nativa de Hugging Face
Hugging Face Text Generation Inference (TGI) es un servidor de inferencia de código abierto (Apache 2.0) construido por Hugging Face para el despliegue en producción de modelos alojados en el Hugging Face Hub. Impulsa el propio producto Inference Endpoints de Hugging Face, así que ya gestiona tráfico a escala empresarial en producción.
- Router de solicitudes en Rust: gestiona colas y continuous batching con menos sobrecarga por solicitud que un router puramente en Python.
- Flash Attention y Paged Attention: TGI adoptó las mismas técnicas de eficiencia de memoria que vLLM, cerrando la mayor parte de la brecha de rendimiento entre ambos en hardware comparable.
- Paralelismo tensor: reparte un modelo entre varias GPU de un nodo; el servicio multi-nodo está soportado pero con menos herramientas propias que en vLLM.
- Cuantización: formatos bitsandbytes, GPTQ, AWQ y EETQ.
- Integración nativa con Hugging Face Hub: obtener un modelo, su tokenizador y sus pesos safetensors no requiere ningún paso de conversión manual si el modelo ya está alojado en el Hub.
- Nota de licencia: TGI se distribuyó brevemente bajo una licencia más restrictiva escrita por Hugging Face (HFOILv2) en 2023-2024 antes de volver a Apache 2.0 -- confirme la versión de licencia fijada en su manifiesto de despliegue, ya que una imagen antigua en caché puede seguir llevando la etiqueta restrictiva.
Entendiendo NVIDIA NIM: la opción con respaldo del fabricante
NVIDIA NIM (NVIDIA Inference Microservices) es un contenedor de pago y preconstruido que envuelve el motor de inferencia TensorRT-LLM de NVIDIA detrás de una API estandarizada, vendido como parte de la suscripción NVIDIA AI Enterprise. Cambia la configuración manual de vLLM y TGI por un despliegue respaldado y ya optimizado.
- Contenedores optimizados con TensorRT-LLM: NVIDIA precompila y ajusta los kernels de inferencia por modelo y por generación de GPU (H100, A100, L40S), lo que suele producir el mayor rendimiento por GPU de las cuatro opciones en hardware NVIDIA específicamente.
- Soporte y SLA respaldados por NVIDIA: el diferenciador frente a las opciones de código abierto -- una vía de tickets de soporte y compromisos de disponibilidad que un equipo de plataforma puede incluir en un contrato con el fabricante.
- NIM Operator para Kubernetes: el operador propio de NVIDIA basado en Helm para desplegar, escalar y gestionar contenedores NIM en un clúster, incluyendo integración con la propia pila de monitorización de NVIDIA (DCGM Exporter, Base Command).
- Catálogo de modelos: NVIDIA mantiene un conjunto curado de modelos de pesos abiertos preempaquetados como contenedores NIM listos para usar, más una vía para empaquetar modelos afinados propios.
- La contrapartida es el bloqueo con el fabricante y el coste de licencia: NIM solo funciona eficientemente en GPU NVIDIA, y la suscripción se cobra por GPU y año además del coste del hardware mismo -- confirme los precios actuales directamente con NVIDIA AI Enterprise antes de presupuestar, ya que los precios de suscripción de software empresarial cambian sin mucho aviso público.
Por qué Ollama no es un motor de servicio empresarial
Ollama no está diseñado para el servicio multiinquilino empresarial, y eso es una decisión de diseño, no un defecto. Ollama envuelve llama.cpp con una API REST sencilla y descarga de modelos en un solo comando, optimizado para un desarrollador ejecutando un modelo en una máquina.
- Concurrencia: Ollama añadió gestión básica de solicitudes paralelas, pero no tiene continuous batching ni gestión de memoria al estilo PagedAttention, así que el rendimiento se degrada más rápido con muchos usuarios simultáneos que vLLM o TGI en la misma GPU.
- Multi-GPU: Ollama puede repartir un modelo grande entre las GPU de una máquina, pero no tiene servicio paralelo tensor o multi-nodo nativo comparable a vLLM.
- Kubernetes: solo existen Helm charts mantenidos por la comunidad; no hay operador propio de Kubernetes, integración de autoescalador ni contrato de soporte del fabricante.
- Observabilidad: métricas integradas mínimas -- sin endpoint de Prometheus por defecto, a diferencia de vLLM y TGI.
- Dónde Ollama sigue siendo la herramienta correcta en una empresa: portátiles de desarrolladores, un prototipo departamental con poco tráfico interno, o un dispositivo edge aislado que atiende a un usuario a la vez. En cuanto el tráfico necesite concurrencia multiinquilino, pase a vLLM, TGI o NIM -- vea configuraciones multi-GPU para LLM locales para el lado del hardware de ese cambio.
Decisiones de arquitectura: un nodo vs multi-nodo
La primera decisión de arquitectura es un solo nodo frente a multi-nodo, y se decide por si el modelo cabe en la memoria GPU combinada de un nodo, no solo por el volumen de tráfico.
- Un nodo, multi-GPU: use paralelismo tensor (
--tensor-parallel-sizeen vLLM,--num-sharden TGI) para repartir las capas de un modelo entre las GPU de un servidor. Es el estándar para modelos que caben en la VRAM combinada de un nodo. - Multi-nodo: añada paralelismo de pipeline en cuanto un modelo supere la memoria GPU de un nodo, o el volumen de solicitudes supere lo que el paralelismo tensor en un nodo puede atender. vLLM lo soporta vía Ray; NIM mediante sus propias plantillas de despliegue multi-nodo.
- Balanceo de carga: un balanceador round-robin sencillo funciona para réplicas de tamaño idéntico, pero el enrutamiento consciente de la caché KV -- devolver una solicitud de seguimiento de la misma conversación a la réplica que ya tiene su contexto en caché -- reduce notablemente la latencia en cargas de tipo chat.
- Enrutamiento de modelos: las empresas que ejecutan más de un modelo (por ejemplo, uno de código y otro de chat general) suelen operar grupos de réplicas separados por modelo detrás de una capa de enrutamiento, en lugar de un grupo compartido -- la memoria GPU no se comparte con suficiente limpieza entre modelos muy distintos como para justificar la complejidad.
- Autoescalado: escale según la profundidad de la cola o la utilización de GPU, no según CPU (el valor por defecto clásico del HPA de Kubernetes) -- la utilización de CPU de un pod de inferencia GPU apenas se mueve sin importar la carga. KEDA con una métrica de Prometheus personalizada es el patrón habitual para vLLM/TGI; el Operator de NIM lo integra como parte del producto. Vea escalado de LLM locales para empresas para la planificación de capacidad más amplia detrás de esto.
Cómo desplegar un stack de inferencia multi-GPU
Desplegar un stack de inferencia empresarial sigue una secuencia fija: definir el SLA, dimensionar la flota, elegir el motor, y luego conectar despliegue, enrutamiento y observabilidad alrededor.
- 1Definir el SLA de latencia y concurrencia antes de elegir el hardware.
- 2Dimensionar la flota de GPU según la huella de VRAM del modelo y el objetivo de solicitudes concurrentes, no solo según el número de parámetros del modelo.
- 3Elegir el motor de servicio -- vLLM o TGI para flexibilidad de código abierto, NIM para despliegue llave en mano respaldado por el fabricante.
- 4Contenerizar el motor y desplegarlo vía Helm (o el NIM Operator) en su clúster de Kubernetes.
- 5Configurar el paralelismo tensor dentro de un nodo y el paralelismo de pipeline entre nodos si el modelo lo requiere.
- 6Configurar balanceo de carga consciente de la caché KV o round-robin delante del grupo de réplicas.
- 7Conectar el autoescalado a la profundidad de la cola o la utilización de GPU, no al CPU.
- 8Añadir observabilidad con Prometheus/OpenTelemetry y hacer pruebas de carga a la concurrencia objetivo antes de salir a producción.
Licencias y modelo de soporte comparados
La licencia es la partida que más cambia el coste total de propiedad entre estas cuatro opciones. vLLM y Hugging Face TGI están bajo licencia Apache 2.0 y son gratuitos a cualquier escala -- solo paga la infraestructura GPU subyacente. NVIDIA NIM añade una suscripción por GPU y año además del coste de la GPU misma, a cambio de rendimiento optimizado con TensorRT-LLM y un contrato de soporte del fabricante -- confirme los precios actuales por GPU directamente con NVIDIA, ya que los precios de suscripción de software empresarial no se publican como los de un producto de consumo. Ollama tiene licencia MIT y es gratuito, con soporte limitado a su comunidad de GitHub y Discord -- no existe un nivel de soporte empresarial de pago a día de hoy.
El modelo de soporte importa tanto como el coste de licencia para un sistema de producción: el soporte de vLLM y TGI viene de issues de GitHub y canales comunitarios (rápido en problemas populares, sin SLA), NIM viene con un contrato de soporte de NVIDIA y compromisos de disponibilidad, y Ollama no tiene ninguna vía de soporte más allá de los canales comunitarios.
Puntos de observabilidad para servicio en producción
**vLLM y TGI exponen de serie un endpoint /metrics compatible con Prometheus, cubriendo latencia de solicitudes, profundidad de cola, utilización de la caché KV de GPU y rendimiento en tokens.** Conéctelo a una pila Prometheus/Grafana existente para paneles de nivel de producción sin instrumentación personalizada.
NVIDIA NIM se integra con la propia pila de monitorización de NVIDIA -- DCGM Exporter para métricas a nivel de GPU (utilización, memoria, temperatura, errores ECC) y Base Command Manager para visibilidad a nivel de flota -- un mejor encaje si el resto de la infraestructura ya está centrada en NVIDIA.
Ollama tiene telemetría integrada mínima: sin endpoint de Prometheus por defecto, coherente con su diseño de un solo usuario, pero una brecha real si intenta operarlo como infraestructura compartida y necesita ver la latencia por solicitud entre muchos usuarios simultáneos.
¿Qué servidor de inferencia elegir?
Mejor opción de código abierto en general: vLLM -- mayor adopción de la comunidad, herramientas multi-GPU más amplias, ritmo de desarrollo activo.
Mejor opción si ya usa Hugging Face: TGI -- integración nativa con el Hub, paridad con Inference Endpoints oficial.
Mejor opción si necesita soporte del fabricante: NVIDIA NIM -- respaldado por SLA, llave en mano, a cambio de un coste de suscripción.
No para tráfico de producción multiinquilino: Ollama -- resérvelo para máquinas de desarrolladores y despliegues de edge de un solo usuario.
- 🧭 Equipo de plataforma con una API LLM interna compartida para varios equipos → vLLM o TGI, autoalojados en Kubernetes.
- 🧭 Empresa regulada que necesita un contrato de soporte y un registro de auditoría → NVIDIA NIM.
- 🧭 Equipo ya estandarizado en Hugging Face Hub para alojar modelos → TGI.
- 🧭 Desarrolladores construyendo una prueba de concepto antes de aprovisionar infraestructura → Ollama, y luego migrar a vLLM/TGI en cuanto el tráfico concurrente sea real.
- ❌ Si espera más de un puñado de usuarios concurrentes, no ponga Ollama detrás de un endpoint de producción compartido -- use vLLM o TGI en su lugar.
- ❌ Si necesita autoescalado nativo de Kubernetes según la carga de solicitudes, Ollama no tiene equivalente al escalado por profundidad de cola de KEDA -- use vLLM, TGI o NIM.
Errores comunes al dimensionar infraestructura de inferencia empresarial
- Dimensionar las GPU por número de parámetros en lugar de por número de solicitudes concurrentes. Una flota de GPU dimensionada solo para que quepa una copia del modelo en VRAM no tiene margen para usuarios concurrentes -- dimensione para la concurrencia máxima y luego compruebe que el modelo sigue cabiendo.
- Desplegar Ollama detrás de un balanceador de carga de producción compartido. Funciona en una demo con dos usuarios; no aguanta en un diseño pensado para cientos.
- Escalar según la utilización de CPU. Los pods de inferencia GPU apenas mueven la CPU sin importar la carga -- escale según la profundidad de la cola o la utilización de GPU.
- Ignorar la comprobación de licencia en imágenes antiguas de TGI en caché. Confirme que la etiqueta de imagen obtenida corresponde a la versión Apache 2.0, no a una build de la era HFOILv2 en caché.
- Presupuestar NIM sin confirmar los precios actuales por GPU directamente con NVIDIA. Los precios de suscripción de software empresarial cambian; una cotización antigua no es una base de presupuesto.
Fuentes
- Documentación de vLLM -- Docs oficiales de vLLM: PagedAttention, continuous batching y guías de despliegue multi-GPU/multi-nodo.
- Hugging Face Text Generation Inference (GitHub) -- Repositorio oficial de TGI: arquitectura, formatos de cuantización soportados e historial de licencias.
- Documentación de NVIDIA NIM -- Docs oficiales de NIM: modelos soportados, backend TensorRT-LLM y el NIM Operator para Kubernetes.
- Ollama GitHub -- Repositorio oficial de Ollama y seguimiento de issues, referenciado para el comportamiento de concurrencia y despliegue.
- NVIDIA AI Enterprise -- Página de producto de NVIDIA para la suscripción AI Enterprise bajo la que se distribuye NIM.
Preguntas frecuentes
¿Cuál es la diferencia entre vLLM y NVIDIA NIM?
vLLM es un servidor de inferencia gratuito y de código abierto (Apache 2.0) que usted autoaloja y opera. NVIDIA NIM es un contenedor de pago y preconstruido de NVIDIA que envuelve el motor TensorRT-LLM, vendido con una suscripción NVIDIA AI Enterprise por GPU y soporte del fabricante. NIM suele alcanzar el mayor rendimiento por GPU en hardware NVIDIA porque NVIDIA preajusta los kernels de inferencia; vLLM da más control y ningún coste de licencia, a costa de hacer usted mismo ese ajuste y soporte.
¿Puede usarse Ollama para servicio de inferencia multiusuario empresarial?
No se recomienda para tráfico de producción multiinquilino. Ollama no tiene continuous batching ni gestión de memoria al estilo PagedAttention, ni autoescalado nativo de Kubernetes, así que se degrada más rápido bajo carga concurrente que vLLM, TGI o NIM en la misma GPU. Encaja bien en máquinas de desarrolladores, dispositivos edge de un solo usuario, o prototipos internos de bajo tráfico.
¿Merece la pena NVIDIA NIM frente a vLLM o TGI de código abierto?
Depende de si el contrato de soporte del fabricante y el rendimiento preoptimizado valen el coste de suscripción para usted, frente a mantener la infraestructura gratuita y operarla usted mismo. Las empresas reguladas que necesitan un registro de auditoría y un SLA suelen justificar el coste; los equipos con experiencia interna en infraestructura de ML suelen obtener un rendimiento comparable con vLLM o TGI sin coste de licencia.
¿Cómo se escala la inferencia de LLM entre varias GPU y nodos?
Use paralelismo tensor para repartir las capas de un modelo entre las GPU de un mismo nodo, y paralelismo de pipeline para repartir entre varios nodos en cuanto el modelo supere la memoria GPU combinada de un nodo. vLLM soporta ambos de forma nativa (multi-nodo vía Ray); TGI soporta paralelismo tensor de forma nativa con menos herramientas multi-nodo propias; NIM soporta ambos mediante las propias plantillas multi-nodo de NVIDIA.
¿Qué formatos de cuantización soporta cada servidor de inferencia?
vLLM soporta GPTQ, AWQ, FP8 e INT4. TGI soporta bitsandbytes, GPTQ, AWQ y EETQ. NVIDIA NIM usa la cuantización FP8 e INT4 propia de TensorRT-LLM, ajustada por generación de GPU. Ollama usa el formato GGUF en precisión Q4 a Q8, orientado al ahorro de memoria en una máquina en lugar del rendimiento multiusuario.
¿Cómo se despliega vLLM o TGI en Kubernetes?
Ambos ofrecen imágenes de contenedor desplegables y Helm charts -- vLLM también se integra con KServe para servicio de modelos nativo de Kubernetes, y TGI tiene un Helm chart oficial de Hugging Face. Configure las resource requests según su asignación de GPU, ajuste el autoescalado a la profundidad de cola o la utilización de GPU en lugar del CPU, y añada un ServiceMonitor de Prometheus para leer el endpoint de métricas integrado.
¿Qué es el continuous batching y por qué importa para el servicio empresarial?
El continuous batching permite que nuevas solicitudes se unan a un lote de GPU ya en ejecución, en lugar de esperar a que termine el lote actual antes de iniciar uno nuevo. Mantiene alta la utilización de GPU bajo patrones de tráfico real irregulares, por lo que es estándar en vLLM, TGI y el backend TensorRT-LLM de NIM, y es una de las mayores diferencias de rendimiento frente a una herramienta de un solo usuario como Ollama.
¿Qué servidor de inferencia tiene mejor observabilidad?
vLLM y TGI exponen de serie un endpoint de métricas compatible con Prometheus, cubriendo latencia, profundidad de cola y utilización de la caché KV de GPU -- un encaje directo con una pila Prometheus/Grafana existente. NVIDIA NIM se integra con DCGM Exporter y Base Command Manager de NVIDIA, un mejor encaje para infraestructura centrada en NVIDIA. Ollama tiene telemetría integrada mínima y ningún endpoint de métricas por defecto.
¿Necesitan varios modelos flotas de GPU separadas, o pueden compartir un mismo grupo?
En la práctica, las empresas que ejecutan más de un modelo suelen operar grupos de réplicas separados por modelo en lugar de compartir un grupo, porque la memoria GPU no se comparte con suficiente limpieza entre modelos de tamaños muy distintos. Enrute las solicitudes al grupo correcto en la capa de aplicación o de gateway, en lugar de intentar colocar varios modelos en las mismas réplicas de GPU.
¿Cómo difiere la licencia entre vLLM, TGI y NVIDIA NIM?
vLLM y Hugging Face TGI están bajo licencia Apache 2.0 y son gratuitos a cualquier escala -- solo paga la infraestructura GPU subyacente. NVIDIA NIM requiere una suscripción de pago NVIDIA AI Enterprise, facturada por GPU y año, además del coste del hardware GPU; confirme los precios actuales directamente con NVIDIA en lugar de fiarse de una cotización anterior. Ollama tiene licencia MIT y es gratuito, con soporte solo comunitario.