---
title: "Netflix con vLLM y Triton: lecciones de producción"
canonical: https://wavect.io/es/blog/netflix-vllm-triton-inference-stack/
language: es
description: "Así opera Netflix vLLM con NVIDIA Triton: decoding restringido, GIL, despliegues, caché, métricas y una prueba práctica de build-vs-buy."
image: "https://wavect.io/img/blog/headers/header_netflix-vllm-triton-inference-stack.png"
---

[**Volver**](/es/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/es/team/kevin-riedl/)

[Kevin Riedl](/es/team/kevin-riedl/) https://linkedin.com/in/wsdt

12 min de lectura · 16 de agosto de 2026 Última revisión 16 de agosto de 2026

[**Siguiente**](/es/blog/self-hosting-llms-eu-cost/)

# El stack vLLM y Triton de Netflix: 7 lecciones de producción

Resumen

Netflix describió una vía interna para servir LLM formada por una capa unificada, Model Scoring Service, NVIDIA Triton y vLLM. El equipo prefirió vLLM a su vía anterior con TensorRT-LLM por el soporte más rápido de arquitecturas propias, la facilidad de depuración, los puntos de extensión y la familiaridad de los investigadores. Producción mostró problemas que los benchmarks simples no ven: los logits processors en Python quedaron limitados por CPU al aumentar el batch, algunos campos de API podían aceptarse y desaparecer en silencio, la descarga de modelos retrasaba el arranque, las versiones incompatibles de Triton y vLLM fallaban al cargar y las métricas separadas ocultaban el estado real. La lección transferible es poseer primero el contrato, las pruebas, el rollout y la observabilidad antes de poseer cada componente de inferencia. Las APIs alojadas siguen encajando con demanda baja o irregular. Un stack interno cobra sentido cuando el decoding propio, el volumen estable, la privacidad o el control del modelo justifican un equipo de plataforma dedicado.

