P111 — Deuda técnica en ML

Ruta de operación · El código del modelo es el 4 % del sistema. El otro 96 % acumula una deuda que ningún compilador detecta.

Nivel: L1 · Motor: deuda_tecnica · Notebook: P111_deuda_tecnica.ipynb · Anexo: complejidad y coste

1. Identificación

Campo Valor
Título original Hidden Technical Debt in Machine Learning Systems
Autoría D. Sculley, Gary Holt, Daniel Golovin, Eugene Davydov y otros
Año 2015
Venue NeurIPS 2015
Fuente primaria NeurIPS 2015
Acceso Abierto
Fecha de consulta 2026-08-17

2. Problema anterior

Los equipos miden su progreso por la calidad del modelo. Mientras tanto, el sistema que lo rodea —ingestión de datos, extracción de características, servicio, monitorización, configuración, pegamento entre sistemas— crece sin control y sin las herramientas que sí existen para el software convencional.

Y acumula formas de deuda que no tienen equivalente fuera del aprendizaje automático. La más grave: las dependencias de datos. Quitar una función rompe la compilación; quitar una característica no rompe nada hasta que, semanas después, un modelo predice peor sin relación aparente con el cambio.

3. Propuesta

Un catálogo de antipatrones específicos, con nombre, para que se puedan discutir:

4. Intuición sin fórmulas

Una cocina de restaurante. La receta —el modelo— cabe en una tarjeta. Todo lo demás es proveedores, cámaras frigoríficas, turnos, limpieza, inventario y las notas pegadas en la nevera que solo entiende quien lleva años.

Cuando algo sale mal, casi nunca es la receta.

Dónde deja de funcionar la analogía: en la cocina, si falta un ingrediente, el plato no sale y alguien se entera al momento. Aquí, si falta una característica, el modelo sigue produciendo predicciones —peores— y nadie se entera hasta que alguien mira la métrica.

5. Matemática mínima

No hay formalismo: la aportación es un catálogo y un vocabulario. Lo que sí se puede exhibir es la desproporción.

Componente Líneas %
código del modelo 800 4,0
recogida y validación de datos 3 200 16,2
extracción de características 2 600 13,1
infraestructura de servicio 4 100 20,7
monitorización y alertas 1 500 7,6
gestión de configuración 2 200 11,1
código de pegamento 5 400 27,3

Y las dependencias: retirar la característica f_precio afecta a 3 consumidores que nadie tenía apuntados; hay 1 característica huérfana que se sigue calculando; y bajar el umbral del modelo A de 0,5 a 0,45 hace que el modelo B, que consume su salida, reciba un 36 % más de entradas sin que nadie lo haya tocado.

💡 Consejo

Puente matemático. Esta sección da por sabido lo siguiente. Si algo no te suena, léelo primero: está explicado una sola vez, en un solo sitio, y sirve para todas las fichas.

Dónde Qué necesitas de ahí
A05 §8 · Checklist antes de creerte una cifra de rendimiento por qué una métrica de modelo no dice nada sobre el sistema que lo rodea

6. Arquitectura o flujo

flowchart TD
    D["datos"] --> V["validación"]
    V --> C["extracción de características"]
    C --> M["MODELO<br/>4 % del código"]
    M --> S["servicio"]
    S --> U["usuarios"]
    U -.->|"bucle de realimentación oculto"| D
    C -.->|"dependencias que ningún<br/>compilador comprueba"| X["consumidores no declarados"]
    style M fill:#1a3a2a,stroke:#3fb950,color:#f0f6fc
    style U fill:#3a1a1a,stroke:#f85149,color:#f0f6fc

7. Qué observar en el paper original

8. Evidencia y resultados

Es un artículo de experiencia y posición, escrito desde la práctica de sistemas de producción en Google.

No hay experimentos ni mediciones sistemáticas: hay un catálogo de patrones observados. Su autoridad viene de la experiencia de sus autores y de que cualquiera que haya operado un sistema de este tipo los reconoce.

La miniatura construye conteos de líneas y un grafo de dependencias ilustrativos —el artículo no da esa tabla— para hacer comprobable la desproporción y el efecto CACE.

9. Impacto

