DataLoader + pin_memory
En PyTorch, cuando se entrenan redes neuronales, especialmente en grandes conjuntos de datos, aprovechar el DataLoader
con pin_memory=True
y establecer num_workers
en un número positivo aumenta significativamente el rendimiento.
pin_memory=True
permite una transferencia más rápida de los datos a la GPU manteniéndolos en memoria pinned
(bloqueada por página).
Al mismo tiempo, num_workers
determina el número de subprocesos utilizados para la carga de datos, lo que permite la obtención asíncrona de datos sin bloquear el cálculo de la GPU
Esta combinación minimiza el tiempo de inactividad de la GPU, lo que garantiza un uso más eficiente de los recursos de hardware y tiempos de entrenamiento del modelo más rápidos.
data_loader = DataLoader(dataset, batch_size=32, shuffle=True, num_workers=4, pin_memory=True)