SenseiTeoría desde cero0/21

0 · El mapaLección 1 de 1

El camino completo

The full path to production

Qué significa poner un modelo en producción, contado de principio a fin con un solo ejemplo: las seis etapas, los dos caminos y el reloj de cada uno.

⏱ 50 min lo esencial · 66 min todo26 conceptos nuevos1 calculadora9 ejerciciosLas seis etapas
Secciones14
  1. 01Una escena de 200 milisegundos
  2. 02Un modelo y sus dos momentos
  3. 03¿Qué significa «producción»?
  4. 04El camino completo, en seis etapas
  5. 05Lo que pasa cuando Ana sube su foto
  6. 06El presupuesto de 200 milisegundos extra
  7. 07Dos caminos: online y offline
  8. 08Los dos caminos en números extra
  9. 09Errores comunes
  10. 10En la vida real extra
  11. 11Ejercicios
  12. 12Lo que sigue
  13. 13Palabras que vas a oír
  14. 14Chequeo
La pregunta

Cuando una app «usa IA», ¿qué tuvo que pasar para que eso funcione?

No necesitas saber nada antes. Empieza aquí.
01

Una escena de 200 milisegundos

Esencial

A 200-millisecond scene

Ana quiere vender unos tenis que ya no usa. Abre la app de un marketplace (una tienda en línea donde cualquiera puede vender), les toma una foto, la sube y, antes de terminar de escribir el título, la app ya le sugiere la categoría: Calzado › Tenis.

Para Ana eso no fue nada. Para que pasara, alguien tuvo que juntar millones de fotos, enseñarle a un programa a reconocerlas, ponerlo a responder en computadoras que nunca se apagan, cuidar que conteste en más o menos lo que dura un parpadeo y revisar cada día que siga acertando.

Ese es el caso que vamos a seguir en todo Sensei. Se llama C01. Es el mismo caso que el Dojo (la parte de TrueML donde practicas con código) simula en pequeño: un marketplace que recibe unos 2.5 millones de publicaciones al día y le sugiere a quien vende la categoría de su foto, entre 500 posibles.

02

Un modelo y sus dos momentos

Esencial

A model and its two moments

Qué es un modelo

A un programa normal tú le escribes las reglas: «si la compra pasa de 1,000 pesos, el envío es gratis». A un modelo no le escribes reglas. Le muestras miles de ejemplos con su respuesta correcta y él solo encuentra la manera de pasar de la entrada a la respuesta.

¿Por qué no escribir las reglas a mano? Intenta escribir la regla para reconocer unos tenis en una foto. ¿Por la forma? ¿Por las agujetas? ¿Y si es una bota? ¿Y si la foto está oscura, o de lado, o el tenis está dentro de su caja? Hay cosas que es mucho más fácil mostrar que explicar.

Un modelo como función: entra la foto de unos tenis (unos 150 mil números), el modelo con sus perillas calcula, y sale la probabilidad de cada categoría: Calzado › Tenis 94 %, Calzado › Botas 4 %, Ropa deportiva 1 % y las otras 497 casi en 0 % ENTRA La foto de lapublicación para el modelo son unos150 mil números (píxeles) MODELO ≈ 25 millones de perillas: sus parámetros SALE Calzado › Tenis 94 % Calzado › Botas 4 % Ropa deportiva 1 % …y las otras 497 categorías, casi en 0 %
Un modelo funciona como una función: entra una foto y sale qué tan probable es cada categoría. Los porcentajes son de ejemplo.

Por dentro, un modelo es un montón de números que se llaman parámetros. Piensa en ellos como perillas: cada combinación de perillas hace que el modelo responda distinto. El modelo de C01 tiene unos 25 millones.

Entrenar y usar

Todo modelo vive dos momentos muy distintos, y casi todo lo demás en esta app depende de no confundirlos.

  1. 1

    Entrenar

    El entrenamiento es mostrarle muchos ejemplos de los que ya sabes la respuesta: fotos con su categoría correcta, que se llama su etiqueta. El modelo adivina, compara su respuesta con la correcta y mueve sus perillas un poquito para equivocarse menos. Eso se repite millones de veces. Es lento y caro, así que se hace de vez en cuando: en C01, una vez al mes.

  2. 2

    Usar

    La inferencia es usar el modelo ya entrenado. Recibe una foto nueva, sin respuesta, y da su predicción. Las perillas ya no se mueven: solo calcula. Es rápido y pasa todo el tiempo: en C01, millones de veces al día.

Los dos momentos de un modelo. Entrenar: muchas fotos con su categoría entran al modelo y sus perillas se mueven, pocas veces y durante horas. Usar o inferencia: una foto nueva sin respuesta entra al modelo con las perillas fijas y sale «Tenis, 94 %», millones de veces y en milisegundos 1 · Entrenarpocas veces · cada una tarda horas Tenis Botas Playera MODELO las perillas se mueven Adivina, se compara con la respuesta correcta y ajusta las perillas. Millones de veces. 2 · Usar (inferencia)millones de veces al día · milisegundos ? foto nueva,sin respuesta MODELO perillas fijas: solo calcula Tenis · 94 %
Entrenar se hace pocas veces y tarda horas. Usar se hace millones de veces y tarda milisegundos.
03

¿Qué significa «producción»?

Esencial

What production means

Que un modelo funcione en tu laptop no significa que esté listo. Está en producción cuando gente real lo usa todos los días y, si falla, alguien lo nota.

En tu laptopEn producción
Quién lo usaTúMillones de personas que ni saben que existe
Cuántas vecesUnas cuantas, cuando tú quieresSin parar, de día y de noche, con horas pico
Qué tan rápidoDa igual si tarda 5 segundosMás o menos lo que dura un parpadeo
Si se rompeLo vuelves a correrAna no recibe sugerencia y tiene que buscar la categoría a mano; si pasa seguido, se publica menos y el negocio pierde dinero
Los datosLos que descargaste, siempre los mismosNuevos cada día, y van cambiando
Dónde correEn un notebook (un documento donde corres el código por pedacitos), en tu máquinaEn servidores que nunca se apagan

Por eso existe el trabajo de ml engineer. No se trata solo de que el modelo acierte, sino de que todo lo que lo rodea funcione. Un artículo científico famoso de Google («Hidden Technical Debt in Machine Learning Systems», Sculley y otros, 2015) lo dibujó así: el código del modelo es una cajita chica en medio de todo lo demás, que son los datos, la configuración, los servidores y el monitoreo.

El código del modelo es la caja chica. En el centro, una caja oscura y pequeña dice «código de ML». A su alrededor hay nueve cajas más grandes: configuración, recolección de datos, extracción de features, verificación de datos, recursos de máquina, herramientas de análisis, gestión de procesos, infraestructura de serving y monitoreo. Inspirada en la figura de Sculley y otros, 2015; los tamaños no son medidas. TODO LO QUE RODEA AL MODELO Configuración Recolecciónde datos Extracciónde features Verificaciónde datos Recursosde máquina Herramientasde análisis Gestiónde procesos Infraestructura de serving Monitoreo códigode ML
Inspirada en la figura del artículo de Sculley y otros (2015). Los tamaños no son medidas: dicen dónde está casi todo el trabajo. Las features son los datos de entrada, ya preparados para el modelo.

Deploy: cambiar de versión sin que nadie lo sufra

Pasar algo de tu laptop a producción, o cambiar la versión que está respondiendo por una nueva, se llama deploy (desplegar). Suena a apretar un botón, pero en un sistema que atiende a millones casi nunca se hace de golpe: si la versión nueva trae un error, le pegaría a todos a la vez.

En C01 se hace poco a poco. El modelo nuevo primero responde 5 de cada 100 fotos. Si sigue respondiendo rápido, sin errores y con respuestas sensatas, pasa a 25 de cada 100 y después a todas. Si algo empeora, el sistema regresa solo a la versión anterior. A esa primera prueba chiquita se le llama canary (canario), por los canarios que los mineros bajaban a la mina: si había gas, el pájaro lo resentía antes que ellos.

04

El camino completo, en seis etapas

Esencial

The six stages

Todo lo que rodea al modelo se puede ordenar en seis etapas. En TrueML (el conjunto de herramientas al que pertenece Sensei) cada etapa tiene su color, y juntas forman la T del logo: la verás arriba de cada lección, con las etapas que toca encendidas.

El camino completo de un modelo · Lo que sale de cada etapa es lo que entra a la siguiente, y el monitoreo cierra el ciclo.
  • Datos · fotos con su categoría
    Todo empieza con ejemplos: fotos con su categoría correcta, revisadas y guardadas como una versión fija. Sale un dataset. Lo ves a fondo en las estaciones 1 y 2.
  • Modelo · entrenar y aprobar
    Con el dataset se entrena el modelo, se examina con fotos que nunca vio y solo si pasa el examen se aprueba. Sale un archivo con el modelo aprobado.
  • API · el programa que responde
    Un programa carga el modelo y lo pone a responder por la red: recibe una foto y regresa la categoría. La ventanilla por donde se le pregunta es su API.
  • Contenedor · empacado con todo
    El programa se empaca con todo lo que necesita en un contenedor, para que corra igual en cualquier máquina.
  • Orquestación · muchas copias
    Muchas copias del contenedor en muchas máquinas: la orquestación decide cuántas, reparte el trabajo y reemplaza las que fallan.
  • Monitoreo · ¿sigue rápido y acertando?
    Se mide todo en producción: qué tan rápido responde, cuántas fallan y si el modelo sigue acertando. Cuando el mundo cambia (drift), se dispara el reentrenamiento.