10. Limitaciones

  1. No aporta mediciones: es un catálogo de patrones observados, no un estudio.
  2. No da soluciones detalladas. Nombra los problemas y esboza mitigaciones; construir las herramientas es trabajo posterior.
  3. Está escrito desde una organización con recursos enormes, y algunas mitigaciones no son trasladables a un equipo pequeño.
  4. Los conteos que se citan por ahí son apócrifos: el artículo da la figura, no porcentajes.
  5. Diez años después, buena parte sigue sin resolverse. Las dependencias de datos siguen sin tener un compilador que las compruebe.

11. Errores comunes

Error Corrección
«El trabajo de un equipo de ML es entrenar modelos» El modelo es una fracción pequeña del sistema. La mayor parte del trabajo —y de la deuda— está en todo lo demás.
«Una característica que no rompe nada al quitarla es que no se usaba» No hay compilador que avise. El efecto aparece semanas después, en la métrica de un modelo que nadie relacionó con el cambio.
«Se puede razonar sobre cada entrada del modelo por separado» CACE: cambiar cualquier cosa lo cambia todo. Las entradas no son independientes ni en el modelo ni aguas abajo.
«La deuda de configuración es un detalle» El artículo la señala como comparable en tamaño a la de código, y con muchísimas menos herramientas para gestionarla.
«Con sistemas de agentes esto ya no aplica» Aplica más: el modelo es una llamada a una API y todo el sistema es prompt, herramientas, orquestación, memoria y pegamento.

12. Relación con trabajos anteriores

13. Relación con trabajos posteriores

14. Notebook asociado

P111_deuda_tecnica.ipynb

Qué implementa: el desglose de líneas por componente con el porcentaje que representa el modelo, un grafo de dependencias de características con sus consumidores y huérfanas, y el efecto CACE de cambiar un umbral aguas arriba.

Qué NO implementa: los conteos de líneas y el grafo son ilustrativos: el artículo no los da. Y no cubre bucles de realimentación ni deuda de configuración, que son dos de sus secciones.

ai-evolution paper-lab P111 --seed 7

15. Actividades Bloom

Nivel Actividad
Recordar Enumera cinco tipos de deuda específicos del aprendizaje automático.
Explicar Explica el principio CACE.
Aplicar Ejecuta el notebook y localiza las características huérfanas.
Analizar Analiza por qué las dependencias de datos son invisibles.
Evaluar «El modelo funciona bien, luego el sistema está bien». Evalúa la afirmación.
Crear Dibuja el grafo de dependencias de datos de un sistema tuyo y busca las huérfanas.

16. Autoevaluación

  1. ¿Qué proporción del sistema es el código del modelo?
  2. ¿Por qué las dependencias de datos son deuda invisible?
  3. ¿Qué es una característica huérfana?
  4. ¿Qué dice el principio CACE?
  5. ¿Qué es un bucle de realimentación oculto?
  6. ¿Qué evidencia aporta el artículo?
  7. ¿Sigue aplicando con sistemas de agentes?

17. Respuestas esperadas

  1. Una fracción pequeña. En la ilustración de la miniatura, el 4 %; el artículo lo muestra con una figura de una caja pequeña rodeada de cajas grandes.
  2. Porque ningún compilador las comprueba. Retirar una característica no rompe nada de inmediato: el efecto aparece semanas después en la métrica de un modelo.
  3. Una característica que se sigue calculando y ya no consume nadie. Cuesta cómputo cada día y nadie la retira porque nadie sabe que sobra.
  4. Que cambiar cualquier cosa lo cambia todo: ninguna entrada de un modelo es independiente de las demás, ni la salida de un modelo es independiente de quien la consume.
  5. Dos modelos que se influyen mutuamente a través del mundo, sin que exista ninguna conexión directa entre ellos en el código.
  6. Ninguna cuantitativa: es un catálogo de patrones observados en producción. Su autoridad viene de la experiencia y del reconocimiento de quien ha operado estos sistemas.
  7. Más que antes. El modelo es una llamada a una API, y todo el sistema es prompt, herramientas, orquestación, memoria, evaluación y pegamento.

18. Fuentes primarias


⬅️ Anterior: P110 Deriva de concepto · 📇 Índice · 📝 Evaluación · 🏫 Clase 148 · Ciclo de vida de datos, modelos y agentes · ➡️ Siguiente: P112 ML Test Score