🎙️ Episodio 105. Cómo LinkedIn actualiza sus modelos de IA cada hora (y por qué importa)

En el episodio de hoy hablamos del entrenamiento incremental, una técnica de Machine Learning que marca la diferencia entre las empresas que saben hacer IA a escala y las que no y cómo lo está utilizando LinkedIn.

Las dos señales que distinguen a los profesionales de Machine Learning

Hay dos cosas en Machine Learning que distinguen claramente a las personas sin experiencia de las que saben de lo que va el tema.

La primera es el uso de Notebooks.

Los notebooks de Jupyter son fantásticos para experimentar y prototipar, pero no son la herramienta adecuada para sistemas en producción. Si quieres profundizar en esto, te recomiendo escuchar el episodio 94 del podcast donde hablo precisamente de por qué los notebooks no son profesionales.

La segunda es creer que un modelo se entrena una vez y pasa bastante tiempo hasta que es necesario volverlo a entrenar. Esta idea no puede estar más alejada de la realidad en sistemas a escala como LinkedIn.

Y es precisamente de esta segunda señal de la que vamos a hablar hoy.

El problema del entrenamiento tradicional "cold start"

Imaginemos que trabajas en LinkedIn y te han encargado crear un modelo de machine learning que recomienda ofertas de trabajo a los usuarios.

La forma tradicional de entrenar estos modelos es lo que se llama "cold start" o entrenamiento desde cero. Seguro que te suena el proceso:

El proceso tradicional paso a paso

  1. Recopilación de datos históricos: Reunir todo el histórico disponible y asegurar su calidad mediante limpieza, eliminación de duplicados y tratamiento de valores faltantes.
  2. Ingeniería de características: Transformar los datos brutos en variables útiles y consistentes. Estas características generalmente se almacenan en un feature store para que diferentes equipos puedan reutilizarlas.
  3. División del dataset: Separar los datos en subconjuntos de entrenamiento, validación y prueba, cuidando que no haya fugas de información ni sesgos temporales.
  4. Entrenamiento desde cero: Iniciar el modelo con pesos aleatorios o por defecto. El modelo aprende iterativamente de todo el conjunto histórico.
  5. Evaluación y validación: Analizar métricas de rendimiento y estabilidad para seleccionar la mejor versión del modelo.
  6. Despliegue inicial: Publicar el modelo en producción y comenzar a recoger feedback y nuevos datos para futuros entrenamientos.

Los tres grandes problemas del enfoque tradicional

Este enfoque tradicional tiene varios problemillas importantes:

  1. Primero, es carísimo. Re-entrenar sobre datos que ya habíamos usado es como si cada vez que quisieras añadir una página nueva a un libro, tuvieras que reescribir el libro entero desde la primera página. Un desperdicio absoluto de recursos computacionales.
  2. Segundo, es lento. Si el entrenamiento tarda 12 horas, solo puedes actualizar el modelo una vez al día como mucho. Y en ese tiempo, el mundo cambia. Habrán aparecido nuevas ofertas de trabajo, los usuarios han interactuado de formas nuevas, especialmente ahora que LinkedIn está en su prime de interacción. El modelo está desfasado antes de empezar.
  3. Tercero, es frágil. Si algo falla a mitad del entrenamiento cuando llevas procesando datos durante 8 horas, hay que empezar de cero otra vez. Nada de guardar el progreso.

La solución: entrenamiento incremental

Aquí es donde entra el concepto del entrenamiento incremental que usan en LinkedIn.

La idea es súper simple en teoría: en lugar de entrenar desde cero cada vez, cogemos el modelo ya entrenado y simplemente lo actualizamos con los datos más recientes.

Es como actualizar una aplicación en tu móvil. No borras la app y la instalas desde cero cada vez, simplemente descargas lo nuevo y lo añades a lo que ya tienes.

Los resultados de LinkedIn con entrenamiento incremental

Con esta estrategia, LinkedIn ha conseguido:

  • Ahorro de costes de casi 9 veces en algunos de sus pipelines. Lo que antes les costaba 9 euros ahora les cuesta 1 euro.
  • Actualizaciones mucho más rápidas: pueden actualizar sus modelos cada hora en lugar de una vez al día.
  • Mayor frescura de los datos: los modelos que recomiendan publicaciones, anuncios o empleos se mantienen actualizados en tiempo real o casi real.

Ventajas adicionales del entrenamiento incremental

Más allá del ahorro de costes y la velocidad, el entrenamiento incremental ofrece:

  • Mayor tolerancia a fallos: Si un entrenamiento falla a mitad de proceso, no hay que recomenzar desde cero. El sistema guarda estados intermedios (los checkpoints) que permiten retomar desde el último punto válido.
  • Mayor consistencia de las características: Usan los mismos datos "casi en tiempo real" para inferencia y entrenamiento, lo que reduce el riesgo de que el modelo aprenda con información desfasada.