Una cadena de pasos así, donde lo que sale de uno entra al siguiente, se llama pipeline. Veamos qué pasa en cada etapa.

1 · Datos

Todo empieza con ejemplos. Hay que juntar fotos, ponerles su categoría correcta (muchas veces una persona lo hace a mano), revisar que estén bien y guardarlas como una versión fija que ya nadie modifica, para saber después exactamente con cuáles se entrenó. Sale: un dataset, la colección de fotos con su categoría.

2 · Modelo

Con el dataset se entrena el modelo. Luego se examina con fotos que nunca vio, y solo si pasa el examen se aprueba. Al final se convierte a un formato que hace casi los mismos cálculos con mucho menos trabajo, para que responda más rápido, y se comprueba que sus respuestas no cambien. Sale: el modelo aprobado, guardado en un archivo.

3 · API

El modelo solo, en un archivo, no le sirve a nadie si nadie le puede preguntar. Se escribe un programa que lo carga y lo pone a responder: recibe una foto por la red (internet, o la red interna de la empresa) y regresa la categoría. La «ventanilla» por donde se le pregunta es su API, y a tener el modelo respondiendo así se le llama serving. Sale: el programa que responde.

4 · Contenedor

El programa funciona en tu máquina, pero ¿funcionará igual en otra? Se empaqueta con todo lo que necesita (la versión exacta de Python, las librerías, que son código que otros ya escribieron y tu programa usa, y el modelo) en un contenedor, que corre igual en cualquier máquina que sepa correr contenedores. La herramienta más usada para crearlos es Docker. Sale: el paquete probado, listo para copiarse a cualquier servidor.

5 · Orquestación

Una sola computadora tiene dos problemas: puede no aguantar todas las peticiones de la hora pico y, si se apaga, se apaga todo. En C01 pesa más el segundo: una sola máquina con el modelo aguantaría el tráfico, pero se usan dos para que, si una falla, la otra siga respondiendo. Así que se corren varias copias del contenedor en varias máquinas, y un sistema de orquestación decide cuántas hacen falta, les reparte el trabajo y reemplaza a las que fallan. También cambia a la versión nueva poco a poco, sin apagar nada. El orquestador más usado es Kubernetes. Sale: el servicio funcionando para todo el mundo.

6 · Monitoreo

Ya en producción se mide todo: cuánto tarda cada respuesta, cuántas fallan y si el modelo sigue acertando. Eso es el monitoreo. Y aquí viene lo que más sorprende al principio: aunque nadie toque el modelo, con el tiempo empieza a fallar más, porque el mundo cambia y llegan fotos distintas a las de su entrenamiento. A ese cambio en lo que llega se le llama drift. Cuando pasa, se juntan datos nuevos y se vuelve a la etapa 1: es el reentrenamiento. Sale: la señal de que hay que reentrenar y las fotos nuevas para etiquetar.

Para ir más hondoLas 12 estaciones de C01 dentro de las seis etapas

En el Dojo y en la Ronda de Diseño el caso C01 se divide en 12 estaciones. Cada una vive dentro de una etapa. No te preocupes por los nombres raros: cada estación tendrá su propia lección aquí.

EtapaEstaciones de C01Qué sale, en palabras simples
Datos1 · Datos y etiquetas
2 · Versionado y linaje
Las fotos del mes con su categoría, guardadas con un nombre que no cambia
Modelo3 · Entrenamiento
4 · Gate de evaluación y registry
5 · Export, engine y paridad
Un modelo que pasó su examen, convertido a un formato rápido
API6 · Código de servingEl programa que recibe la foto y responde
Contenedor7 · Empaquetado (Docker)
8 · CI/CD y registro de imágenes
El paquete probado y guardado, listo para copiarse
Orquestación9 · Kubernetes
10 · Rollout seguro
El servicio corriendo en muchas copias, ya con la versión nueva
Monitoreo11 · La request en vivo
12 · Monitoreo y reentrenamiento
Las mediciones que deja cada request y la señal de reentrenar
05

Lo que pasa cuando Ana sube su foto

Esencial

The life of a request

Ahora juntemos todo en la escena del principio. Cuando Ana sube la foto, pasa esto:

El viaje de la foto de Ana · Todo el recorrido, de ida y vuelta, en una fracción de segundo.
  • App de Ana · sube la foto
    Ana toma la foto de sus tenis y la sube. Para ella, la sugerencia aparece casi al instante.
  • Marketplace · sus servidores
    Los servidores del marketplace reciben la publicación y le piden la categoría al sistema del modelo con una request.
  • API del modelo · prepara la foto
    La API revisa que la petición venga bien, prepara la foto (la decodifica, la achica y la convierte en los números que el modelo espera) y se la pasa al modelo. Si la API no contesta en 300 ms, el marketplace le muestra a Ana el selector de categorías a mano.
  • Modelo · hace la inferencia
    El modelo calcula: hace una inferencia y devuelve qué tan probable es cada categoría.
  • Registro · una línea por foto
    Por cada foto queda una línea: cuándo llegó, qué respondió el modelo y cuánto tardó. Se escribe aparte, para no hacer esperar a Ana.
  • Monitoreo · rápido y acertando
    Con esos registros, el monitoreo mide la latencia y si el modelo sigue acertando.

El mensaje que los servidores del marketplace le mandan a la API se llama request, y lo que regresa se llama response. El tiempo que pasa entre una request y su response es la latencia. C01 se compromete a que 99 de cada 100 respuestas tarden menos de 200 milisegundos, más o menos lo que dura un parpadeo, sin contar el viaje por internet hasta el celular de Ana.

Fíjate en dos detalles de esa promesa. Tiene un número que se puede medir: no dice «rápido», dice «menos de 200 ms, 99 de cada 100 veces». Y dice dónde se mide: del lado del servidor, desde que la request completa llega hasta que sale la respuesta. Lo que tarda la foto en subir depende de la señal del celular de Ana, y eso nadie en el marketplace lo controla. En la Ronda, a una promesa así, con número y con lugar donde se mide, se le llama SLO.

¿Y por qué «99 de cada 100» y no el promedio? Porque el promedio esconde a quienes esperan mucho. Lo ves con números en la sección extra «El presupuesto de 200 milisegundos».

Cuando la respuesta no llega a tiempo

¿Y si un día el modelo tarda 2 segundos, o no contesta? Ana no debería quedarse viendo una pantalla trabada. Por eso los servidores del marketplace esperan la respuesta un tiempo máximo: 300 ms. A ese tiempo máximo de espera se le llama timeout. Si se cumple y no llegó nada, dejan de esperar y le muestran a Ana el selector de categorías de siempre, para que la elija a mano.

Ese plan B es el fallback. Es peor que la sugerencia, pero Ana puede publicar igual: el sistema se degrada, no se cae. Y no es un detalle para casos rarísimos. Además de la de velocidad, C01 tiene una segunda promesa: que el 99.9 % de las requests respondan sin error y antes de los 300 ms. Suena a casi siempre, pero C01 responde unos 10 millones de fotos al día (cada publicación trae varias fotos, y otros equipos también le preguntan), unos 300 millones al mes. El 0.1 % que queda son hasta 300 mil fotos al mes sin sugerencia: 300,000,000 × 0.001 = 300,000. Todo lo que está en el camino de una persona que espera necesita su fallback.

¿Por qué 300 ms y no 5 segundos? Porque la sugerencia solo sirve mientras Ana todavía no elige la categoría. Si llega tarde, ya no le ayuda a nadie.

06

El presupuesto de 200 milisegundos

Extra

The 200 ms latency budget

200 ms parecen poquísimo, pero para una computadora es bastante tiempo, si se reparte bien. Repartirlo es de lo primero que hace un ML engineer, antes de elegir herramientas: decidir cuánto le toca a cada paso del viaje de la foto. A eso se le llama presupuesto de latencia (latency budget).

Dentro del servidor, la foto de Ana pasa por cinco pasos:

  • Red y entrada. La request entra por el balanceador de carga (load balancer), la puerta que reparte las requests entre las copias del servicio, y la API lee la foto que llegó.
  • Preprocesamiento. La API decodifica la foto (convierte el archivo JPEG, el formato de foto más común, en píxeles), la achica, recorta el centro y la normaliza: la convierte en los números que el modelo espera.
  • Modelo. La foto ya preparada viaja al servidor que tiene el modelo cargado en una GPU, la tarjeta que hace miles de cuentas a la vez. Ahí espera su turno como máximo 2 ms, porque el servidor junta varias fotos para calcularlas de un jalón, y el modelo calcula.
  • Respuesta. De las 500 probabilidades se toman las 5 más altas, se arma el mensaje de respuesta y se deja lista la línea del registro, que se escribe aparte.
  • El propio programa. El programa de la API también gasta tiempo en organizarse: atiende muchas requests a la vez, espera su turno en el procesador y limpia memoria de vez en cuando. En los casos lentos se nota.