La versión viral de esta historia es sencilla: Netflix dejó de pagar a un proveedor de IA y lo construyó todo por su cuenta. La versión útil exige más precisión. Los equipos de AI Platform de Netflix describieron [una vía interna para servir LLM con NVIDIA Triton y vLLM](https://netflixtechblog.com/in-house-llm-serving-at-netflix-a5a8e799ea2c). Explicaron por qué encajaba con sus cargas, dónde falló bajo concurrencia real y qué tuvieron que construir alrededor.

Esa diferencia importa si estás decidiendo una arquitectura de inferencia. Copiar la lista de componentes te da software. Copiar los límites de decisión te da un modelo operativo. Este artículo extrae esos límites y deja el coste, la residencia de datos y el equilibrio general en su página propietaria: nuestra guía sobre [cuándo compensa autoalojar un LLM en la UE](/es/blog/self-hosting-llms-eu-cost/).

## ¿Netflix usa OpenAI?

No es correcto concluir que Netflix nunca usa OpenAI. En otro sistema de Netflix, MediaFM, el equipo dice que utilizó [text-embedding-3-large de OpenAI para texto temporizado y metadatos de títulos](https://medium.com/netflix-techblog/mediafm-the-multimodal-ai-foundation-for-media-understanding-at-netflix-e8c28df82e2d). El artículo de serving demuestra que Netflix opera una vía interna con vLLM y Triton para cargas seleccionadas. No demuestra una prohibición corporativa de modelos alojados.

La lección para un comprador es más fuerte que el titular absoluto: una cartera de IA madura puede usar distintas vías de inferencia para trabajos distintos. Las APIs alojadas sirven para experimentos rápidos o capacidades caras de reproducir. El serving interno sirve para modelos propios, reglas de decoding propietarias, carga predecible o mayor control. La arquitectura debe seguir el límite de la carga, no un eslogan para toda la empresa.

## ¿Cómo es la arquitectura de serving LLM de Netflix?

El diseño público tiene cuatro capas. Las aplicaciones existentes llaman por gRPC a un sistema de serving unificado sobre JVM. Ese sistema controla el routing, la asignación A/B, la obtención de features y el preprocesado y posprocesado. Los modelos grandes se delegan a Model Scoring Service, el backend común de inferencia. Debajo, NVIDIA Triton gestiona la carga de modelos y la ejecución en GPU, mientras vLLM es el motor preferente para las cargas LLM.

1. **Contrato del consumidor:** los servicios usan la misma abstracción de scoring para ML clásico y LLM.
2. **Flujo de serving:** routing, experimentos y preparación de datos quedan fuera del motor.
3. **Plano de control:** despliegue, salud, autoscaling, versiones y rollout multirregión siguen siendo responsabilidades de plataforma.
4. **Plano de inferencia:** Triton aloja los backends y vLLM controla scheduling, batching y decoding.

Las aplicaciones LLM nuevas también pueden usar un frontend HTTP compatible con OpenAI. Es una decisión de interfaz, no una prueba de que OpenAI aloje el modelo. Separar protocolo y proveedor permite conservar un cliente conocido mientras la plataforma cambia el motor que hay detrás.

## ¿Por qué eligió Netflix vLLM en vez de TensorRT-LLM?

Netflix empezó con TensorRT-LLM. Para el verano de 2025, su equipo consideró que los motores open source habían reducido la brecha de rendimiento para su mezcla de cargas. El encaje operativo pasó a decidir. vLLM cargaba arquitecturas propias sin el anterior proceso de compilación en varios pasos, ofrecía hooks para decoding propio, facilitaba inspeccionar estados intermedios y ya era conocido por los investigadores.

| Factor | Por qué importaba | Pregunta para tu equipo |
| --- | --- | --- |
| Ritmo de cambio | Los modelos propios llegaban a serving sin otro flujo de artefactos compilados | ¿Con qué frecuencia cambian las capas o formas del modelo? |
| Depuración | El estado y los fallos eran más fáciles de inspeccionar | ¿Quién diagnostica una carga fallida a las 02:00? |
| Extensión del decoding | Los logits processors propios eran centrales | ¿Necesitas reglas que una API de salida estructurada no expresa? |
| Familiaridad | Los investigadores ya usaban vLLM | ¿Pueden reproducir el comportamiento de producción antes del handover? |
| Benchmark máximo | Importante, pero no decisivo de forma aislada | ¿Tu prueba refleja modelos, batches y restricciones reales? |

No es un veredicto universal sobre vLLM y TensorRT-LLM. Ambos proyectos siguen cambiando. Es un método repetible: mide tu carga real y después valora el camino de ingeniería entre investigación, despliegue, depuración y rollback. Unos tokens más por segundo no compensan una plataforma que tu equipo no puede cambiar con seguridad.

## ¿Por qué chocó el decoding restringido con el GIL de Python?

El decoding restringido impide tokens inválidos durante la generación en lugar de reparar una salida malformada después. Netflix modeló cada restricción como una máquina de estados que producía una máscara de tokens permitidos en cada paso. En vLLM V0, el procesador Python propio se ejecutaba por petición. La GPU producía logits en batch y después la lógica de CPU procesaba cada petición en serie. El tiempo de CPU crecía con el batch porque el Global Interpreter Lock de Python impedía paralelizar el camino crítico.

vLLM V1 añadió un modelo a nivel de batch. Netflix reescribió el procesador sobre estructuras de batch y llevó el camino crítico a C++ multihilo. La documentación actual de vLLM también define una [interfaz de logits processors a nivel de batch](https://docs.vllm.ai/en/latest/api/vllm/v1/sample/logits_processor/index.html) cuya función `apply` recibe el tensor de logits completo.

La dificultad no desapareció. Los batches dinámicos requieren actualizaciones explícitas de estado. Un prefill dividido puede durar varios pasos. Bajo presión de memoria, la preemption puede expulsar el KV cache y reprogramar la petición con un historial más corto. Netflix añadió seguimiento del prefill parcial y reinició la máquina de estados cuando el historial se reducía. El tiempo plano llegó de un nuevo modelo de estado, no de cambiar de versión sin más.

## Siete lecciones de producción que sí conviene copiar

### 1. Elige por encaje operativo y después mide

Usa modelos, concurrencia, longitud de prompts y respuestas y restricciones representativas. Mide time to first token, latencia entre tokens, throughput y cola de latencia. Incluye el tiempo de empaquetar, diagnosticar y actualizar. Un motor forma parte de un sistema de release.

### 2. Mantén el contrato del consumidor por encima del motor

Netflix no obligó a cada caller a entender vLLM. Su capa existente siguió controlando routing, experimentos y lógica de flujo. Un contrato interno estable permite cambiar de motor sin reescribir cada integración. El mismo principio aparece en nuestra [arquitectura de producción para una plataforma LLM con estado](/es/blog/stateful-llm-platform-production-architecture/): el comportamiento duradero del producto no debe depender de un runtime.

### 3. Fija todo el conjunto compatible

El backend vLLM de Triton depende de una superficie concreta de vLLM. Netflix informó de un backend que dejó de cargar cuando las versiones divergieron. NVIDIA publica una [matriz de compatibilidad de Triton y vLLM](https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/introduction/compatibility.html). Trata imagen de Triton, versión de vLLM, CUDA, driver y plugins como una unidad probada. No permitas que un paquete de modelo sustituya una pieza por separado.

### 4. Prueba la semántica de API, no solo el código 200

Netflix descubrió que el frontend compatible con OpenAI aceptaba `response_format`, pero lo descartaba antes de vLLM. La llamada terminaba bien y la restricción prometida desaparecía. Netflix corrigió la traducción. La [documentación del frontend OpenAI para Triton](https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/client_guide/openai_readme.html) muestra cómo se compone con vLLM, pero tus contract tests deben verificar el efecto de cada campo del que dependa el producto.

### 5. Ajusta el rollout al riesgo de interfaz

Netflix usa Red-Black cuando la interfaz del modelo es estable. La versión nueva arranca junto a la anterior, supera health checks y recibe tráfico por fases. Un cambio de forma de tensor rompe esa coordinación. Los despliegues versionados mantienen ambas interfaces hasta que migren los consumidores. El coste temporal de GPU compra una ventana segura.

### 6. Coloca los pesos en una ruta de arranque asumible

Las descargas grandes desde object storage alargaban demasiado los cold starts, así que Netflix materializó modelos anunciados en Amazon FSx. AWS explica que un archivo de FSx for Lustre enlazado a S3 paga latencia en el primer acceso salvo que el equipo [precargue su contenido](https://docs.aws.amazon.com/fsx/latest/LustreGuide/preload-file-contents-hsm-dra.html). La regla general no depende del proveedor: la colocación de pesos forma parte del despliegue, se verifica antes de readiness y se mide en un nodo vacío.

### 7. Une la observabilidad del motor y del servidor

El bridge de Triton mostraba solo parte de las métricas vLLM que Netflix necesitaba. El equipo fusionó las métricas de Triton y los archivos Prometheus de vLLM en un endpoint. Tu panel mínimo debe conectar tasa, cola, time to first token, latencia entre tokens, throughput, uso del KV cache, prefix-cache hits, preemption, estado de carga, errores y saturación de GPU. Una GPU verde puede convivir con un camino de logits en CPU roto.

## ¿Debe tu empresa copiar a Netflix o usar una API alojada?

| Señal | Inferencia alojada o gestionada | Plataforma interna vLLM y Triton |
| --- | --- | --- |
| Demanda | Baja, incierta o irregular | Estable para planificar capacidad GPU |
| Modelo | Modelos y funciones estándar | Arquitecturas, plugins o decoding propios |
| Cambios | El proveedor opera las actualizaciones | Un equipo fija, prueba y revierte el stack |
| Datos | El procesamiento contratado es aceptable | La inferencia queda en infraestructura controlada |
| Observabilidad | Las métricas del proveedor bastan | Necesitas evidencia de tokens, caché y scheduler |
| Fallos | Prefieres el failover del proveedor | Puedes operar varias versiones y guardias |

Elige una plataforma interna solo si al menos un requisito diferenciador sobrevive una evaluación seria de servicios gestionados. El decoding propio, una carga alta y estable o un límite estricto de datos pueden justificarla. No querer facturas por token no es, por sí solo, una arquitectura.

## Un plan práctico de validación en 90 días

1. **Semanas 1 y 2, contrato:** fija prompts, schemas, objetivos de latencia, evaluaciones y fallos. Registra el baseline alojado.
2. **Semanas 3 a 5, benchmark real:** prueba motores con concurrencia, restricciones y variantes representativas. Incluye CPU y cold starts.
3. **Semanas 6 a 8, operaciones:** fija imágenes, precarga pesos, unifica métricas y ensaya fallo de carga y rollback.
4. **Semanas 9 y 10, tráfico sombra:** compara calidad, latencia y cumplimiento de schema sin respuestas visibles.
5. **Semanas 11 a 13, decisión comercial:** compara el coste completo de plataforma con la factura alojada, incluyendo ingeniería, redundancia, soporte y upgrades.

Si la latencia es el problema principal, separa la arquitectura de serving de la propiedad del modelo. Nuestro análisis de una [KV cache compartida que redujo el time to first token](/es/blog/shared-kv-cache-llm-inference-latency/) muestra cuánto puede aportar una mejora concreta sin sustituir toda la vía.

## Preguntas sobre Netflix, vLLM y Triton

### ¿Netflix ejecuta toda su inferencia LLM internamente?

Netflix ha documentado una vía interna con vLLM y Triton, pero también describe embeddings de OpenAI en otro sistema llamado MediaFM. La evidencia muestra una arquitectura por cargas, no que toda su IA sea autoalojada.

### ¿Por qué prefirió Netflix vLLM a TensorRT-LLM?

Para la mezcla reevaluada en 2025, Netflix priorizó arquitecturas propias, extensión del decoding, depuración y familiaridad del equipo después de que el rendimiento open source fuera competitivo. Es una decisión específica, no un ranking permanente.

### ¿Qué causó el cuello de botella del decoding restringido?

vLLM V0 ejecutaba el procesamiento Python de logits por petición después del batch de GPU. El trabajo de CPU crecía con el batch y el GIL impedía paralelizar. Netflix pasó al nivel de batch de vLLM V1 y a un camino crítico C++ multihilo.

### ¿Hace falta NVIDIA Triton para usar vLLM?

No. vLLM puede servir una API compatible con OpenAI. Triton interesa si necesitas un repositorio común, varios backends, integración con un plano de control u operaciones consolidadas. También añade una superficie de compatibilidad que debes fijar y probar.

### ¿Cuándo debería una empresa menor autoalojar la inferencia?

Cuando decoding o modelos propios, límites estrictos de datos o utilización estable aporten una ventaja medible y un equipo pueda asumir upgrades, observabilidad, rollback y guardias. Para demanda baja, irregular o estándar, la inferencia gestionada suele ser el inicio más simple.

## El límite que debes poseer es el operativo

La mejor lección de Netflix no es una lista de marcas. Es el orden de propiedad: contrato estable, selección con cargas reales, runtime fijado, pruebas semánticas de API, rollout según riesgo, pesos en la ruta de despliegue y una vista común de CPU, caché, scheduler y GPU.

El trabajo de [AI enablement y arquitectura de inferencia de Wavect](/es/services/ai-enablement/) cubre esa evaluación desde el benchmark hasta el handover. El [caso Twinsoft AI](/es/case-studies/twinsoft-ai/) muestra cómo convertimos decisiones de IA en un flujo de producto probado. Usa nuestra [guía del prototipo a producción](/es/software-development-guide/vibe-coded-prototype-to-production/) para dimensionar el resto de la plataforma, o [solicita una revisión de arquitectura de inferencia](/es/contact/) con tus restricciones de tráfico, datos y modelos.

Modelos e infraestructura

## Continúa por este clúster

Selección de modelos, economía de inferencia, despliegue local, compresión y serving.

[Empieza por el artículo fundamental**Alojar LLMs en la UE: Cuándo Salen a Cuenta los Open Weights**](/es/blog/self-hosting-llms-eu-cost/)

- [Transformers.js en el navegador: cuándo llevar la IA local a tu producto](/es/blog/transformers-js-browser-ai-guide/)
- [Cómo autoalojar LiteLLM en producción: guía 2026](/es/blog/self-host-litellm-production-2026/)
- [Wiki empresarial preparada para IA: arquitectura e implementación](/es/blog/ai-ready-company-wiki/)
- [¿Claude añade marcas de agua al texto? Respuesta API 2026](/es/blog/claude-text-watermark-api-2026/)
- [Review de OpenKB: compilador de conocimiento vs RAG](/es/blog/openkb-review-vs-rag/)

Tu bandeja, sin ruido

## Sigue el trabajo que te importa

Recibe un correo breve cuando publiquemos algo nuevo. Sigue todo el blog o solo los temas que te interesan.

[**Volver**](/es/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/es/team/kevin-riedl/)

[Kevin Riedl](/es/team/kevin-riedl/) https://linkedin.com/in/wsdt

12 min de lectura · 16 de agosto de 2026 Última revisión 16 de agosto de 2026

[**Siguiente**](/es/blog/self-hosting-llms-eu-cost/)

Nuevos artículos por correo ×

×

Recibe nuevos artículos por correo

Un correo breve cuando publicamos. Gratis y sin seguimiento.

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/es/blog/netflix-vllm-triton-inference-stack/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-08-16",
      "inLanguage": "es",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-08-16",
      "url": "https://wavect.io/es/blog/netflix-vllm-triton-inference-stack/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "Netflix describió una vía interna para servir LLM formada por una capa unificada, Model Scoring Service, NVIDIA Triton y vLLM. El equipo prefirió vLLM a su vía anterior con TensorRT-LLM por el soporte más rápido de arquitecturas propias, la facilidad de depuración, los puntos de extensión y la familiaridad de los investigadores. Producción mostró problemas que los benchmarks simples no ven: los logits processors en Python quedaron limitados por CPU al aumentar el batch, algunos campos de API podían aceptarse y desaparecer en silencio, la descarga de modelos retrasaba el arranque, las versiones incompatibles de Triton y vLLM fallaban al cargar y las métricas separadas ocultaban el estado real. La lección transferible es poseer primero el contrato, las pruebas, el rollout y la observabilidad antes de poseer cada componente de inferencia. Las APIs alojadas siguen encajando con demanda baja o irregular. Un stack interno cobra sentido cuando el decoding propio, el volumen estable, la privacidad o el control del modelo justifican un equipo de plataforma dedicado.",
  "articleBody": " Resumen del blog/IA y agentes/Modelos e infraestructura El stack vLLM y Triton de Netflix: 7 lecciones de producción Resumen Netflix describió una vía interna para servir LLM formada por una capa unificada, Model Scoring Service, NVIDIA Triton y vLLM. El equipo prefirió vLLM a su vía anterior con TensorRT-LLM por el soporte más rápido de arquitecturas propias, la facilidad de depuración, los puntos de extensión y la familiaridad de los investigadores. Producción mostró problemas que los benchmarks simples no ven: los logits processors en Python quedaron limitados por CPU al aumentar el batch, algunos campos de API podían aceptarse y desaparecer en silencio, la descarga de modelos retrasaba el arranque, las versiones incompatibles de Triton y vLLM fallaban al cargar y las métricas separadas ocultaban el estado real. La lección transferible es poseer primero el contrato, las pruebas, el rollout y la observabilidad antes de poseer cada componente de inferencia. Las APIs alojadas siguen encajando con demanda baja o irregular. Un stack interno cobra sentido cuando el decoding propio, el volumen estable, la privacidad o el control del modelo justifican un equipo de plataforma dedicado. La versión viral de esta historia es sencilla: Netflix dejó de pagar a un proveedor de IA y lo construyó todo por su cuenta. La versión útil exige más precisión. Los equipos de AI Platform de Netflix describieron una vía interna para servir LLM con NVIDIA Triton y vLLM. Explicaron por qué encajaba con sus cargas, dónde falló bajo concurrencia real y qué tuvieron que construir alrededor. Esa diferencia importa si estás decidiendo una arquitectura de inferencia. Copiar la lista de componentes te da software. Copiar los límites de decisión te da un modelo operativo. Este artículo extrae esos límites y deja el coste, la residencia de datos y el equilibrio general en su página propietaria: nuestra guía sobre cuándo compensa autoalojar un LLM en la UE. ¿Netflix usa OpenAI? No es correcto concluir que Netflix nunca usa OpenAI. En otro sistema de Netflix, MediaFM, el equipo dice que utilizó text-embedding-3-large de OpenAI para texto temporizado y metadatos de títulos. El artículo de serving demuestra que Netflix opera una vía interna con vLLM y Triton para cargas seleccionadas. No demuestra una prohibición corporativa de modelos alojados. La lección para un comprador es más fuerte que el titular absoluto: una cartera de IA madura puede usar distintas vías de inferencia para trabajos distintos. Las APIs alojadas sirven para experimentos rápidos o capacidades caras de reproducir. El serving interno sirve para modelos propios, reglas de decoding propietarias, carga predecible o mayor control. La arquitectura debe seguir el límite de la carga, no un eslogan para toda la empresa. ¿Cómo es la arquitectura de serving LLM de Netflix? El diseño público tiene cuatro capas. Las aplicaciones existentes llaman por gRPC a un sistema de serving unificado sobre JVM. Ese sistema controla el routing, la asignación A/B, la obtención de features y el preprocesado y posprocesado. Los modelos grandes se delegan a Model Scoring Service, el backend común de inferencia. Debajo, NVIDIA Triton gestiona la carga de modelos y la ejecución en GPU, mientras vLLM es el motor preferente para las cargas LLM. Contrato del consumidor: los servicios usan la misma abstracción de scoring para ML clásico y LLM. Flujo de serving: routing, experimentos y preparación de datos quedan fuera del motor. Plano de control: despliegue, salud, autoscaling, versiones y rollout multirregión siguen siendo responsabilidades de plataforma. Plano de inferencia: Triton aloja los backends y vLLM controla scheduling, batching y decoding. Las aplicaciones LLM nuevas también pueden usar un frontend HTTP compatible con OpenAI. Es una decisión de interfaz, no una prueba de que OpenAI aloje el modelo. Separar protocolo y proveedor permite conservar un cliente conocido mientras la plataforma cambia el motor que hay detrás. ¿Por qué eligió Netflix vLLM en vez de TensorRT-LLM? Netflix empezó con TensorRT-LLM. Para el verano de 2025, su equipo consideró que los motores open source habían reducido la brecha de rendimiento para su mezcla de cargas. El encaje operativo pasó a decidir. vLLM cargaba arquitecturas propias sin el anterior proceso de compilación en varios pasos, ofrecía hooks para decoding propio, facilitaba inspeccionar estados intermedios y ya era conocido por los investigadores. FactorPor qué importabaPregunta para tu equipo Ritmo de cambioLos modelos propios llegaban a serving sin otro flujo de artefactos compilados¿Con qué frecuencia cambian las capas o formas del modelo? DepuraciónEl estado y los fallos eran más fáciles de inspeccionar¿Quién diagnostica una carga fallida a las 02:00? Extensión del decodingLos logits processors propios eran centrales¿Necesitas reglas que una API de salida estructurada no expresa? FamiliaridadLos investigadores ya usaban vLLM¿Pueden reproducir el",
  "articleSection": "Engineering",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "citation": [
    {
      "@type": "WebPage",
      "name": "una vía interna para servir LLM con NVIDIA Triton y vLLM",
      "url": "https://netflixtechblog.com/in-house-llm-serving-at-netflix-a5a8e799ea2c"
    },
    {
      "@type": "WebPage",
      "name": "text-embedding-3-large de OpenAI para texto temporizado y metadatos de títulos",
      "url": "https://medium.com/netflix-techblog/mediafm-the-multimodal-ai-foundation-for-media-understanding-at-netflix-e8c28df82e2d"
    },
    {
      "@type": "WebPage",
      "name": "interfaz de logits processors a nivel de batch",
      "url": "https://docs.vllm.ai/en/latest/api/vllm/v1/sample/logits_processor/index.html"
    },
    {
      "@type": "WebPage",
      "name": "matriz de compatibilidad de Triton y vLLM",
      "url": "https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/introduction/compatibility.html"
    },
    {
      "@type": "WebPage",
      "name": "documentación del frontend OpenAI para Triton",
      "url": "https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/client_guide/openai_readme.html"
    },
    {
      "@type": "WebPage",
      "name": "precargue su contenido",
      "url": "https://docs.aws.amazon.com/fsx/latest/LustreGuide/preload-file-contents-hsm-dra.html"
    }
  ],
  "dateModified": "2026-08-16",
  "datePublished": "2026-08-16",
  "description": "Netflix describió una vía interna para servir LLM formada por una capa unificada, Model Scoring Service, NVIDIA Triton y vLLM. El equipo prefirió vLLM a su vía anterior con TensorRT-LLM por el soporte más rápido de arquitecturas propias, la facilidad de depuración, los puntos de extensión y la familiaridad de los investigadores. Producción mostró problemas que los benchmarks simples no ven: los logits processors en Python quedaron limitados por CPU al aumentar el batch, algunos campos de API podían aceptarse y desaparecer en silencio, la descarga de modelos retrasaba el arranque, las versiones incompatibles de Triton y vLLM fallaban al cargar y las métricas separadas ocultaban el estado real. La lección transferible es poseer primero el contrato, las pruebas, el rollout y la observabilidad antes de poseer cada componente de inferencia. Las APIs alojadas siguen encajando con demanda baja o irregular. Un stack interno cobra sentido cuando el decoding propio, el volumen estable, la privacidad o el control del modelo justifican un equipo de plataforma dedicado.",
  "headline": "El stack vLLM y Triton de Netflix: 7 lecciones de producción",
  "image": "https://wavect.io/img/blog/headers/header_netflix-vllm-triton-inference-stack.svg",
  "inLanguage": "es",
  "keywords": "Infraestructura de IA, Inferencia LLM",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/es/blog/netflix-vllm-triton-inference-stack/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/es/blog/netflix-vllm-triton-inference-stack/",
  "wordCount": 2406
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/",
      "name": "Inicio",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/blog/overview/",
      "name": "Resumen del blog",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/blog/topics/ai-agents/",
      "name": "IA y agentes",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/blog/clusters/models-infrastructure/",
      "name": "Modelos e infraestructura",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/blog/netflix-vllm-triton-inference-stack/",
      "name": "Netflix con vLLM y Triton: lecciones de producción | ",
      "position": 5
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Netflix ha documentado una vía interna con vLLM y Triton, pero también describe embeddings de OpenAI en otro sistema llamado MediaFM. La evidencia muestra una arquitectura por cargas, no que toda su IA sea autoalojada."
      },
      "name": "¿Netflix ejecuta toda su inferencia LLM internamente?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Para la mezcla reevaluada en 2025, Netflix priorizó arquitecturas propias, extensión del decoding, depuración y familiaridad del equipo después de que el rendimiento open source fuera competitivo. Es una decisión específica, no un ranking permanente."
      },
      "name": "¿Por qué prefirió Netflix vLLM a TensorRT-LLM?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "vLLM V0 ejecutaba el procesamiento Python de logits por petición después del batch de GPU. El trabajo de CPU crecía con el batch y el GIL impedía paralelizar. Netflix pasó al nivel de batch de vLLM V1 y a un camino crítico C++ multihilo."
      },
      "name": "¿Qué causó el cuello de botella del decoding restringido?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. vLLM puede servir una API compatible con OpenAI. Triton interesa si necesitas un repositorio común, varios backends, integración con un plano de control u operaciones consolidadas. También añade una superficie de compatibilidad que debes fijar y probar."
      },
      "name": "¿Hace falta NVIDIA Triton para usar vLLM?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Cuando decoding o modelos propios, límites estrictos de datos o utilización estable aporten una ventaja medible y un equipo pueda asumir upgrades, observabilidad, rollback y guardias. Para demanda baja, irregular o estándar, la inferencia gestionada suele ser el inicio más simple."
      },
      "name": "¿Cuándo debería una empresa menor autoalojar la inferencia?"
    }
  ]
}
```
