Sobre MíQué hagoProyectosLabContacto

Evaluación

pytest-metricguard

Un fixture de pytest que falla el test cuando una métrica de ML retrocede.

pytest-metricguard CI statusMIT license

Instalación

pip install git+https://github.com/jmweb-org/pytest-metricguard

Qué hace

Un notebook puede reportar la accuracy que quiera, nadie lo vuelve a correr antes de mergear. La versión de «el modelo empeoró» que de verdad importa es la que se comprueba en cada pull request, contra un número guardado de una vez que todos dieron por buena. pytest-metricguard añade un fixture, metric_guard, que compara una métrica con una baseline en JSON y falla el test si bajó más de lo tolerado.

En acción

$ pytest
metric 'roc_auc' regressed beyond tolerance in test_model.py::test_model_quality
  baseline : 0.86
  new      : 0.828
  delta    : -0.03200000000000003 (higher-is-better)
  allowed  : 0.01 (tol=0.01, rel_tol=None)

metric-guard
test                                         metric             baseline        new  verdict
test_model.py::test_model_quality            roc_auc              0.8600     0.8280  worse (FAIL)

1 failed in 0.01s

Características

  • metric_guard.check(nombre, valor, tol=...) dentro de un test normal, sin infraestructura aparte.
  • La primera ejecución sin baseline la registra y avisa; no hace fallar el test.
  • --update-metric-baselines para aceptar un número nuevo a propósito, como snapshot-update.
  • Resumen de sesión con baseline, valor nuevo y veredicto por cada métrica comprobada.
Ver el código en GitHub

Otras herramientas

hola@jmwebsoluciones.com