La Ronda estima cuánto tarda cada paso en C01. Son estimaciones para medir después, no mediciones. Estos son sus valores para un caso lento: lo que tarda cada paso en sus peores momentos, cuando solo 1 de cada 100 requests tarda más en ese paso.

El presupuesto de C01, en el caso lentoLa cuenta
Red y entradabalanceador y leer la foto
10 + 30 ms
40 ms
Preprocesamientodecodificar, achicar, recortar, normalizar
50 + 2 ms
52 ms
Modeloviaje, turno en la cola y cálculo en la GPU
10 + 2 + 15 ms
27 ms
Respuestatop-5, mensaje y registro
3 ms
3 ms
El propio programaorganizarse y esperar turno
30 ms
30 ms
Total
40 + 52 + 27 + 3 + 30
152 ms
Margen
200 − 152
48 ms
Resultado
Aun sumando el caso lento de cada paso, quedan ≈ 50 ms de margen.

De esta cuenta salen dos cosas. La primera: quedan ≈ 50 ms para lo que no se planeó, como fotos web gigantes, pausas raras o una máquina más lenta. La segunda sorprende: el modelo no es el paso más caro. Preparar una foto grande en el procesador cuesta más que el cálculo en la GPU. Por eso se mide cada paso antes de optimizar: si solo aceleraras el modelo, ganarías poco.

Presupuesto de latencia de C01Calculadora

Cada control es lo que tarda un paso del viaje de la foto en un caso lento. Empiezan en las estimaciones de la Ronda para C01. Muévelos y mira si todavía cabe en la promesa de 200 ms y en los 300 ms que espera el marketplace.

Total del lado del servidor152 ms
Parte de los 200 ms que se usa76 %
Margen contra la promesa de 200 mssi sale negativo, en este caso lento la promesa no se cumple48 ms
Margen hasta que el marketplace deja de esperarsi sale negativo, Ana ve el selector manual (sin contar la red entre el marketplace y la API)148 ms

Sumar el caso lento de cada paso suele dar de más, porque casi nunca todos los pasos tienen su peor momento en la misma foto. Suele, no siempre: si se ponen lentos en fotos distintas, la suma puede quedarse corta. Sirve para repartir el presupuesto; el número de verdad se mide de punta a punta.

Empieza en los valores de la cuenta. Sube el preprocesamiento a 120 ms, como con una foto web gigante, y mira qué pasa con los dos márgenes.

¿Por qué «99 de cada 100» y no el promedio?

Imagina que 98 respuestas tardan 30 ms y 2 tardan 3 segundos:

El promedio que engañaLa cuenta
98 respuestas rápidas
98 × 30 ms
2,940 ms
2 respuestas lentas
2 × 3,000 ms
6,000 ms
Promedio
(2,940 + 6,000) ÷ 100
≈ 89 ms
La número 99, ordenadaslas 2 lentas son la 99 y la 100
98 rápidas y luego 2 lentas
3,000 ms
Resultado
El promedio dice 89 ms y se ve muy bien; «99 de cada 100» dice 3 segundos.

El promedio se ve muy bien, pero 2 de cada 100 personas sienten la app trabada, y con millones de fotos al día eso es muchísima gente. Ordenadas de la más rápida a la más lenta, la número 99 tarda 3 segundos: eso es lo que mide «99 de cada 100», y ahí no se cumplen los 200 ms. Por eso se mide qué tan lentas son las respuestas más lentas, y no solo el promedio. En la Ronda lo vas a ver escrito como «p99 ≤ 200 ms»: el p99, el percentil 99. Lo vemos a fondo en la lección de percentiles.

Haz la prueba: el promedio contra «99 de cada 100»

Este programa inventa 10,000 tiempos de respuesta de juguete: casi todos rápidos, entre 20 y 60 ms, y 150 muy lentos, entre 250 ms y 3 segundos. Luego compara el promedio con lo que mide la promesa de C01 y cuenta cuántas fotos se quedarían sin sugerencia. Solo usa la biblioteca estándar de Python: cópialo y córrelo tal cual.

python
import random

random.seed(1)

# 10,000 requests de juguete: casi todas rápidas y unas pocas muy lentas
rapidas = [random.uniform(20, 60) for _ in range(9_850)]
lentas = [random.uniform(250, 3_000) for _ in range(150)]
tiempos = sorted(rapidas + lentas)          # de la más rápida a la más lenta

promedio = sum(tiempos) / len(tiempos)
p99 = tiempos[9_899]                        # la número 9,900 de 10,000: «99 de cada 100»
selector = sum(1 for t in tiempos if t > 300)

print(f"promedio:          {promedio:.0f} ms")
print(f"99 de cada 100:    {p99:.0f} ms o menos")
print(f"pasan de 300 ms:   {selector} (ven el selector manual)")
Salida
promedio:          61 ms
99 de cada 100:    918 ms o menos
pasan de 300 ms:   145 (ven el selector manual)

El promedio, 61 ms, haría pensar que todo va de maravilla. Pero la request número 9,900 tarda 918 ms: la promesa de 200 ms no se cumple y 145 personas vieron el selector manual. Si cambias la semilla (random.seed), los números cambian: el promedio apenas se mueve, y el de «99 de cada 100» puede moverse varios cientos de milisegundos, porque depende de unas pocas requests lentas. La conclusión no cambia: siempre pasa de 200 ms.

07

Dos caminos: online y offline

Esencial

Online and offline paths

Hasta aquí seguiste a una sola foto. Pero un sistema de ML hace dos trabajos muy distintos a la vez, cada uno con su propio reloj.

El camino online es todo lo que pasa mientras alguien espera la respuesta: llega la request, se prepara la foto, el modelo calcula y sale la respuesta. Su reloj son los milisegundos.

El camino offline es todo lo que prepara la siguiente versión del modelo sin que nadie esté esperando: juntar fotos nuevas, ponerles su etiqueta, entrenar, examinar y aprobar. Su reloj son las horas, los días y las semanas.

Los dos caminos de C01 · Arriba, lo que pasa con cada foto; abajo, lo que prepara la versión que viene. Las dos flechas que cruzan de un carril al otro son los puentes. Usa «Recorrer» para seguir una foto, un mes o una falla.
  • App de Ana · sube la foto
    Ana sube la foto de sus tenis y la sugerencia tiene que llegar mientras ella sigue escribiendo. Que alguien esté esperando es justo lo que define al camino online.
  • API del modelo · prepara la foto
    Recibe la foto, la decodifica, la achica y la convierte en los números que el modelo espera. El marketplace no espera más de 300 ms: si no hay respuesta, usa el fallback.
  • Modelo · inferencia en GPU
    Hace la inferencia con las perillas fijas: calcula qué tan probable es cada una de las 500 categorías. Corre en una GPU, la tarjeta que hace miles de cuentas a la vez. Es la versión que llegó con el último deploy.
  • Registro · una línea por foto
    Una línea por foto: cuándo llegó, qué respondió el modelo, con qué versión y cuánto tardó. Se escribe aparte, sin hacer esperar a Ana. Es el puente 1: lo que el camino offline sabe de lo que está pasando en producción, lo sabe por aquí.
  • Datos y etiquetas · las fotos del mes
    Una muestra de lo registrado (≈ 1 de cada 100 fotos) más las categorías del mes: las que eligió quien vende, las que corrigieron moderadores y unas 5 mil revisadas a mano. Sale un dataset fijo, con su versión.
  • Entrenamiento · unas horas en GPU
    Aquí sí se mueven las perillas: es el entrenamiento. Corre en una máquina con GPU que se renta un rato y se apaga. Nadie está esperando: si tarda una hora más, no pasa nada.
  • Examen · ¿mejor que el actual?
    El modelo nuevo responde el golden set, las mismas fotos de cada mes, y se compara con el modelo actual. Solo se aprueba si no es peor en nada importante.
  • Deploy · 5 % → 25 % → 100 %
    El puente 2: el deploy pone la versión aprobada a responder poco a poco, primero 5 de cada 100 fotos, luego 25 y luego todas. Si la latencia o los errores empeoran, se regresa sola a la versión anterior.

Sus reglas son distintas, y casi todas salen de esa diferencia de relojes:

Camino onlineCamino offline
Qué lo pone a correrUna request: alguien subió una fotoUn calendario (cada mes, en C01) o una alarma: drift, una categoría nueva
Cuánto puede tardarMilisegundos: 99 de cada 100 fotos en menos de 200 msHoras o días: importa terminar bien y a tiempo, no la velocidad de cada paso
Si fallaSe nota al instante: hacen falta un timeout y un fallbackNadie lo nota ese día: el modelo actual sigue respondiendo, solo que envejece
Cómo creceMás requests por segundo → más copias encendidasMás datos → más máquinas un rato, que luego se apagan
Qué se vigilaLatencia, errores y requests por segundoQue cada paso termine bien, la calidad de los datos y el examen del modelo nuevo
En C01Foto → API → modelo → 5 sugerencias → AnaRegistro → datos y etiquetas → entrenamiento → examen → deploy

