Week 39 – Optimización de Datasets, Balanceo de Datos y Migración a HDF5
Week 39 – Optimización de Datasets, Balanceo de Datos y Migración a HDF5
Trabajo realizado
- Balanceo de Dataset (Binning): Se desarrolló un script en Pandas para corregir el desbalance masivo hacia la conducción en línea recta (steer
0.0). Se aplicó una técnica de agrupamiento (binning) y submuestreo aleatorio para garantizar que la red neuronal no se vuelva perezosa y aprenda efectivamente a negociar las curvas. - Optimización de Frecuencia de Muestreo: Se ajustó el tick de extracción del CARLA Recorder de 50 FPS (20 ms) a 10 FPS (100 ms). Esto elimina la altísima redundancia temporal (correlación entre cuadros adyacentes) y mejora drásticamente la densidad de información geométrica del dataset.
- Migración a Arquitectura HDF5: Para solucionar el cuello de botella de lectura de disco (I/O starvation), se reemplazó el formato tradicional de imágenes JPG sueltas y CSV por un único archivo binario masivo (
.h5) utilizando la libreríah5py. - Aceleración de Hardware (PyTorch + AMD): Se rediseñó la clase
Datasetpara realizar “Carga Perezosa” (Lazy Loading) del archivo HDF5. Se configuró elDataLoaderconnum_workers=8ypin_memory=Truepara maximizar el uso del procesador Ryzen 9 e inundar rápidamente la VRAM de la gráfica RX 6750 XT utilizando ROCm.
Configuraciones del Pipeline de Datos
| Componente | Configuración / Valor |
|---|---|
| Frecuencia de Extracción | 10 FPS (Delta: 100 ms) |
| Estrategia de Balanceo | Undersampling por Bins (Máx. muestras por bin) |
| Formato de Almacenamiento | Archivo Binario HDF5 (.h5) |
| Aceleración Dataloader | pin_memory=True, num_workers=8 |
| Entorno de GPU | AMD ROCm (HSA_OVERRIDE_GFX_VERSION=10.3.0) |
Resultados de Optimización
Los tiempos de carga por época se han reducido de minutos a segundos gracias a la lectura secuencial en RAM del archivo binario, permitiendo iterar modelos de PilotNet a una velocidad significativamente mayor sin saturar el procesador principal.