At 8 GPUs the data loader is fine. At 64 it's the bottleneck. How data loading, preprocessing, and shuffling change as you scale up training jobs.

Single-node data loading works until it doesn't

On one machine with a few GPUs, PyTorch's DataLoader with a handful of workers is fine. Data sits on local NVMe, preprocessing keeps up, GPU utilization looks healthy.

More GPUs means more demand on the same pipeline

Scale from 8 GPUs to 64. Each GPU still needs the same batch throughput. That's 8x the data loading demand.

Shuffling gets expensive

Random access into a large dataset is fast on local disk, slow over a network.

Preprocessing needs to move off the training node

At scale, you can't afford to decode images or tokenize text on the same machines running the GPUs.

Caching and locality matter more than you think