La pregunta que decide en qué camino vive algo es una sola: ¿alguien está esperando la respuesta? Sugerir la categoría mientras Ana escribe: sí, así que va online, con su presupuesto de tiempo y su fallback. Clasificar de una vez las ≈ 200 millones de fotos viejas del catálogo, publicadas antes de que existiera el modelo: nadie espera cada respuesta, así que va offline, en tandas y sin tocar el camino de Ana. En la Ronda a ese trabajo se le llama backfill.

Las seis etapas, en los dos caminos

Las seis etapas y los dos caminos son dos formas de cortar el mismo sistema. Las etapas responden «¿qué hay que construir, y en qué orden?». Los caminos responden «¿cuándo corre cada pieza, y con qué reloj?».

  • Datos y Modelo viven en el camino offline: juntar, etiquetar, entrenar y examinar.
  • API, Contenedor y Orquestación se construyen una vez por versión, pero lo que construyen trabaja en el camino online, en cada request.
  • Monitoreo mira a los dos: mide cada request y avisa cuando toca darle otra vuelta al camino offline.

Los dos puentes

Los dos caminos no viven aislados: se tocan en dos puntos.

  1. 1

    Del online al offline: el registro

    Cada request deja una línea: cuándo llegó, qué respondió el modelo, con qué versión y cuánto tardó. Se escribe aparte, sin hacer esperar a Ana. De esas líneas salen las fotos nuevas, las pistas para etiquetarlas y las alarmas de drift: lo que el camino offline sabe de lo que está pasando en producción, lo sabe por aquí.

  2. 2

    Del offline al online: el deploy

    La versión que pasó el examen se pone a responder poco a poco, como viste en «¿Qué significa producción?». Es la única puerta por la que algo del camino offline le llega a Ana.

Sin el primer puente, el modelo nunca aprende nada nuevo. Sin el segundo, lo que aprende nunca le llega a nadie. En la Ronda, dibujar solo el camino online es el error más común de quien viene de entrenar modelos, y el entrevistador anota «no closed loop»: el ciclo no se cierra.

Los dos relojes de C01 en una sola regla logarítmica, de 1 milisegundo a 1 mes, donde cada marca de 1 ms, 10 ms, 100 ms, 1 s y 10 s vale 10 veces la anterior. Arriba, en azul, el camino online: el modelo calcula en unos 5 ms, una respuesta típica tarda de 30 a 50 ms, la promesa es de 200 ms para 99 de cada 100 fotos y a los 300 ms el marketplace deja de esperar. Abajo, en ámbar, el camino offline: entrenar tarda unas horas, desplegar poco a poco tarda días y cada mes sale una versión nueva. Entre 200 ms y un mes hay un factor de unos 13 millones. DOS RELOJES EN UNA SOLA REGLA CAMINO ONLINE CAMINO OFFLINE 1 ms 10 ms 100 ms 1 s 10 s 1 min 1 h 1 día 1 semana 1 mes ≈ 5 ms: el modelo calcula 30–50 ms: una respuesta típica 200 ms: la promesa, 99 de 100 300 ms: se deja de esperar unas horas: entrenar días: desplegar poco a poco 1 mes: una versión nueva × 13 millones de 200 ms a un mes
Los dos relojes en una sola regla. Es una regla logarítmica: de 1 ms a 10 ms hay la misma distancia que de 100 ms a 1 s, porque en los dos casos el tiempo se multiplica por 10. Así caben en una figura los milisegundos de una foto y el mes de una versión.

Por qué nunca se termina

De los dos caminos sale una idea que conviene llevarse: un modelo en producción no es un proyecto que se termina, es algo que se cuida.

Aunque nadie toque el modelo, el mundo sí cambia: salen modelos nuevos de tenis, cambian las modas, los celulares toman fotos con otra luz. Las fotos que llegan se van pareciendo menos a las del entrenamiento y el modelo acierta un poco menos cada mes. Nadie rompió nada. El monitoreo lo detecta, se etiquetan fotos nuevas, se reentrena y la versión nueva reemplaza a la anterior. Y el ciclo vuelve a empezar.

En el Dojo pasa además otra cosa: el 1 de octubre el negocio agrega la categoría «bolsas». El modelo no puede sugerir «bolsas» porque esa opción ni siquiera existe entre sus respuestas, así que elige la más parecida que conoce. Eso no es drift: es un cambio en las categorías, y obliga a reentrenar antes de lo planeado.

08

Los dos caminos en números

Extra

Both paths in numbers

El camino online: cuántas fotos por segundo

Las máquinas no se planean por día, sino por segundo: lo que importa es cuántas fotos llegan al mismo tiempo. Es la cuenta de la Ronda para C01.

De publicaciones al día a requests por segundoLa cuenta
Un día, en segundos
24 × 60 × 60
86,400 s
Publicaciones por segundo
2,500,000 ÷ 86,400 s
≈ 29
Fotos al día≈ 3 fotos por publicación
2.5 M × 3
≈ 7.5 M
Requests al díala Ronda suma las de otros equipos, como moderación y búsqueda, y redondea
7.5 M + otros equipos
≈ 10 M
Promedio
10,000,000 ÷ 86,400 s
≈ 116 por segundo
Pico del díasupuesto: 3 veces el promedio
116 × 3
≈ 350 por segundo
Pico de diseñomargen para picos raros y para crecer
350 × ≈ 1.4
500 por segundo
Resultado
C01 se diseña para 500 requests por segundo, aunque el promedio sea 116.

Diseñar para el promedio es un error caro: en la hora pico llegarían 3 veces más fotos de las que el sistema aguanta. Pero el promedio también importa, porque es el que paga la factura: la mayor parte del día las máquinas trabajan muy por debajo de lo que pueden.

El camino offline: un mes en números

Un mes de C01, de un camino al otroLa cuenta
Fotos que responde una versión del modeloun mes de 30 días
10 M × 30
300 M
Fotos que se guardan de muestra≈ 1 de cada 100
10 M × 0.01
≈ 100 mil al día
Fotos que revisan personas a mano
dato de la Ronda
≈ 5 mil al mes
Respuestas por cada foto revisada
300 M ÷ 5 mil
60 mil
Resultado
Por cada foto que revisa una persona, el modelo respondió unas 60 mil.

Las etiquetas buenas son lo escaso del camino offline, y lo escaso cuesta. Según la Ronda, el reentrenamiento mensual de C01 son unas horas de una GPU: unas decenas de dólares. Es caro al lado de responder una foto, pero barato al lado de etiquetar con cuidado esas ≈ 5 mil fotos, que cuesta cientos de dólares (unos 5 o 10 centavos de dólar por foto). En el camino offline, el dinero y la calidad están en qué fotos se etiquetan, no en la máquina que entrena.

Compara los relojes: un mes son 30 × 86,400 = 2,592,000 segundos, y una request de 200 ms cabe 2,592,000 ÷ 0.2 ≈ 13 millones de veces. Por eso los dos caminos no pueden tener las mismas reglas: en uno, 50 ms de más rompen la promesa; en el otro, una hora de más ni se nota.

09

Errores comunes

Esencial

Common mistakes

Las confusiones que más se repiten al empezar, y cómo evitarlas.

  1. Confundir entrenar con usar. «El modelo aprende de cada foto que le subes», o «responder tarda horas». Entrenar mueve las perillas y se hace de vez en cuando; usar solo calcula y pasa millones de veces al día. Cómo evitarlo: pregúntate «¿se mueven las perillas?». Si sí, es entrenamiento; si no, es inferencia.
  2. Creer que 95 % en tu laptop significa «listo». Ese número dice que el modelo acierta en tus fotos de prueba. No dice si responde en 200 ms, si aguanta cientos de fotos por segundo en la hora pico, si sigue acertando con las fotos borrosas de celulares reales ni qué pasa cuando falla. Cómo evitarlo: recorre las seis etapas y pregunta en cada una «¿esto ya existe?».
  3. Creer que el modelo aprende en vivo. El modelo que responde tiene sus perillas fijas. Lo que aprende del mundo entra por el camino offline, con datos revisados y un examen, y llega como versión nueva. Aprender en vivo existe, pero es raro y arriesgado: sin examen, un error o un ataque se vuelve parte del modelo al instante. Cómo evitarlo: cuando oigas «aprende de los usuarios», pregunta cada cuánto se reentrena y quién aprueba la versión nueva.
  4. Ignorar el drift. «Nadie lo ha tocado, así que sigue igual de bien». El mundo cambia aunque el modelo no, y el modelo puede equivocarse más sin lanzar ningún error. Cómo evitarlo: vigila al modelo y no solo al servidor: mide con etiquetas nuevas y compara las fotos de hoy con las del entrenamiento.
  5. Olvidar el fallback. Sin plan B, el día que el modelo tarda o se cae, la persona se queda viendo una pantalla trabada. Cómo evitarlo: para cada pieza que está en el camino de alguien que espera, decide cuánto se espera como máximo y qué se hace si la respuesta no llega.
  6. Dibujar solo el camino online. Foto → API → modelo → respuesta, y listo. Falta de dónde salen las etiquetas, cómo se entrena la próxima versión, cómo sabes que es mejor y cómo te enteras de que la actual empeoró. Cómo evitarlo: dibuja siempre los dos caminos con sus dos puentes: el registro (de online a offline) y el deploy (de offline a online).
