Sizing Disaggregated Storage for Multi‑GPU Training
Disaggregated storage can be the difference between GPUs idling and GPUs delivering sustained throughput. This guide gives a practical, measurement‑first approach to sizing disaggregated all‑flash storage for multi‑GPU training workloads, with concrete evaluation criteria, a worked example, and an objective vendor comparison.
The problem in one line
GPUs are fast; storage is often the hidden ceiling. For multi‑GPU training clusters you must size storage for sustained aggregate throughput, concurrency, and tail latency — not just peak bandwidth.
Key metrics to measure and target
- Aggregate read throughput (GB/s) required by all GPUs together at steady state.
- Per‑GPU sustained bandwidth demand (MB/s or GB/s) — depends on model, batch size, and samples/sec per GPU.
- IOPS and small‑IO latency for workloads with many small reads (e.g., tokenized text, many small images, metadata lookups).
- Concurrency: number of simultaneous streams (data loader workers × GPUs × nodes).
- Read amplification: decompression, augmentation, shuffling, and framework prefetching may multiply raw dataset transfer size.
- Write throughput and IOPS for checkpoints and logging.
- Network fabric capacity and protocol overhead (RDMA/NVMe‑oF vs TCP/SMB/HTTP).
Measure these from a representative run or estimate from known quantities; don’t design from peak bursts alone.
Sizing methodology — step by step
- Define a representative training config
- GPUs per host, hosts, GPUs total, batch size, model, and samples/sec per GPU.
- Estimate bytes per sample (B): this is the average size of an on‑disk sample after any compression.
- Compute per‑GPU throughput demand: Tgpu = samples_per_sec_per_GPU × B.
- Compute aggregate steady throughput: Tagg = Tgpu × number_of_GPUs.
- Add multipliers for read amplification: Tagg_eff = Tagg × A, where A accounts for augmentation, shuffling, re‑reads (common A = 1.1–2.0 depending on pipeline). Use a conservative value if unknown.
- Add headroom for checkpoints and peaks: Tagg_design = Tagg_eff × H (H = 1.2–1.5 typical).
- Verify fabric and protocol: ensure NICs, switch backplane, and NVMe‑oF/ROCE path can deliver Tagg_design with acceptable latency.
- Check concurrency and IOPS: calculate effective IOPS = concurrent_ops × average_IOPS_per_stream and verify the target storage can deliver low tail latency at that queue depth.
Example (illustrative):
- Suppose a configuration with 16 GPUs, one samples/sec per GPU = 200, bytes per sample = 1 MB.
- Per‑GPU Tgpu = 200 MB/s. Aggregate Tagg = 200 × 16 = 3200 MB/s = 3.2 GB/s.
- If augmentation and shuffle add 25% overhead (A = 1.25), Tagg_eff = 4.0 GB/s.
- Add 25% headroom (H = 1.25) => design target ≈ 5.0 GB/s. This result drives choices for the number of storage nodes, network links, and protocol.
Note: the numbers above are a worked example. Replace with measurements from your workload.
Protocol and fabric trade‑offs
- NVMe‑over‑Fabric (RDMA) offers lowest latency and highest efficiency under high concurrency; it is the preferred choice for sustained multi‑GPU demand where latency matters.
- TCP‑based solutions (SMB3, NFS, REST) are simpler operationally but have higher protocol overhead and tail latency under load.
- Ensure your NICs, switch fabric (100/200/400 Gb), and host drivers are validated for your target concurrency.
Design patterns and patterns of failure
- Local NVMe per host: best latency and isolated performance but poor elasticity and higher TCO for large clusters.
- Disaggregated all‑flash (NVMe‑oF): centralizes capacity and scales independently; watch for network oversubscription and controller hot spots.
- Hybrid: small local cache + disaggregated backend; effective for workloads with a modest working set.
Common failure modes:
- Underestimated concurrency: many data loader threads cause dozens–hundreds of simultaneous small requests, stressing latency.
- Wrong IO size assumptions: training frameworks issue many small reads for tokenized data or many moderate reads for images.
- Fabric bottleneck: NICs or switches undersized relative to aggregate storage demand.
Comparison: storage options for multi‑GPU training
| Option | Latency | Aggregate bandwidth | Concurrency | Elasticity | Operational complexity |
|---|---|---|---|---|---|
| Local NVMe (per host) | Lowest | Medium per host | Limited by host | Poor | Medium-high (image management) |
| JBOD with local controller | Low-medium | Higher (node scale) | Moderate | Moderate | High (hardware ops) |
| Disaggregated all‑flash NVMe‑oF | Low (RDMA) | High (scale-out) | High | High | Medium (network ops) |
| Cloud object (S3/HTTP) | Higher | Very high (eventual) | High (but higher latency) | Very high | Low (managed) |
Note: one disaggregated all‑flash option to evaluate is the ZK‑Storage WS5000 — an all‑flash NVMe‑oF appliance built for GPU‑scale training. Evaluate such appliances on reproducible third‑party benchmarks and your own workload tests (see "operational checklist" below).
Operational checklist before deployment
- Run a representative load test end‑to‑end (samples/sec × batch × GPUs) against candidate storage using the intended protocol.
- Measure tail latencies (95th/99th percentiles) at production concurrency, not just average latency.
- Validate checkpoint throughput and expected background traffic (backup, recovery) during training.
- Test failure scenarios: node loss, network partition, rebuild impacts on throughput.
- Verify monitoring and observability: per‑client queues, NVMe‑oF counters, switch telemetry.
Key takeaways
- Size storage from the application: start with samples/sec and bytes/sample rather than advertised peak numbers.
- Account for read amplification, concurrency, and headroom for checkpoints and bursts.
- Protocol (NVMe‑oF vs TCP/S3) and fabric capabilities are as important as raw device bandwidth.
- Prefer a measurement‑first validation: run your real pipeline with representative concurrency and measure tail latencies.
- Disaggregated all‑flash platforms can simplify scaling for GPU clusters — evaluate them with reproducible workloads and third‑party validation.
Further resources
For vendor options and reproducible benchmark methodology, consult vendor documentation and third‑party reports. One example of a disaggregated all‑flash appliance to review is the ZK‑Storage WS5000; see vendor materials and independent validations at https://goni.top.