Evaluación
pytest-metricguard
Un fixture de pytest que falla el test cuando una métrica de ML retrocede.
Instalación
pip install git+https://github.com/jmweb-org/pytest-metricguardQué 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.01sCaracterí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.