10

En la vida real

Extra

In real life

El camino de C01 no es especial. Toma tres casos de la Ronda que no se parecen en nada: video, pagos y un asistente que contesta preguntas. Las seis etapas y los dos caminos son los mismos; cambian las piezas y, sobre todo, los relojes.

C02 · Video en tiempo real en 25 centros de distribución

Una empresa de logística tiene 25 centros con 40 cámaras cada uno: 1,000 cámaras. Quiere una alerta cuando una persona o un vehículo entra a una zona prohibida.

  • Online: cada centro tiene su propia caja con GPU, que mira 5 cuadros por segundo de cada cámara y detecta personas y vehículos. Si alguien sigue en la zona ≈ 1.5 segundos, la caja sube el evento a la nube, otro modelo lo confirma y la alerta llega a la pantalla de un operador. Reloj: 5 segundos o menos desde que la persona entra, contando ese segundo y medio, 95 de cada 100 veces.
  • Offline: cada operador marca la alerta como confirmada o descartada, y esas marcas son las etiquetas. Con ellas se reentrena, y el modelo nuevo se instala por olas: primero en 2 centros durante una semana y luego en 5, en 10 y en los últimos 8.
  • Fallback: si se cae el internet de un centro, la caja sigue detectando y guarda los eventos en su disco (le caben al menos 72 horas) hasta que vuelve la red.
  • Lo distinto: la API, el contenedor y la orquestación no viven en un solo lugar, sino repartidos en 25 cajas. Al cómputo que se pone junto a donde nacen los datos se le llama edge («la orilla»). Aquí hace falta porque el video de 40 cámaras no cabe en el internet de un centro.

C09 · Fraude en pagos con tarjeta

Una empresa latinoamericana que procesa pagos en línea recibe ≈ 10 millones de pagos al día y quiere frenar los fraudes en el momento en que ocurren.

  • Online: el chequeo corre dentro del cobro, antes de pedirle la autorización al banco de la tarjeta. Reloj: 100 ms o menos, 99 de cada 100 veces. Una de las pistas más fuertes de un fraude es lo que pasó en los últimos minutos con esa tarjeta (por ejemplo, 30 intentos de pago en un minuto), así que esos conteos se calculan con un flujo continuo de eventos (streaming) que se pone al día en segundos: un tercer reloj, entre los otros dos.
  • Offline: la etiqueta es el contracargo, el reclamo del dueño de la tarjeta que dice «yo no hice esa compra», y tarda semanas o meses en llegar. Con los supuestos de la Ronda, ≈ 60 % llega en 30 días y ≈ 90 % en 60, así que se entrena solo con meses que ya «maduraron».
  • Fallback: si el modelo no responde a tiempo, deciden reglas fijas y límites. Nunca se bloquean todos los pagos.
  • Lo distinto: el modelo no es una red neuronal sino uno mucho más ligero, que corre en el procesador, sin GPU. Lo difícil no es el modelo: son los datos frescos y las etiquetas lentas.

C11 · Un asistente que contesta con los documentos de la empresa

Los ≈ 8,000 empleados del marketplace de C01 hacen ≈ 25 mil preguntas al día a un asistente que responde con los documentos internos y cita de dónde sacó cada cosa. Usa un LLM (un modelo grande de lenguaje: escribe texto, como el de un chat) con RAG: antes de contestar, busca los pedazos de documento que vienen al caso y se los da al LLM.

  • Online: llega la pregunta, se buscan los pedazos que esa persona tiene permiso de ver, se arma la instrucción para el LLM y la respuesta aparece palabra por palabra. Reloj: empieza a aparecer en 2.5 segundos o menos, 95 de cada 100 veces.
  • Offline: el LLM no se reentrena. El camino offline es tener los documentos al día: ≈ 1.5 millones de documentos partidos en ≈ 12 millones de pedazos, y cada cambio tiene que poder encontrarse en 15 minutos o menos (95 de cada 100 veces).
  • Fallback: si el LLM no está disponible, el asistente muestra los documentos más relevantes, sin respuesta redactada. Lo que nunca hace: si falla el filtro de permisos, no busca sin filtro.
  • Lo distinto: aquí «entrenar» casi desaparece, y su lugar lo ocupa mantener al día lo que se busca. El camino offline existe igual: solo cambia lo que prepara.

Los relojes, lado a lado

CasoReloj onlineReloj offlineSi falla lo online
C01 · Categoría de una foto200 ms (99 de 100)Una versión nueva al mesSelector manual
C02 · Video5 s hasta el operador (95 de 100)Semanas: olas de centrosLa caja guarda los eventos
C09 · Fraude100 ms dentro del cobro (99 de 100)Meses: las etiquetas tardanReglas fijas y límites
C11 · Asistente con RAG2.5 s hasta que empieza la respuesta (95 de 100)15 min para un documento nuevo o editadoSolo resultados de búsqueda

Fuera de ML pasa lo mismo. Un buscador de internet recorre y ordena páginas web todo el tiempo, sin que nadie espere (offline), y contesta tu búsqueda en una fracción de segundo (online). Tu banco autoriza tu tarjeta en el momento y arma tu estado de cuenta una vez al mes. La pregunta que separa los dos caminos es la misma en todos lados: ¿alguien está esperando?

11

Ejercicios

Esencial

Exercises