Pero... y aquí viene lo interesante... implementar esto en producción no es tan sencillo como suena.

Los desafíos técnicos del entrenamiento incremental a escala

Hay un montón de desafíos al intentar hacer esto a escala. Vamos a ver los más importantes:

1. El problema de la generación de datos en tiempo real

Este es uno de mis favoritos porque es súper sutil pero muy importante.

En un sistema de entrenamiento incremental continuo, los datos llegan en flujo constante desde plataformas de mensajería como Kafka. El problema es que las librerías de deep learning como PyTorch o TensorFlow están diseñadas para leer datos en batches estáticos, como archivos CSV o Parquet.

Por lo tanto:

  • Es necesario serializar y deserializar correctamente las características para reconstruir los tensores con la estructura esperada.
  • El sistema debe consumir y procesar datos lo bastante rápido como para no quedarse atrás respecto al flujo de eventos que van llegando.

La solución de LinkedIn: generación en tiempo real

LinkedIn resolvió esto generando los datos de entrenamiento casi en tiempo real.

Cada vez que alguien interactúa con una publicación o con una oferta de trabajo, registran exactamente las features que se usaron en ese momento para hacer la recomendación.

Después, esas interacciones se procesan con Apache Flink, un motor de stream processing que les permite unir, transformar y escalar todos esos eventos en paralelo, manteniendo la latencia bajísima incluso con millones de usuarios activos.

Los números son impresionantes: procesan entre 30,000 y 35,000 eventos por segundo con una latencia de menos de 5 milisegundos.

2. El desafío de la robustez y la estandarización

Cuando se pasa de un entrenamiento puntual a uno continuo, el sistema nunca se detiene. Ya no es un notebook que lanzas cuando quieres probar algo, sino una cadena automatizada que está entrenando modelos nuevos cada poco tiempo.

Cualquier pequeño fallo —un bug en una librería, un checkpoint corrupto— puede tirar abajo el flujo completo si no está bien controlado.

En los entrenamientos tradicionales, los ingenieros de IA usan sus propios bucles de entrenamiento y librerías personalizadas sin problema. Pero en un entorno incremental, donde el modelo se reentrena de forma programada o continua, hace falta algo mucho más robusto.

Grafos estáticos: la clave de la estabilidad

LinkedIn resuelve esto mediante dos estrategias:

  1. Aislar el código del usuario del código de infraestructura
  2. Estandarizar los bucles de entrenamiento mediante grafos estáticos de TensorFlow o PyTorch

¿Qué son estos grafos estáticos? Son una representación fija y predefinida de todas las operaciones que ejecuta un modelo de machine learning: las entradas, las transformaciones intermedias, el cálculo de la función de pérdida, el backpropagation y la actualización del optimizador.

En lugar de ejecutar el código línea a línea como haríamos en un notebook, se construye una especie de mapa completo del flujo de cálculo antes de empezar a entrenar.

Ese grafo describe todo lo que el modelo hará, y luego puede ejecutarse muchas veces sin necesidad de interpretar de nuevo el código Python.

Beneficios de los grafos estáticos

Esto les permite:

  • Detectar errores rápido: antes de ejecutar el entrenamiento completo
  • Gestionar dependencias de forma centralizada: sin conflictos entre versiones
  • Mantener el sistema corriendo sin interrupciones: con mayor predictibilidad

Pensad que si cada ingeniero pudiera subir su propio script de Python con dependencias distintas, sería una pesadilla operativa con versiones incompatibles, errores difíciles de rastrear y tiempos de respuesta lentos ante fallos.

3. El control del estado y los checkpoints

Como estos modelos están siempre aprendiendo, hay que llevar un control total del estado.

El sistema debe guardar no solo el checkpoint con los pesos del modelo, sino también:

  • Qué datos ya se entrenaron
  • Cuáles quedan pendientes
  • De qué versión del modelo viene cada ejecución

Si algo falla (por ejemplo, un checkpoint corrupto), el pipeline puede retroceder al último estado sano y reanudar el entrenamiento desde ahí, sin perder datos ni duplicar trabajo.

La arquitectura completa: cómo LinkedIn junta todas las piezas

Ahora que entendemos los problemas, vamos a ver cómo LinkedIn integra todas las piezas del sistema.

1. Generación de datos en tiempo casi real

Procesan entre 30,000 y 35,000 eventos por segundo con una latencia de menos de 5 milisegundos.

