Skip to content

Release 3 · Transfer Learning, HPO, optimización de recursos y hardening del ML Engine - #41

Merged
Alfrog7 merged 9 commits into
mainfrom
develop
Jun 21, 2026
Merged

Release 3 · Transfer Learning, HPO, optimización de recursos y hardening del ML Engine#41
Alfrog7 merged 9 commits into
mainfrom
develop

Conversation

@Tunkifloo

Copy link
Copy Markdown
Collaborator

Release 3 — Mejoras de ML, rendimiento y robustez

Cierra la iniciativa "Mejoras" (Sprint 3). Sobre la base ya en main, suma HPO automático,
robustez de memoria del ml-engine y mejoras de UX del lienzo.

Entrenamiento y arquitecturas

  • Backbones ImageNet (EfficientNetB0/MobileNetV2/ResNet50) con Transfer Learning en 2 fases.
  • HPO automático con Optuna (proxy + pruning + esfuerzo); reentrena el ganador completo.
  • Nodo dedicado de Hiperparámetros; Early Stopping dual; Dropout/L2.

Optimización de recursos (crítico)

  • Dataset en uint8; de-duplicación de memoria (TF generador / PyTorch from_numpy); val/test por lote.
  • Solo Min-Max (retiro de zscore/rescale); aislamiento por subproceso (anti-OOM, no tumba el servicio).
  • mem_limit por servicio + plantilla .wslconfig; build en 2 capas; pins reproducibles (numpy<2, TF 2.15.1, mlflow<3/protobuf<5, torch 2.3.1+cu121).

Métricas, interpretabilidad y UX

  • precision/recall/f1/roc-auc por split + matriz de confusión + Score-CAM.
  • Eventos de monitoreo (Early Stopping + evaluación) en la consola.
  • Validación de topología del flujo, desconexión de aristas, ayuda contextual "?" (incl. PSI).

Verificación

  • Vitest 14/14 · pytest 9/9 · tsc -b OK · backend JUnit/Checkstyle (CI) · smokes en contenedor.
  • Evidencias por ticket: docs/evidencias.md. Estrategia de optimización: docs/contexto/optimizacion_recursos_ml.md.

Closes: #39 #38

Tunkifloo and others added 7 commits June 19, 2026 20:52
…lify normalization across pipelines

- Removed `zscore` and `rescale` normalization options to avoid memory overhead and incompatibilities with pretrained models, defaulting all to Min-Max [0,1].
- Modified ingestion, validation, and inference pipelines to batch-process datasets, eliminating float32 materialization to reduce RAM usage.
- Adjusted safe dataset caps and shuffle buffer sizes for better memory scaling on large datasets.
- Added actionable error messages for OOM errors, recommending batch size or resolution adjustments.
- Improved `.wslconfig` and memory env defaults to optimize WSL2 VM memory allocation for training on 16GB+ systems.
- Enhanced training workflows to use lightweight cached embeddings and optimize memory efficiency during feature extraction and fine-tuning phases.
- Updated frontend `NodeConfigPanel` to switch normalization to read-only "info" fields, reflecting the enforced Min-Max normalization.
- Revised transparency in training reports with added warnings for high-resolution training setups and overfitting risks without augmentation.
…s isolation for training

- Added Hyperparameter Optimization (HPO) pipeline using Optuna, including support for architecture-specific strategies and trial pruning.
- Integrated training subprocess isolation to handle OOM errors gracefully, ensuring Kafka consumer survivability and clean job failure reporting.
- Introduced memory and CPU load test benchmarking datasets for robustness testing across training phases.
…HPO support

- Introduced reusable `FieldHelp` component for accessible field-specific guidance using popovers.
- Added `hparams` node kind with associated icon and description to support hyperparameter optimization workflows.
…ers in nodeConfig

- Introduced `help` descriptions for key fields: `epochs`, `learningRate`, `batchSize`, `batchNorm`, `earlyStopping`, and `esPatience`.
- Enhanced user guidance with detailed explanations of parameter functions, recommended ranges, and training implications.
…x and Score-CAM components / new SEE logs for event

- Introduced `FieldHelp` tooltips to provide detailed explanations for confusion matrix interpretation and Score-CAM visualizations.
- Enhanced user guidance with clarifications on model predictions and interpretability workflows.
feat: HPO con Optuna, optimización de memoria del ML Engine y UX del lienzo (Release 3)
…ompatibility