Resuelve cada uno en papel antes de abrir la solución. Los medios te piden razonar con dos ideas a la vez, y los retos, usar todo el camino en un caso nuevo.

  1. 1Fácil

    Para cada frase, di si es entrenamiento o inferencia. (a) El modelo de C01 recibe la foto de Ana y responde «Calzado › Tenis, 94 %». (b) Se le muestran 1.8 millones de fotos con su categoría y sus perillas cambian un poquito con cada grupo. (c) Una app de galería ordena tus fotos por tema mientras el celular se carga de noche, con un modelo que ya trae instalado. (d) Un equipo ajusta un modelo de lenguaje con 10 mil conversaciones de su área de soporte.

    Ver la solución paso a paso

    La pregunta que decide es una: ¿se mueven las perillas?

    • (a) Inferencia. El modelo ya entrenado solo calcula.
    • (b) Entrenamiento. Ver ejemplos con su respuesta y ajustar las perillas es justo eso.
    • (c) Inferencia. El modelo ya viene entrenado y solo calcula, aunque nadie mire la pantalla.
    • (d) Entrenamiento. Ajustar con datos propios un modelo que ya existía también mueve perillas: es un fine-tuning.
  2. 2Fácil

    ¿En qué etapa del camino vive cada cosa? (a) Docker. (b) Kubernetes. (c) Personas que revisan si una foto es «Tenis» o «Botas». (d) El examen del modelo nuevo con fotos que nunca vio. (e) Medir cuánto tarda cada respuesta. (f) El programa que recibe la foto y regresa la categoría.

    Ver la solución paso a paso
    • (a) Contenedor. Docker es la herramienta más usada para crear contenedores.
    • (b) Orquestación. Kubernetes decide cuántas copias correr, en qué máquinas y cuáles reemplazar.
    • (c) Datos. Están poniendo etiquetas.
    • (d) Modelo. El modelo nuevo se aprueba solo si pasa el examen.
    • (e) Monitoreo.
    • (f) API. Es la ventanilla por donde se le pregunta al modelo.
  3. 3Fácil

    Otro marketplace, más chico, recibe 400 mil publicaciones al día, con 5 fotos cada una, y su modelo responde cada foto por separado. (a) ¿Cuántas fotos por segundo le llegan en promedio? (b) Si en la hora pico llega el triple del promedio, ¿para cuántas por segundo tiene que estar listo?

    Ver la solución paso a paso
    Fotos por segundoLa cuenta
    Fotos al día
    400,000 × 5
    2,000,000
    Un día, en segundos
    24 × 60 × 60
    86,400 s
    Promedio
    2,000,000 ÷ 86,400 s
    ≈ 23 por segundo
    Hora pico
    23 × 3
    ≈ 69 por segundo
    Resultado
    Tiene que aguantar ≈ 70 fotos por segundo, aunque el promedio sea 23.
  4. 4Fácil

    En un rato llegan 100 fotos: 95 tardan 40 ms y 5 tardan 1 segundo. (a) ¿Cuánto tardan en promedio? (b) Ordenadas de la más rápida a la más lenta, ¿cuánto tarda la número 99? (c) ¿Se cumple la promesa de C01?

    Ver la solución paso a paso
    • (a) Promedio: (95 × 40 + 5 × 1,000) ÷ 100 = (3,800 + 5,000) ÷ 100 = 88 ms. Se ve muy bien.
    • (b) Las 95 rápidas ocupan los lugares 1 a 95 y las 5 lentas, del 96 al 100. La número 99 es lenta: 1,000 ms.
    • (c) No. La número 99 tarda 1,000 ms, no menos de 200. Además, las 5 lentas pasan de 300 ms: a esas 5 personas el marketplace les mostró el selector manual. El promedio escondía todo eso.
  5. 5Medio

    Los dos ejes. Para cada caso di dos cosas: si es entrenar o usar, y si es online u offline. (a) Ana sube su foto y recibe la sugerencia. (b) El reentrenamiento del mes. (c) El examen del mes: el modelo nuevo responde las 50 mil fotos del golden set. (d) Clasificar de una vez las ≈ 200 millones de fotos viejas del catálogo. (e) Un modelo que ajusta sus perillas con cada clic de los usuarios, al instante.

    Ver la solución paso a paso

    Hay que hacer dos preguntas por separado: «¿se mueven las perillas?» y «¿alguien está esperando?».

    Caso¿Entrenar o usar?¿Online u offline?
    (a) La foto de AnaUsarOnline: Ana espera
    (b) El reentrenamientoEntrenarOffline
    (c) El examen del mesUsar: las perillas no se muevenOffline: nadie espera cada respuesta
    (d) Las fotos viejasUsarOffline: va en tandas, sin tocar el camino de Ana
    (e) Ajustar con cada clicEntrenarOnline: en vivo, dentro del sistema que responde

    El (e) existe y se llama aprendizaje en línea (online learning). Ahí «en línea» quiere decir que se ajusta en vivo, en el mismo sistema que responde: nadie espera el ajuste, pero le pega al instante a la siguiente respuesta. Es raro: necesita la respuesta correcta en segundos o minutos (en fraude tarda meses) y, sin examen de por medio, un error o un ataque se vuelve parte del modelo al instante. C01 no lo hace.

  6. 6Medio

    Esta vez Ana publica desde la web, no desde la app, y sube la foto original de su cámara, de muchos megapíxeles. En el caso lento, el preprocesamiento tarda 120 ms en lugar de 52. Los demás pasos quedan como en el presupuesto de C01: red y entrada 40 ms, modelo 27 ms, respuesta 3 ms y el propio programa 30 ms. (a) ¿Cuánto suma? (b) ¿Se cumple la promesa? (c) ¿Ana recibe sugerencia? (d) ¿Qué cambiarías?

    Ver la solución paso a paso
    Con una foto giganteLa cuenta
    Los otros pasos
    40 + 27 + 3 + 30
    100 ms
    Total
    100 + 120
    220 ms
    Contra la promesa
    220 − 200
    20 ms de más
    Contra los 300 ms del marketplace
    300 − 220
    80 ms de sobra
    Resultado
    En ese caso lento la promesa de 200 ms no se cumple, pero Ana sí recibe su sugerencia.

    (d) El problema está en lo que entra, así que se ataca ahí: achicar la foto antes de subirla (la app de C01 ya la reduce a 1024 píxeles de lado largo) y ponerle un límite de tamaño a lo que llega de la web. Compruébalo en la calculadora: con el preprocesamiento en 120 ms, el margen sale en −20 ms.

  7. 7Medio

    ¿Es drift? Para cada situación di si es drift y, si no, qué es. (a) Llega diciembre y suben las fotos de adornos, suéteres y juguetes. (b) El negocio agrega la categoría «bolsas». (c) Sale un celular muy popular que toma fotos más brillantes y con más contraste. (d) Alguien cambia el código de la API y ahora la foto le llega al modelo con los colores en otro orden. (e) Las respuestas tardan más en la hora de más tráfico.

    Ver la solución paso a paso
    • (a) Drift. Las fotos que llegan cambiaron con la temporada. Más adelante verás que tiene un nombre más exacto: cuando cambia sobre todo cuánto llega de cada categoría, se llama label shift.
    • (b) No es drift: es un cambio en las categorías. El modelo ni siquiera tiene «bolsas» entre sus respuestas. Toca reentrenar con la categoría nueva.
    • (c) Drift. Las fotos se parecen menos a las del entrenamiento, aunque los productos sean los mismos.
    • (d) No es drift: es un bug. El mundo no cambió; cambió cómo el programa prepara la foto, que ya no es igual que en el entrenamiento. Tiene nombre: training-serving skew. Se arregla el código, no se reentrena.
    • (e) No es drift: es carga. El modelo acierta igual; lo que faltan son copias. Es trabajo de la orquestación.
  8. 8Reto

    Una app de comida a domicilio muestra «Llega en 35 min» cuando confirmas tu pedido. (a) ¿Qué parte es el camino online y qué tan rápido tendría que ser? (b) ¿De dónde salen las etiquetas del camino offline? (c) ¿Qué fallback pondrías? (d) ¿Cuáles son los dos puentes?

    Ver la solución paso a paso
    • (a) Online: al confirmar, la app manda el restaurante, tu dirección y la hora, y el modelo predice el tiempo. Tú estás esperando esa pantalla, así que tiene que ser rápido: del orden de cientos de milisegundos, como C01 (es un supuesto razonable, no un dato).
    • (b) Etiquetas: el tiempo real de entrega, que se sabe cuando el pedido llega a tu puerta. Hay que guardar cada predicción y, cuando llegue el tiempo real, juntar las dos.
    • (c) Fallback: un tiempo fijo por zona o el promedio de ese restaurante, como «30–45 min». Es peor que el modelo, pero nunca deja la pantalla vacía.
    • (d) Puentes: el registro de cada predicción con su tiempo real (de online a offline) y el deploy del modelo reentrenado (de offline a online).
  9. 9Reto

    Moderación quiere revisar con otro modelo si cada foto trae un producto prohibido. En el caso lento, ese modelo tarda 60 ms. (a) Si va en el camino de Ana, después del clasificador, ¿cuánto suma el caso lento de C01, que era de 152 ms, y qué margen queda contra los 200 ms? (b) ¿Ana está esperando esa respuesta? ¿Dónde lo pondrías y qué ganas?

    Ver la solución paso a paso
    Un modelo más en el camino de AnaLa cuenta
    Presupuesto de C01, caso lento
    40 + 52 + 27 + 3 + 30
    152 ms
    Con el modelo de moderación
    152 + 60
    212 ms
    Contra la promesa
    200 − 212
    −12 ms
    Resultado
    En el caso lento ya no cabe en los 200 ms, y todo por un modelo que Ana ni siquiera necesita.

    (b) No. Para sugerirle «Tenis» no hace falta saber si el producto está prohibido, así que ese modelo va aparte, sin que nadie espere cada respuesta: otro servicio revisa la foto segundos o minutos después (y si hubiera que frenar la publicación, al publicar, con su propio reloj).

    Ganas tres cosas: Ana conserva sus 48 ms de margen, si moderación falla ella ni se entera, y moderación puede usar un modelo más lento y más preciso. La Ronda hace lo mismo: en C01, la moderación es otro sistema, fuera de la API de categorías.

12

Lo que sigue

Esencial

What comes next

  • En Sensei. La siguiente lección, «Qué es un modelo», abre la caja: qué hace el modelo por dentro y qué significa de verdad el «94 %». Después vienen cómo ve una foto, con qué aprende, cómo aprende y cómo saber si aprendió. Las cuentas de esta lección (percentiles, requests por segundo, qué tan seguido falla algo) se hacen a fondo en el módulo «Números y estadística para producción».
  • En la Ronda. M01 · El mapa y la entrevista arranca justo aquí: el ciclo de vida, la figura de Sculley y los dos caminos separados, que es lo primero que un entrevistador busca en tu diagrama. Su arquitectura de referencia es este mismo camino con más cajas (una puerta de entrada o gateway, un registro con las versiones aprobadas del modelo, un feature store que guarda datos ya preparados y una tarea diaria que busca drift), y sus estimaciones son las de la sección de números: 116, 350 y 500 requests por segundo. M02 · Patrones de inferencia desarrolla la pregunta «¿alguien está esperando?», M03 · Latencia y capacidad reparte el presupuesto de 200 ms tramo por tramo, M11 · Despliegue seguro hace el deploy poco a poco y M12 · Monitoreo caza el drift.
  • En el Dojo. Practicas el mismo C01 estación por estación, con código de verdad: son las 12 estaciones de esta lección.
13

Palabras que vas a oír

Esencial

Words you will hear

Estos son los conceptos que presentó esta lección. Cada uno tiene una lección donde se ve a fondo, más adelante.

ModelomodelUn programa que aprendió de ejemplos a convertir una entrada (una foto) en una respuesta (su categoría).Más

