Cómo Netflix sirve sus propios LLM en producción: decisiones y lecciones

Fuentes: In-House LLM Serving at Netflix

Netflix ha optado por ejecutar internamente la pila completa de servicio de modelos de lenguaje grandes (LLM), desde el despliegue hasta la inferencia, dentro de su entorno de producción habitual en lugar de un silo de aprendizaje automático separado. El artículo, firmado por los equipos Model Runtime e Inference de la plataforma de IA, detalla las decisiones clave que marcaron el diseño del sistema y los problemas que solo emergieron bajo carga real.

El servicio se apoya en una plataforma JVM unificada que gestiona enrutamiento, pruebas A/B, posprocesamiento y registro. Los modelos pequeños se ejecutan en CPU dentro del propio proceso, mientras que los modelos grandes con GPU delegan la inferencia en el Model Scoring Service (MSS), respaldado por NVIDIA Triton y un plano de control en Java que automatiza versionado, escalado y despliegues multirregión.

Inicialmente se utilizaba TensorRT-LLM, pero en verano de 2025 Netflix migró a vLLM como motor estandarizado por su flexibilidad con arquitecturas personalizadas, sus puntos de extensión para decodificación restringida, su depurabilidad y la familiaridad del equipo. Para empaquetar modelos eligió el backend de vLLM de Triton frente al backend Python, ya que desacopla los artefactos de las actualizaciones del frontend. Esa elección expuso dos problemas de producción: incompatibilidades de versión entre Triton y vLLM, y la necesidad de mantener el backend Python para modelos con lógica no estándar.

En la capa de API, Netflix expone una interfaz compatible con OpenAI junto a la gRPC propia, lo que permite migrar de modelos alojados a modelos propios ajustados con cambios mínimos. Detectaron además un fallo silencioso en el parámetro response_format, que descartaba las restricciones de decodificación guiada antes de llegar a vLLM, y lo corrigieron parcheando el frontend. Para los despliegues en GPU, comparan dos estrategias: red-black, adecuada cuando la interfaz es estable, y versionado, pensada para cambios de esquema de entrada y salida.