High-Performance ML Data Loading - Real-Time Performance Analytics
Drop in your own JPEG/PNG images and
TurboLoader will decode → resize → normalize them and report real
throughput (vs PyTorch). Requires the backend:
python benchmark_server.py then open http://localhost:8000.
Only PyTorch uses per-worker processes, so only it scales with this knob. TurboLoader's fast path runs a single process-wide C++ thread pool sized to every core — it's already saturated at 1 worker (flat line). tf.data uses AUTOTUNE (manages its own parallelism), shown as a horizontal reference. PyTorch needs ~8 workers to approach what TurboLoader does with one internal pool.
Static reference numbers measured on dedicated hardware — they don't re-run in this
dashboard. Methodology, correctness checks, and the corrections history live in
experiments/cuda/RESULTS.md, benchmarks/E2E_TRAINING_RESULTS.md
and benchmarks/METAL_RESIDENT_RESULTS.md.
| Regime | TurboLoader | Best alternative | Hardware |
|---|---|---|---|
| On-the-fly (decode JPEGs every epoch) | 28,527 img/s | NVIDIA DALI 25,479 (+12%) | RTX 3090 |
| Pre-processed, fits in VRAM | ~280k img/s | FFCV-raw ~80k (3.5×) | RTX 3090 |
| Pre-processed, streaming > VRAM | ~140k img/s | FFCV-raw ~85k (1.6×) | RTX 3090 |
| Pre-processed, resident (unified memory) | 757k produced / 433k consumed img/s | numpy resident ~3.7k | Apple M4 Max |
| Pre-processed, CPU mmap (TBL-RAW, any hardware) | 586k img/s raw serve (99k np.sum-consumed w/ prefetch) | float32 RAM cache 137k at 3.3× the peak RSS | Apple M4 Max |
| End-to-end ResNet-18 training (epoch) | TBL-RAW 3.64 s · TAR 3.76 s | PyTorch DataLoader 3.92 s; pure-GPU floor 3.39 s | RTX 3090 |
| End-to-end video training (r3d_18, epoch) | 4.19 s (1.16×) | PyTorch DataLoader + PyAV 4.85 s; floor 2.11 s | RTX 3090 |
| LLM tokens delivered to device (32×1024) | 168M tok/s (1.9×) | nanoGPT get_batch 88M | RTX 3090 |
| Video: 1080p H.264 → 224px training batches (hardware decode) | 2,556 frames/s (3.9×) | OpenCV 657; PyAV 535; torchcodec 173 | Apple M4 Max |
| Video on NVIDIA: GPU-resident batches (cpu-decode backend) | 371 frames/s | OpenCV 312; PyAV 131; decord 604 leads on this weak-CPU host | RTX 3090 (WSL2) |
| End-to-end ResNet-18 training (median epoch) | 4.37s (1.17×) | PyTorch recipe 5.11s; pure-GPU floor 3.81s | RTX 3090 |
| End-to-end ResNet-18 on MPS (honest null result) | 8.06s — a tie (1.00×) | PyTorch 8.08s; MPS floor 7.61s (GPU-bound) | Apple M4 Max |