No lo escribe una persona regla por regla. Una persona elige su forma y los ejemplos, y el entrenamiento ajusta sus parámetros hasta que acierta. Por dentro es una función matemática muy grande: entran números (los píxeles de la foto) y salen números (qué tan probable es cada categoría).

Ejemplo. En C01 el modelo es una ResNet-50: recibe la foto de una publicación y devuelve qué tan probable es cada una de 500 categorías.

Ver en el glosario →

Parámetroparameter · weightCada uno de los números internos de un modelo que el entrenamiento ajusta. Son sus «perillas».Más

Una combinación de valores de los parámetros hace que el modelo responda de una forma, y otra combinación, de otra. Entrenar es buscar la combinación con la que el modelo se equivoca menos. En inglés también se les dice weights (pesos).

Ejemplo. La ResNet-50 de C01 tiene unos 24.5 millones de parámetros con sus 500 categorías (25.6 millones en la versión original, de 1000).

Ver en el glosario →

EntrenamientotrainingMostrarle al modelo muchos ejemplos con su respuesta correcta y ajustar sus parámetros, poco a poco, para que se equivoque menos.Más

El modelo adivina, se compara con la etiqueta correcta y mueve sus parámetros un poquito en la dirección que reduce el error. Eso se repite millones de veces. Es lento y caro, y se hace de vez en cuando, no con cada uso.

Ejemplo. En C01 el modelo se reentrena una vez al mes con las fotos nuevas del mes.

Ver en el glosario →

EtiquetalabelLa respuesta correcta de un ejemplo: la que el modelo debería dar. En C01, la categoría real de una foto.Más

Muchas veces la pone una persona a mano, y por eso cuesta tiempo y dinero. Con etiquetas malas, el modelo aprende mal, aunque todo lo demás esté perfecto.

Ejemplo. Una foto de unos tenis con la etiqueta «Calzado › Tenis». En C01 las etiquetas salen de tres lugares: la categoría que eligió quien vende, las correcciones de moderadores y unas 5 mil fotos al mes revisadas a mano.

Ver en el glosario →

InferenciainferenceUsar un modelo ya entrenado para responder sobre un caso nuevo. Los parámetros no cambian: el modelo solo calcula.Más

Es el otro momento en la vida de un modelo, después del entrenamiento. Cada respuesta que da es una predicción. Es rápida y pasa todo el tiempo: es lo que hace el modelo en producción.

Ejemplo. Cada vez que alguien sube una foto al marketplace de C01, el modelo hace una inferencia. Son millones al día.

Ver en el glosario →

PredicciónpredictionLa respuesta que da un modelo para un caso. No es una certeza: suele venir con qué tan seguro está, como una probabilidad.Más

Sale de la inferencia: el modelo calcula un número para cada respuesta posible y los convierte en probabilidades. La predicción es la respuesta más probable, o las primeras de la lista. Que diga 94 % no garantiza que acierte: qué tanto se le puede creer a ese número se ve en la lección «Qué es un modelo».

Ejemplo. «Calzado › Tenis, 94 %» es una predicción: el modelo cree que es eso, con una confianza de 94 %. Se lee como una probabilidad, aunque no siempre es exacta.

Ver en el glosario →

Producciónproduction · prodCuando el sistema ya lo usa gente real, todos los días, y si falla alguien lo nota.Más

Lo contrario es desarrollo: tu laptop o un notebook, donde puedes romper cosas sin que nadie se entere. Pasar algo de uno a otro, o cambiar la versión que responde por una nueva, es un deploy.

Ejemplo. El modelo de C01 está en producción: cada foto que alguien sube al marketplace pasa por él, de día y de noche. Si deja de responder, miles de personas tienen que buscar la categoría a mano.

Ver en el glosario →

Deploydeployment · desplegarPoner a responder a la gente de verdad una versión nueva de un modelo o de un programa, en lugar de la anterior.Más

Es el puente del camino offline al camino online: la única forma en que lo que se entrenó le llega a alguien. Casi nunca se hace de golpe: primero la versión nueva atiende una fracción chica del tráfico, se vigila y, si todo va bien, recibe más. Si algo empeora, se regresa a la versión anterior (rollback).

Ejemplo. En C01, un modelo aprobado responde primero 5 de cada 100 fotos, luego 25 y luego todas. Si suben la latencia o los errores, se regresa solo a la versión anterior.

Ver en el glosario →

NotebookJupyter notebookUn documento donde mezclas código, resultados y notas, y corres el código por pedacitos. Muy bueno para explorar, malo para producción.Más

Puedes correr las celdas (los pedacitos de código) en cualquier orden, y por eso es fácil que algo funcione solo en tu máquina y solo esa vez. Para producción, el código pasa a archivos normales que corren siempre igual, de principio a fin.

Ejemplo. Entrenaste una primera versión en un notebook y funciona porque corriste la celda 3 antes que la 5. Si alguien lo corre de arriba abajo, falla. Para producción, ese código pasa a un archivo de Python que corre siempre igual.

Ver en el glosario →

ML engineermachine learning engineerLa persona que lleva un modelo del notebook a producción y lo mantiene funcionando: datos, entrenamiento, serving, despliegue y monitoreo.Más

No basta con que el modelo acierte. El trabajo es que todo lo que lo rodea también funcione: que le lleguen buenos datos, que responda rápido, que no se caiga y que alguien note cuando empieza a fallar.

Ejemplo. En C01, el ML engineer no inventa la ResNet-50: se encarga de que las fotos le lleguen bien preparadas, de que responda en menos de 200 ms, de que una versión nueva salga sin romper nada y de notar cuando empieza a fallar.

Ver en el glosario →

PipelinepipelineUna cadena de pasos donde lo que sale de uno es lo que entra al siguiente, y que se puede volver a correr igual.Más

Lo importante es que se pueda volver a correr igual: si cada paso lee una versión fija de lo que le entra y guarda lo que sale, cualquiera puede repetir el resultado o encontrar en qué paso se rompió. En producción casi todo es un pipeline: el de datos, el de entrenamiento y el de despliegue.

Analogía. Una línea de ensamblaje: cada estación hace una cosa y le pasa la pieza a la siguiente.

Ejemplo. El camino de C01 es un pipeline: datos → modelo → API → contenedor → orquestación → monitoreo.

Ver en el glosario →

Datasetdataset · conjunto de datosUna colección de ejemplos, guardada y ordenada, con la que se entrena o se evalúa un modelo.Más

Cada ejemplo trae la entrada (la foto) y, casi siempre, su etiqueta (la categoría correcta). En producción no basta con tenerlo: hay que poder decir exactamente con cuál dataset se entrenó cada modelo.

Ejemplo. El dataset de un mes en C01 son las fotos de publicaciones con su categoría revisada.

Ver en el glosario →

APIApplication Programming InterfaceLa «ventanilla» de un programa: lo que otros programas le pueden pedir, cómo pedírselo y qué les va a regresar.Más

Quien la usa no necesita saber cómo funciona por dentro, solo qué pedir y en qué formato. Un modelo en producción casi siempre se usa a través de una API: le mandas una request con la foto y te regresa la categoría.

Analogía. La ventanilla de un banco: no ves la bóveda ni los sistemas de atrás, pero sabes qué trámites puedes pedir y qué papeles llevar.

Ejemplo. La API de C01 recibe una foto y regresa las 5 categorías más probables, cada una con su porcentaje. El marketplace no necesita saber que adentro hay una ResNet-50.

Ver en el glosario →

Servingmodel serving · servir un modeloTener el modelo cargado en un servidor, listo para responder predicciones por una API.Más

Es la etapa 3 del camino: un programa carga el modelo una vez, al arrancar, y desde ahí responde cada request. Lo difícil no es que responda una vez, sino que responda rápido y sin caerse, muchas veces por segundo, con la foto preparada igual que cuando se entrenó.

Ejemplo. En C01, el serving es la API que recibe la foto de Ana, la prepara y se la pasa al modelo, que vive en un servidor con GPU (Triton, en la Ronda).

Ver en el glosario →

ServidorserverUna computadora (o un programa) que se queda encendida esperando peticiones y las responde.Más

La palabra se usa para las dos cosas: la máquina y el programa que corre en ella esperando peticiones. En producción, los servidores no se apagan nunca y casi siempre están en la nube (computadoras que empresas como Amazon o Google rentan por hora), no en una oficina.

Ejemplo. La API de C01 corre en varios servidores en la nube que responden millones de fotos al día. Si uno se apaga, los demás siguen respondiendo.

Ver en el glosario →

ContenedorcontainerUn paquete con tu programa y todo lo que necesita para correr (la versión de Python, las librerías, los archivos), para que corra igual en cualquier máquina.Más

Resuelve el clásico «en mi máquina sí funciona». La herramienta más usada para crearlos es Docker. Ojo: si el modelo usa una GPU, la máquina también necesita sus drivers.

Analogía. Un contenedor de barco: no importa qué lleve adentro, tiene un tamaño estándar y cualquier puerto, grúa o barco lo puede mover.

Ejemplo. El contenedor de la API de C01 lleva la versión exacta de Python, las librerías y el código. El mismo contenedor que se probó es el que corre en cada servidor.