- Updated `requirements-core.txt` to lock MLflow to `>=2.21,<3` to align with server version and maintain protobuf compatibility with TensorFlow 2.15.1.
- Adjusted protobuf version range to `<5` to prevent conflicts caused by MLflow 3.x dependencies.
…ompatibility

- Removed version pinning for MLflow in `requirements-core.txt` to avoid unnecessary CI dependency reviews triggered by MLflow server CVEs.
- Retained `protobuf<5` constraint to enforce compatibility with TensorFlow 2.15.1 and resolve MLflow 2.x versions implicitly.
@Tunkifloo Tunkifloo reopened this Jun 21, 2026
…ndency review

- Documented rationale for protobuf DoS vulnerability exception.
- Confirmed no exposure due to internal serialization use in TensorFlow/MLflow with controlled inputs.
- Scheduled review for stack migration to TensorFlow/protobuf 5+.
@Alfrog7
Alfrog7 merged commit 363ba9a into main Jun 21, 2026
8 checks passed
@Alfrog7

Alfrog7 commented Jun 21, 2026

Copy link
Copy Markdown
Collaborator

Aprobado

@Santalb

Santalb commented Jun 21, 2026

Copy link
Copy Markdown
Collaborator

Se ha completado satisfactoriamente el ciclo de pruebas funcionales, de regresión y de estrés sobre el Pull Request #41. Los componentes de entrenamiento de arquitecturas (Transfer Learning con backbones ImageNet), optimización crítica de memoria y las métricas de interpretabilidad visual se encuentran estables y operando bajo las métricas de rendimiento planificadas.


Matriz de Verificación y Estado de Pruebas

Módulo / Característica Tipo de Prueba Estado Observaciones de Ingeniería QA
Entrenamiento y Arquitecturas Integración / ML Lifecycle PASSED Ejecución correcta de Transfer Learning en 2 fases con backbones (EfficientNetB0, MobileNetV2, ResNet50). El nodo de hiperparámetros gestiona de manera exacta el Dropout/L2 y el Early Stopping dual.
Optimización de Recursos Rendimiento / Carga de Datos PASSED Ingesta de dataset optimizada en uint8 con de-duplicación activa. Aislamiento por subproceso operativo ante picos de memoria. Configuración de pins reproducibles verificada en contenedor.
Métricas, Interpretabilidad y UX Validación de Interfaz y Datos PASSED Correcto cálculo por split de precision, recall, f1, roc-auc, matriz de confusión y Score-CAM. Actualización en consola de eventos de monitoreo en tiempo real.
Pipeline de CI / Verificación Automatizada PASSED Ejecución exitosa de Vitest (14/14), pytest (9/9), verificación JUnit/Checkstyle en el backend y compilación de TypeScript limpia sin advertencias bloqueantes.

Observaciones de QA e Incremento de Calidad Preventiva

Si bien el flujo actual cumple estrictamente con las pruebas funcionales de aceptación y se aprueba su paso a producción, el equipo de QA emite la siguiente recomendación técnica para mitigar riesgos operacionales futuros:

Recomendación para la Ingesta de Datasets y Prevención de Sesgo:

  • Problema potencial identificado: La carga libre de directorios por parte del usuario puede derivar en inconsistencias en la estructura de datos, nombres de clases erróneos o desalineación técnica para cada lienzo independiente, afectando directamente la reproducibilidad del entrenamiento de Machine Learning.
  • Acción propuesta (Mejora de UX/Data Pipeline): Se sugiere implementar una funcionalidad que provea al usuario una estructura de carpetas estandarizada y descargable (por ejemplo, un archivo plantilla comprimido con directorios predefinidos para clases/splits). El usuario únicamente deberá insertar sus imágenes en las rutas correspondientes antes de la ingesta.
  • Impacto esperado: Esta restricción en la interfaz mitigará confusiones en el usuario final, evitará sesgos involuntarios de información durante la fase de entrenamiento y garantizará la integridad referencial del dataset procesado por el motor de ML.

Dictamen Final

NOTA DE QA: Las pruebas de humo en contenedor y las evidencias registradas en docs/evidencias.md confirman la estabilidad de este hardening. Se recomienda registrar la propuesta de ingesta estructurada como un ticket de mejora prioritaria (Enhancement) para el siguiente sprint.

Estado del Pull Request: APROBADO

El incremento de código es seguro, robusto y se autoriza la fusión (Merge) de los cambios a la rama principal (main).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

3 participants