Estos eventos pasan por un pipeline que:

  • Los transforma al formato correcto
  • Hace downsampling: normalmente cuando LinkedIn te muestra una publicación o anuncio es mucho más frecuente que no hagas clic a que sí lo hagas. Tienen muchos más eventos negativos que positivos y hay que balancear eso.

2. Ingesta de datos en streaming

Ingestan estos datos en streaming y los convierten al formato que necesitan PyTorch o TensorFlow, resolviendo el problema de incompatibilidad entre datos en flujo continuo y librerías de deep learning.

3. Entrenamiento en Kubernetes

El entrenamiento en sí ocurre en Kubernetes, usando OpenConnect, que es su plataforma de pipelines de IA construida internamente.

4. Despliegue y monitorización

Los modelos entrenados se:

  • Guardan en su sistema de almacenamiento
  • Despliegan a producción a través de su plataforma de serving
  • Coordinan con Airflow
  • Monitorizan con MLFlow
  • Envían métricas constantemente a dashboards en tiempo real

Es como una máquina perfectamente engrasada donde cada pieza hace su trabajo y se comunica con las demás.

Los resultados: ¿mereció la pena?

Después de todo este trabajo para implementar el entrenamiento de modelos incremental, ¿les mereció la pena a LinkedIn?

Los números hablan por sí solos:

  • Más de un 2% de aumento en aplicaciones cualificadas a ofertas de trabajo
  • Más de un 4% de aumento en clicks en anuncios
  • Más de un 2% de aumento en interacciones profesionales en el feed

Puede que estos porcentajes no parezcan enormes, pero estamos hablando de LinkedIn, con cientos de millones de usuarios. Un 2% de mejora son millones de interacciones adicionales y muchos euros en valor.

Lecciones aprendidas: qué podemos aplicar nosotros

Vale, y ahora la pregunta del millón: ¿qué podemos aprender nosotros de esto si no trabajamos en LinkedIn?

Yo creo que hay varias lecciones importantes:

1. El mundo real es complicado

Implementar algo que funciona en un notebook de Jupyter y llevarlo a producción son dos mundos completamente diferentes.

LinkedIn tuvo que reconstruir gran parte de su stack de datos para hacer esto posible. No es solo cuestión de copiar código de un tutorial.

2. La frescura de los datos importa

En un mundo que cambia rápido, tener un modelo que se entrena una vez a la semana te deja atrás de la competencia.

Los usuarios cambian, las tendencias evolucionan, el mercado se mueve. Tu modelo necesita adaptarse a esa velocidad o quedarse obsoleto.

3. Diseñar para fallos

Los sistemas en producción fallan. Siempre.

Tener mecanismos para recuperarse rápidamente es tan importante como que funcionen bien cuando todo va bien.

Los checkpoints, la tolerancia a fallos, la capacidad de retomar desde el último estado válido... todo esto no es opcional cuando operas a escala.

4. La estandarización y la automatización son claves

LinkedIn no podría mantener estos sistemas si cada equipo hiciera las cosas a su manera.

Necesitaron crear abstracciones y herramientas comunes que todos usan, garantizando consistencia, mantenibilidad y escalabilidad.

Entrenamiento incremental vs. entrenamiento tradicional: comparativa

Para que quede todo claro, aquí tienes una tabla comparativa:

AspectoEntrenamiento TradicionalEntrenamiento Incremental
CosteAlto (re-procesa todo)Bajo (9x más económico)
VelocidadLento (horas/días)Rápido (actualización cada hora)
FrescuraModelo desfasadoModelo actualizado constantemente
Tolerancia a fallosBaja (empezar desde cero)Alta (checkpoints intermedios)
ComplejidadMediaAlta (requiere arquitectura robusta)
ConsistenciaRiesgo de desfaseDatos en tiempo real

Y puedes leer el artículo original en el blog de ingeniería de LinkedIn

Espero que te guste el episodio.

Si es así, no olvides dejar un «Me gusta» y algún comentario al episodio en Ivoox o una valoración de 5 estrellas del podcast en Apple podcasts, en Spotify, en Youtube o donde quiera que escuches el podcast.

Recuerda que si tienes cualquier duda o pregunta puedes contactar conmigo a través del formulario de contacto o podemos seguir la conversación en LinkedIn.

Muchas gracias por estar ahí y te espero en el próximo episodio de Un Podcast Ninja sobre Big Data.

Accede a todo el contenido premium

Ya no necesitas pagar cientos de euros por un Bootcamp para convertirte en ninja de los datos. Por solo 17€/mes (o menos 🤯), obtén acceso al podcast premium, a todos los tutoriales y a los resúmenes de los libros más top sobre Machine Learning y Ciencia de datos y aprende a tu ritmo.
¡Empieza ahora!
Copyright © 2026  · Datos 🥷 · Todos los derechos reservados