Ver en el glosario →

OrquestaciónorchestrationQue un sistema decida por ti cuántas copias de tu programa correr, en qué máquinas, y que levante otra si una se cae.Más

También se encarga de cambiar a una versión nueva poco a poco, sin apagar el servicio. El orquestador de contenedores más usado es Kubernetes.

Ejemplo. En C01, Kubernetes mantiene varias copias de la API encendidas, agrega copias cuando sube el tráfico de la hora pico y, si una copia falla, levanta otra sola.

Ver en el glosario →

MonitoreomonitoringMedir todo el tiempo cómo se comporta el sistema en producción y avisar cuando algo se sale de lo normal.Más

En un sistema con un modelo se miden dos tipos de cosas. Las del software: qué tan rápido responde (latencia), cuántas peticiones fallan. Y las del modelo: si sigue acertando, o si los datos que llegan ya no se parecen a los de su entrenamiento (drift).

Ejemplo. En C01 se vigila que 99 de cada 100 respuestas tarden menos de 200 ms, cuántas fallan y si cambia cuáles categorías predice más seguido el modelo, que es una señal temprana de drift.

Ver en el glosario →

Driftdata drift · derivaCuando los datos que llegan en producción dejan de parecerse a los del entrenamiento. Por eso el modelo puede empezar a fallar más aunque nadie lo haya tocado.Más

El modelo no se descompone: el mundo cambia a su alrededor. Llegan productos nuevos, cambian las modas, las cámaras de los celulares toman fotos distintas. Ojo: drift no siempre quiere decir que el modelo empeoró (con fotos mejor iluminadas hasta puede acertar más). Por eso el drift abre una investigación, y lo que decide si hay que reentrenar son las etiquetas nuevas.

Ejemplo. Salen modelos nuevos de tenis y los celulares toman fotos con otra luz: las fotos que llegan se parecen cada vez menos a las del entrenamiento, y el modelo acierta un poco menos cada mes. Una categoría nueva (como «bolsas» en el Dojo) es otra cosa: ahí el modelo ni siquiera tiene esa respuesta.

Ver en el glosario →

ReentrenamientoretrainingVolver a entrenar el modelo con datos nuevos para que se ponga al día con lo que está pasando.Más

Es lo que cierra el ciclo: el monitoreo detecta que el modelo se quedó atrás, se juntan y etiquetan datos nuevos, y se entrena una versión nueva que reemplaza a la anterior solo si es mejor.

Ejemplo. C01 reentrena cada mes con las fotos nuevas, y antes si el monitoreo detecta drift o si el negocio agrega una categoría, como «bolsas» en el Dojo.

Ver en el glosario →

Requestrequest · peticiónUn mensaje que un programa le manda a otro, por la red, para pedirle algo. Lo que regresa se llama response (respuesta).Más

Viaja por la red con un formato acordado: a qué dirección va, qué se pide y qué datos lleva (aquí, la foto). Cada request recibe su response, aunque sea un mensaje de error. Contar cuántas llegan por segundo es la forma de medir cuánto trabajo tiene un servicio.

Ejemplo. Cuando Ana sube su foto, los servidores del marketplace le mandan una request a la API del modelo con la foto, y la response trae la categoría.

Ver en el glosario →

LatencialatencyCuánto tarda en llegar la respuesta desde que se hace la petición.Más

Se mide en milisegundos. No basta con el promedio: importa sobre todo qué tan lentas son las respuestas más lentas, porque a esas personas la app se les traba.

Ejemplo. C01 se compromete a que 99 de cada 100 sugerencias tarden menos de 200 ms.

Ver en el glosario →

Milisegundo (ms)millisecondUna milésima de segundo. Un parpadeo dura entre 100 y 400 ms.Más

Un segundo tiene 1,000 milisegundos. Es la unidad natural del camino online: la respuesta de un modelo se mide en decenas o cientos de ms.

Ejemplo. La promesa de C01 es de 200 ms, un quinto de segundo. El marketplace espera como máximo 300 ms, tres décimas de segundo.

Ver en el glosario →

Camino onlineonline path · serving pathTodo lo que pasa mientras alguien espera una respuesta: llega la request, se prepara la entrada, el modelo calcula y sale la respuesta. Su reloj son los milisegundos.Más

Corre por cada request, a cualquier hora, y si falla se nota al instante. Por eso vive con un presupuesto de latencia, un tiempo máximo de espera y un fallback. Crece con el tráfico: más requests por segundo piden más copias encendidas. La pregunta que lo define: ¿alguien está esperando la respuesta?

Ejemplo. En C01: la foto de Ana entra a la API, se prepara, el modelo hace la inferencia y regresa las 5 categorías más probables. 99 de cada 100 veces, en menos de 200 ms.

Ver en el glosario →

Camino offlineoffline path · training pathTodo lo que prepara la siguiente versión del modelo sin que nadie esté esperando: juntar y etiquetar datos, entrenar, examinar y aprobar. Su reloj son las horas, los días y las semanas.Más

Corre por calendario o cuando algo lo dispara, como el drift o una categoría nueva. Si falla, nadie lo nota ese día: el modelo actual sigue respondiendo, solo que envejece. Se une al camino online por dos puentes: el registro de cada predicción (de online a offline) y el deploy (de offline a online).

Ejemplo. En C01, cada mes: se guarda una muestra de las fotos, se juntan sus categorías (unas 5 mil revisadas a mano), se reentrena en unas horas de GPU, se examina contra el modelo actual y, si no es peor, se despliega.

Ver en el glosario →

Fallbackfallback · plan BLo que hace el sistema cuando el modelo no responde a tiempo o falla: una respuesta más simple que no depende de él, para que la persona pueda seguir.Más

Todo lo que está en el camino online falla alguna vez. El fallback convierte esa falla en una molestia chica en vez de una pantalla trabada: el sistema se degrada, pero no se cae. Va junto con un tiempo máximo de espera (timeout): pasado ese tiempo, se deja de esperar y se usa el plan B.

Ejemplo. En C01, si la API no contesta en 300 ms, el marketplace le muestra a Ana el selector de categorías para elegirla a mano. En el caso de fraude de la Ronda, si el modelo no responde, deciden reglas fijas.

Ver en el glosario →

14

Chequeo

Esencial

Check

Intenta responder en tu cabeza antes de abrir cada respuesta.

  1. 1¿Cuál es la diferencia entre entrenar un modelo y usarlo?Ver respuesta

    Al entrenar, el modelo ve ejemplos con su respuesta correcta y ajusta sus parámetros. Es lento y se hace de vez en cuando. Al usarlo (inferencia), recibe un caso nuevo sin respuesta y solo calcula, con los parámetros fijos. Es rápido y pasa millones de veces.

  2. 2Un modelo acierta 95 % en tu laptop. ¿Ya está en producción?Ver respuesta

    No. Le falta todo lo demás: que alguien le pueda preguntar (API), que corra igual en otras máquinas (contenedor), que aguante a millones de personas sin caerse (orquestación) y que alguien vigile que siga acertando (monitoreo).

  3. 3¿Qué es el camino online, qué es el offline y cuál es el reloj de cada uno?Ver respuesta

    El online es lo que pasa mientras alguien espera la respuesta: milisegundos (en C01, 99 de cada 100 fotos en menos de 200 ms). El offline prepara la siguiente versión sin que nadie espere, con datos, etiquetas, entrenamiento y examen: horas, días o semanas (en C01, una vuelta al mes).

  4. 4¿Cuáles son los dos puentes entre los dos caminos?Ver respuesta

    El registro de cada request, que lleva lo que pasó en el online hacia el offline, y el deploy, que lleva la versión aprobada del offline al online. Sin el primero el modelo no aprende nada nuevo; sin el segundo, lo que aprende no le llega a nadie.

  5. 5¿Qué pasa si la API de C01 no contesta en 300 ms, y por qué existe ese plan?Ver respuesta

    El marketplace deja de esperar y le muestra a Ana el selector de categorías: es el fallback. Existe porque todo falla alguna vez: aun cumpliendo su promesa del 99.9 %, hasta 300 mil fotos al mes se quedan sin sugerencia.

  6. 6¿Por qué un deploy se hace poco a poco y no de golpe?Ver respuesta

    Para que, si la versión nueva trae un problema, solo le pegue a unos pocos. En C01 responde primero 5 de cada 100 fotos, luego 25 y luego todas; si algo empeora, se regresa sola a la anterior.

  7. 7Nadie ha tocado el modelo en seis meses y ahora se equivoca más. ¿Cómo puede ser?Ver respuesta

    Porque el mundo cambió: llegan fotos distintas a las del entrenamiento. Eso es drift. La solución es juntar y etiquetar datos nuevos y reentrenar. (Si además aparece una categoría nueva, el modelo ni siquiera puede elegirla: también toca reentrenar.)

Sigue · 01Qué es un modeloLo básico de ML Léelo en la RondaM01 · El mapa y la entrevistaLo que acabas de leer, con el ojo del entrevistador.