Scalable and Performant Data Loading
Moto Hira, Christian Puhrsch, Valentin Andrei, Roman Malinovskyy, Gael Le Lan, Abhinandan Krishnan, Joseph Cummings, Miguel Martin, Gokul Gunasekaran, Yuta Inoue, Alex J Turner, Raghuraman Krishnamoorthi
TL;DR
SPDL addresses end-to-end data loading bottlenecks in AI workloads by coordinating data acquisition, preprocessing, and GPU transfer under GIL constraints. It introduces a thread-based, GIL-releasing pipeline architecture driven by an asynchronous scheduler and a dedicated thread pool, enabling efficient parallelism without IPC overhead. The system architectures, design principles, and I/O/GPU transfer primitives are evaluated against PyTorch DataLoader and DALI, showing substantial throughput gains, lower CPU and memory usage, and compatibility with Free-Threaded Python (FT-Python). The work demonstrates a practical, framework-agnostic path to scalable data loading that can keep GPU feeding rates aligned with faster training regimes while lowering operational costs.
Abstract
We present SPDL (Scalable and Performant Data Loading), an open-source, framework-agnostic library designed for efficiently loading array data to GPU. Data loading is often a bottleneck in AI applications, and is challenging to optimize because it requires coordination of network calls, CPU-bound tasks, and GPU device transfer. On top of that, Python's GIL (Global Interpreter Lock) makes it difficult to gain performance improvement from multi-threading. We found that when data preprocessing functions release the GIL entirely, it is possible to execute them concurrently in a thread pool, thereby improving the workflow performance. Our benchmark shows that compared to the PyTorch DataLoader, SPDL can iterate through the ImageNet dataset 74% faster while using 38% less CPU and 50GB less memory. When training ViT-B/16 model, SPDL can send data to the GPU at a speed that does not starve the training. Additionally, when using SPDL on Python 3.13t, without changing any code, the throughput is further by improved by 33%, thanks to the disabled GIL. SPDL can improve the performance of current AI model training, and receives further performance improvements when Free-Threaded Python is adopted in production systems. SPDL is available at https://github.com/facebookresearch/spdl.
