Pruebas de Integración para Modelos Estadísticos


1. Introducción

Después de entrenar un modelo y antes de desplegarlo en producción, es esencial ejecutar pruebas de integración que verifiquen:

  • El artefacto del modelo (.pkl, .rds, etc.) es válido y se puede cargar.
  • Las predicciones tienen el formato, tipo y rango esperados.
  • El rendimiento no se ha degradado respecto a una versión anterior.
  • El modelo maneja correctamente casos extremos (valores nulos, entradas parciales).

Estas pruebas actúan como un gate en el pipeline de CI/CD: si fallan, el modelo no se promociona a entornos superiores (staging → producción).

Diagrama de flujo general de las pruebas

2. Tipos de Pruebas de Integración para Modelos

TipoQué pruebaCuándo fallaEjemplo
Smoke testEl modelo se carga sin erroresNo se puede leer el artefacto, clases/funciones faltanmodel = mlflow.pyfunc.load_model(model_uri)
Formato de salidaEstructura esperada (shape, tipo, rangos)Output no es lista/array, shape incorrecto, valores fuera de rangoassert prediction.shape == (batch_size, 1)
ConsistenciaMisma entrada → misma salida (determinismo)Ejecución repetida con misma entrada produce diferente salidaassert np.allclose(pred1, pred2)
RendimientoMétricas (AUC, RMSE, etc.) superan umbral mínimo en validación fijaModelo es peor que un baseline simpleassert valid_auc > 0.75
Integridad de característicasNo falla con datos faltantes (si el modelo imputa)Lanza excepción por valores nulos no manejadosmodel.predict(df_with_nans)
Latencia (opcional)Tiempo de inferencia dentro de límitePredicción en batch pequeño tarda más de N msassert elapsed_seconds < 0.5

Mapa conceptual de las pruebas

3. Ejemplo Práctico con Python + pytest + MLflow

Supongamos un modelo de clasificación registrado en MLflow con el alias "champion". Usaremos pytest para escribir las pruebas.

3.1. Estructura de archivos

text

3.2. Fixtures (conftest.py)

python

3.3. Pruebas de Integración (test_model_integration.py)

python

4. Integración en el Pipeline CI/CD (GitHub Actions)

Crea un workflow que se ejecute después del entrenamiento y antes del despliegue.

yaml

Diagrama del pipeline CI/CD con gate de pruebas

5. Mejores Prácticas

PrácticaDescripción
Usar datos de validación fijosNo generar muestras aleatorias en cada ejecución; usar un archivo versionado con Git LFS.
Aislar las pruebas del entorno de producciónNo ejecutar pruebas contra el endpoint real; usar artefacto local o staging.
Establecer umbrales realistasEl rendimiento en un batch pequeño puede fluctuar; usar un intervalo de tolerancia (ej. AUC ± 0.02).
Automatizar la descarga del modeloEn CI/CD, descargar la versión candidata desde el model registry (MLflow, S3, etc.).
Documentar cada pruebaCada prueba debe tener un comentario claro de qué verifica y por qué el umbral es ese.

6. Referencias

Documentos relacionados