The Definitive Guide toAI Data Centers
Ask the GuideAboutAccount
Guide › Storage & Data › 9.1

Chapter 9.1

In this chapter · 5 sections
Term help
Terms in this chapter (47)

Storage in the AI Lifecycle: Why It Determines GPU Efficiency

Storage decides whether an accelerator computes or idles. Four I/O personalities compete for the same flash and fabric and can exhaust different resources, so a tier tuned for one can starve the others and leave GPUs idle.

ThreadsGoodputPower-boundDensity ramp

What you'll decide here

  1. Whether to size tiers by GB/s per GPU, capacity, or a tighter limit (request rate, metadata, latency, endurance). The wrong axis idles GPUs or flash.
  2. Which I/O personality dominates (ingestion, checkpointing, many small files, KV-cache). A tier tuned for one can starve the others when their demands overlap.
  3. Where each tier lives and which fabric carries it. Checkpoint writes on the training fabric collide with its collectives without enough capacity and traffic isolation.
  4. Which of throughput, IOPS, latency or metadata binds your dominant personality. They are not interchangeable, and the datasheet number is usually the wrong one.
  5. Whether your data can move at all. At petabyte scale, egress cost and data gravity may decide where you build before you spec a rack.

The accelerator is the most expensive depreciating asset in the building, and storage exists to keep it from sitting idle. Storage is a GPU-efficiency problem, not a capacity problem. When the data path cannot feed the accelerators fast enough they stall, and a stalled GPU burns depreciation and energized megawatts to produce nothing. What matters is goodput, the share of wall-clock time that advances the job rather than waiting on I/O or recovering from a failure, not how many petabytes you can store. → Chapter 14.1.

The rest of Part 9 rests on refusing the most common mistake in storage design: treating "AI storage" as one thing to procure. It is four I/O personalities that share the same flash and the same fabric while pulling in opposite directions: high-throughput sequential ingestion, bursty large-sequential checkpointing, metadata-heavy many-small-files access, and transfer-time-critical KV-cache offload for inference. Each wants something different (throughput, write bandwidth, metadata ops or prefix transfer time), and shared infrastructure has to meet their demands at the same time.

The economic argument, stated plainly

The unit economics are unforgiving. A debt-financed GPU cluster's break-even utilization comes from its realized GPU-hour price, its financing terms, and its fixed power and facility cost. A quoted market crossover is one scenario with one set of those inputs, and Chapter 1.8 derives the financing crossover itself. What matters in this chapter is the denominator. Break-even is measured in billable, productive GPU-hours, and a cluster can be fully booked and still be paid for time its accelerators spend waiting on I/O.

Storage is one of the few subsystems that can change how much paid accelerator time produces useful work without anyone touching a GPU. Underfeed the accelerators with a naive data path and a vision-training job waits on samples while its most expensive assets depreciate. Feed the same job with a sharded, sequential, prefetched pipeline and the prefetch runs ahead of the step instead of the accelerators waiting on it. Measure accepted training progress and batch wait, and keep recovery losses in the same window. Count the pipeline's cost against the gain: extra throughput helps pay the cluster's debt only when it produces useful steps, because device activity alone can hide retries, padding and replay.

Failure is the second lever. At scale, hardware fails constantly: Meta's Llama 3 405B run on up to 16,384 H100s logged 419 unexpected interruptions (of 466 total) over 54 days, a mean time to interrupt of roughly 186 minutes, and a synchronous training job must restart from its last checkpoint when any node drops. Storage makes that restart cheap or catastrophic. If checkpointing is slow, you checkpoint less often, lose more work per failure, and bleed goodput. If recovery reads are slow, every restart stalls the whole cluster. The subsystem therefore does two jobs at once: feeding the GPUs in steady state and insuring the run against the inevitable interruption. The two have completely different I/O signatures, and that split seeds the four-personality framing.

The four I/O personalities

"AI storage" cannot be procured as one system, because the AI lifecycle generates four workloads whose I/O profiles contradict one another. They share infrastructure (the same parallel filesystem, the same flash, often the same fabric), but tuning the shared substrate for one de-optimizes it for the others. Hold these four in mind as the lens for every chapter that follows.

1. Ingestion (training-data reads) is high-throughput, large-sequential, read-dominated and bandwidth-bound. The data loader streams shards of training examples to the GPUs every step, and all it wants is sustained read GB/s. It tolerates latency because you prefetch ahead of need, and it does not care about write performance. The failure mode is a CPU-side or storage-side bottleneck that cannot sustain the per-GPU read target, which directly caps GPU utilization. → Chapter 9.5.

2. Checkpointing (state writes) is bursty, large-sequential, write-dominated, and tolerant of latency but not of duration. Every checkpoint interval the whole cluster pauses (or, done right, overlaps a brief stall) to flush model weights plus optimizer state, about 14 bytes per parameter, to durable storage. It is the inverse of ingestion: it wants peak write bandwidth in short bursts that finish fast, so the GPUs get back to computing. NVIDIA's reference tiers write at about half their read rate (124 against 250 GB/s per B300 scalable unit at the Enhanced tier), but that ratio is a comparison point, not this job's write requirement. Checkpoints must drain inside their permitted window, so size writes from the unique state and that deadline. → Chapter 9.4.

3. Many-small-files / metadata (preprocessing, LOSF) is the personality that breaks naive systems. Datasets of millions of tiny files (individual images, JSON records, audio clips) turn a bandwidth problem into a metadata problem: opens, stats, lookups and directory operations that hammer the filesystem's metadata service rather than its data path. This is the classic Lots-Of-Small-Files (LOSF) problem. It is where a metadata service sized or placed for bandwidth workloads saturates first, and where spreading metadata across many servers (or removing the small files) earns its keep. Throughput benchmarks tell you nothing about this personality; metadata ops/sec is the relevant number. → Chapter 9.2.

4. KV-cache offload (inference) is the newest personality, and it does not fit the training-only mental model. Long-context, reasoning and agentic inference generate enormous key-value caches that must be retained, retrieved and reused across requests. What binds is how fast a reused prefix gets back into HBM, because it has to arrive before the time-to-first-token budget runs out. A 128k-token Llama-3.1-70B prefix (GQA, BF16) holds about 43 GB of KV, so moving it is limited chiefly by bandwidth and transfer size, and tail latency adds to that. Reuse only pays when loading the cache is faster than recomputing the prefill. KV-cache offload to NVMe or Ethernet-attached flash is a memory-hierarchy problem, and it is why inference is now a first-class storage workload rather than an afterthought. → Chapter 9.7.

The four I/O personalities → what each one actually demands
PersonalityI/O patternBinding metricLatency sensitivityWhere it livesFailure mode if mis-sized
Ingestion (data reads)Large-sequential, read-heavy, sustainedRead GB/s (per-GPU)Low — prefetched ahead of needParallel FS + local NVMe cache; object capacity behindAccelerators stall when delivered samples fall below consumption
Checkpointing (state writes)Bursty large-sequential, write-heavyWrite GB/s (peak burst, fast drain)Low per-op, but burst must finish fastLocal NVMe fast tier → async drain to durable FSLong stalls per interval; you checkpoint less, lose more work per failure
Many-small-files / metadataRandom small reads, open/stat-heavyNamespace operations/s; data IOPS separatelyModerate — per-file latency compoundsDistributed-metadata parallel FS; sharded formatsMetadata service saturates; throughput collapses regardless of flash speed
KV-cache offload (inference)Chunked prefix/block reads and writes, reuse-drivenFull-path prefix/block transfer timeExtreme — sits in the request critical pathHBM → DRAM → NVMe → Ethernet-flash hierarchyTime-to-first-token blows the SLO; fewer concurrent users per GPU
The shared-infrastructure paradox: these four run on the same flash and fabric but optimize for different primitives. The 'binding metric' column is the number you must benchmark, because the others mislead.

These personalities are not a menu. Most facilities run several at once on shared hardware, so the work is placement and tiering: route each personality to the tier that fits its binding metric, and isolate the ones that would otherwise collide. The most consequential collision in the building is checkpoint-write incast hitting ingestion reads and, worse, the training collectives if checkpoints land on the back-end fabric. The fix is a local-NVMe fast tier that absorbs the checkpoint burst and drains it asynchronously, for cases where direct durable writes cannot fit the save budget. A fabric separate from the one carrying all-reduce buys isolation. Converging them saves ports only if reads, drains and collectives still hit their throughput and latency targets together. A checkpoint staged on local NVMe survives only the failures that leave its node intact, so placement becomes a co-design problem across storage and network. → fabric isolation in Chapter 8.5; checkpoint mechanics in Chapter 9.4.

Deep dive: why the same 14 bytes/parameter is both a tiny number and a tyrant

Checkpoint capacity starts with the unique state actually serialized. The weights, master copy and optimizer recipe are derived once in Chapter 9.4. Writer count partitions that state rather than multiplying it, and a replicated data-parallel copy is not another unique model. The distinction matters because staging, durable protection and retained generations each add their own bytes, while the drain deadline sets the service rate. A large array can hold many generations and still miss the window in which one becomes recoverable.

The tyranny is not the size. It is the cadence under this job's measured interruption process. Meta's figure, a mean of roughly 186 minutes between unexpected interruptions, comes from one whole job, observed during a 54-day stretch of Llama 3 405B pre-training. It is not a per-GPU hazard and must not be scaled to a 100,000-GPU forecast. Choose checkpoint cadence from your project's measured whole-job interruption distribution, checkpoint cost, durable-commit time and acceptable recompute loss. The resulting write and recovery windows, not a scaling by accelerator count, size the storage tier. The Young first-order and Daly higher-order interval models live in Chapter 9.4.

Where storage lives: the tier hierarchy

Storage in an AI facility is a hierarchy, not a single pool, and each tier exists because the one above it is too expensive or too small to hold everything. The decision at each boundary has the same shape: how much cost-per-terabyte do you pay to gain bandwidth and drop latency? From fastest to cheapest:

  • Node-local NVMe scratch is the fastest tier and the only one that needs no network, because it sits inside the GPU server. It is the natural home for the checkpoint fast tier (absorb the burst locally, drain asynchronously) and for hot data-loader caching. It is scratch: not durable, not shared, wiped on reschedule. PCIe 5.0 remains an option for drives and backplanes, and Micron announced mass production in February 2026 of its 9650, a PCIe Gen6 enterprise SSD, with E1.S and E3.S form factors. Test the drive, backplane, firmware and cooling together before counting on Gen6 bandwidth at the node. → Chapter 9.3.
  • Shared inference-context tier: Ethernet-attached flash where a pod shares KV-cache for reuse. NVIDIA calls it G3.5 and describes its CMX platform on BlueField-4 STX as the first rack-scale implementation. In March 2026 NVIDIA said partners would offer STX-based platforms in the second half of 2026; as of mid-October 2026 none had announced general availability. Size it by prefix transfer time, not capacity. → Chapter 9.7.
  • Networked parallel or distributed filesystem (the primary hot tier) is the all-flash, NVMe-native, RDMA-attached shared namespace that feeds the whole cluster: WEKA, VAST, DDN EXAScaler/Lustre, IBM Storage Scale/GPFS. Ingestion reads and durable checkpoints land here, and the throughput-versus-metadata tradeoff is fought here. → Chapter 9.2.
  • Object capacity tier (the data lake) is S3-compatible and increasingly QLC-flash-backed rather than HDD. It holds the full corpus, dataset versions and cold checkpoints, costs less per TB at lower bandwidth, and is the backbone for model distribution and the inference cold tier. → Chapter 9.6.
  • Archive is the cheapest, coldest tier, for retention, lineage and compliance copies. Retrieval latency runs from minutes to hours, and nobody minds because nothing in the training loop touches it.

The distinction that matters more than the tier names is scratch vs durable vs archive. Scratch (local NVMe, ephemeral) is fast and cheap per IOP but loses data on failure: right for caches and checkpoint staging, fatal for anything you cannot reconstruct. Durable storage (the parallel FS, replicated or erasure-coded) survives failures and holds your insurance copies. Archive is durable, cheap and slow. Misclassify data across these, for example by treating the local-NVMe checkpoint stage as durable and skipping the async drain, and a node failure takes your checkpoint with it, which defeats the point of checkpointing.

The tier hierarchy and the four I/O personalities that share it. Each personality stresses a different metric (GB/s, IOPS, prefix transfer time, metadata ops), and checkpoint incast can collide with training collectives. Placement (a local NVMe fast tier and a separate fabric) buys burst absorption and isolation when mixed-load tests pass. Local staging becomes durable only after the protected commit.
~4 GB/s/GPUguidance
NVIDIA's stated read rate for vision-model training on datasets above ~30 TB; B300 shared tiers in both RAs: ~0.14–0.49 GB/s/GPU
Scope & caveats

Published reference-architecture guidance, not a measured requirement. The 4 GB/s per GPU computer-vision line appears in NVIDIA's H200, B300 and Vera Rubin reference architectures. Keep shared-tier and single-client figures on separate axes: NVIDIA's per-scalable-unit (shared-tier) read tiers work out to ~0.06–0.49 GB/s per GPU (H200 Good to B300 and Vera Rubin Enhanced), while its single-client H200 guidance runs 0.5–5 GB/s per GPU. NVIDIA says the tiers assume a mix of workloads. Derive the target from the loader's measured consumption rate and use these as comparison cases.

250 / 124 GB/s
B300 Enhanced read/write per scalable unit (Standard 80/40); per GPU ~0.43 GB/s (576-GPU XDR RA) or ~0.49 (512-GPU Ethernet RA)
Scope & caveats

NVIDIA publishes two DGX B300 SuperPOD reference architectures with the same per-unit storage table but different scalable units: 64 DGX B300 systems and 512 GPUs in the Spectrum-X Ethernet, DC-busbar RA, and 72 systems and 576 GPUs in the XDR InfiniBand RA (Architecture page, Table 3). Match the unit to the RA you are buying against. The Enhanced tier is 250 / 124 GB/s per unit and 2,000 / 992 GB/s at eight units; the Standard tier is 80 / 40 and 640 / 320. NVIDIA says the tiers assume a mix of workloads and that requirements must be characterized per workload, so they are reference tiers, not a per-GPU floor.

~14 bytes/paramderived
assumed BF16 weights + FP32 master + two FP32 Adam moments; unique serialized state, before implementation metadata or replication
Scope & caveats

An arithmetic recipe for the standard BF16-compute / FP32-master / Adam mixed-precision configuration, not a measured population value. VAST Data assumed 14 bytes/param to infer model sizes from checkpoint sizes (its own footnote puts the resulting uncertainty at about ±15%); the survey did not establish the recipe. 8-bit Adam moments give 8 bytes/param; optimizers that drop the second moment change it again. PyTorch FSDP2 mixed precision with FP32 parameters stores no separate BF16 copy and comes to about 12 bytes/param. Verify the tensors the chosen framework actually serializes.

1 every ~3 hr (419 in 54 days)
Mean gap between unexpected interruptions in Meta's Llama 3 405B pre-training on up to 16,384 H100s
Scope & caveats

Whole-job interruptions for one run under Meta's event definition; not a per-GPU MTBF, an equipment AFR, facility availability or a scaling law for another fleet size.

Table 5 prints 30.1% beside its 148 faulty-GPU events, but 148 of 419 is 35.3% (the 72 HBM3 events are 17.2%), so the paper's 58.7% GPU share, the sum of the printed percentages, understates the counted 64% (268 of 419). Use the counts and state your denominator.

~100%
AWS S3 test: sequential tar shards kept the GPU near 100%; with few loader workers, random per-object reads starved it
Scope & caveats

One AWS micro-benchmark on its own S3 clients, not a general result. AWS recommends shards of about 100 MB-1 GB; its benchmark tested 4-256 MB.

How the personalities cascade into the build

Just as the workload archetype cascades into the whole facility in Chapter 1.1, the dominant I/O personality cascades into the storage build, and the cascade is causal. The personality sets the binding metric; the binding metric sets the media and filesystem; those set the fabric and placement; and that sets the cost structure and the failure blast radius.

Ingestion-dominant (large LLM/vision pre-training) demands sustained read bandwidth: an all-flash parallel FS sized to the per-GPU read target, fronted by local-NVMe caching, with object capacity behind it. The fabric carries large-sequential reads that prefetch ahead of need, so latency is forgiving but bandwidth is everything.

Checkpoint-dominant (frontier-scale synchronous training) turns on write bandwidth and fast drains: a local-NVMe fast tier to absorb the burst, async/tiered checkpointing to overlap it with compute, and isolation of checkpoint incast from the training collectives, so the insurance system does not sabotage the thing it insures.

Many-small-files-dominant (multimodal preprocessing, classic vision datasets) calls for distributed metadata and sharded data formats. The fix is often upstream of storage entirely: repackage millions of tiny files into a few large shards (WebDataset, TFRecord, Parquet, MDS), so the metadata problem evaporates and the workload becomes a clean sequential-read personality again. AWS recommends shards of roughly 100 MB to 1 GB when loading from S3. In its own S3 loading test, sequential tar shards kept the GPU near 100% busy, while random per-object reads starved it until the loader ran more than 16 workers. This is the cheapest big win in the data path. → Chapter 9.5.

KV-cache-dominant (long-context / agentic inference) needs a new memory hierarchy entirely (HBM, DRAM, NVMe and Ethernet-attached flash), tuned for how fast prefixes load and how often they are reused, not for bulk capacity. This personality barely existed in the training-only mental model and now reshapes inference fleet economics. → Chapter 9.7.

Deep dive: the CPU-bypass shift and why storage is leaving the CPU's hands

For decades the data path ran through the CPU: data moved from storage into host DRAM, the CPU copied and staged it, then it crossed into GPU memory. At AI scale that path is a bottleneck. The CPU serializes traffic it was never sized to carry, and the bounce through host DRAM wastes bandwidth and adds latency. The 2024–2026 shift is to take the CPU out of the data path.

GPUDirect Storage (GDS) sets up a direct DMA path from NVMe (local or NVMe-oF) into GPU memory, bypassing the host-DRAM bounce. Published results depend on the exact drive, link, PCIe generation, filesystem, request size and concurrency, so benchmark payload throughput and GPU stall time end to end on your own topology. The next step is GPU-initiated I/O. With NVIDIA's SCADA, the GPU issues and steers each storage request itself. A privileged component on the host still sets up access. As of October 2026 SCADA is a framework with vendor demonstrations, not a generally available product. NVIDIA is open-sourcing cuFile too, the API behind GPUDirect Storage (Aug 2026). DPU-offloaded storage (BlueField-4 STX/CMX at 800 Gb/s) moves storage, networking and security off the host onto a dedicated processor. WEKA, VAST and DDN are among the partners building STX platforms for H2 2026.

For the designer, the storage data path and the network fabric are converging into one co-designed system, and the CPU:GPU ratio assumptions inherited from the host-centric era are being renegotiated. SCADA status, drive requirements and the rest of the mechanics are in Chapter 9.3; the fabric placement decision is in Chapter 8.5.

Data gravity: the decision that may already be made

The last decision in this chapter can outrank all the others before the storage tier is even specced: whether your data is movable on the program's budget and schedule. At petabyte scale it usually is not, for economic rather than physical reasons. Cloud egress runs ~$0.087–0.11/GB at the 2026 first-tier list price (negotiated rates lower), tapering toward ~$0.05/GB at the deepest volume tiers. Moving a ~220 TB image download of LAION-5B costs ~$14,800 at AWS's published tiers, every time. At the ~$0.05/GB deep-volume rate, one complete read of a 5% slice of a 50 PB corpus moves 2.5 PB and costs about $125,000. Annual cost is that per-read figure multiplied by the number of reads, after caching, retries and selective replication, plus destination storage, requests and verification time. That bill, plus sovereign and data-residency rules, means the dataset frequently cannot be relocated to wherever the cheapest GPUs are. The dataset has gravity: it pulls compute toward itself. The tariffs and the per-petabyte arithmetic live in Chapter 9.8.

This inverts the naive build logic. Instead of "site the cluster on cheap power, then move the data to it," data gravity forces move-compute-to-data. Storage placement becomes a primary data-center siting input rather than an afterthought, and it can constrain the power-first siting hierarchy of Chapter 1.1 before the interconnection queue is ever consulted. The fork is to replicate the dataset to multiple sites and eat the storage cost, or to anchor compute at the data and eat the power-and-siting cost. It is one of the highest-leverage strategic decisions in the whole build, and Chapter 9.8 treats it in full, with the multi-site and egress economics.

Start from the workload list in Chapter 1.7 (feed rate, metadata load, recoverable state, KV transfer time, bytes retained) and pick the fewest tiers that cover it. One shared system is enough when it carries all of those peaks at once and can still restore a checkpoint after losing a node or a drive. Split the tiers when checkpoint incast slows ingestion reads or the training collectives, or when a restore would overrun its recovery window. Buy by petabytes alone and the accelerators starve; give every light workload its own tier and you pay for ports, power and support that buy no measurable gain.

Each thread of this chapter has its own full treatment. The parallel and distributed filesystems that serve the hot tier are in Chapter 9.2. The NVMe media hierarchy and the CPU-bypass data path (GPUDirect Storage, SCADA, BlueField DPUs) are in Chapter 9.3. The checkpointing math and the Young/Daly optimal interval, the canonical home for that derivation, are in Chapter 9.4. The data-loader and preprocessing path is in Chapter 9.5, the object/capacity tier in Chapter 9.6, the inference KV-cache memory hierarchy in Chapter 9.7, and sizing, data gravity and resilience in Chapter 9.8. The data-prep supercomputer that manufactures the tokens is Chapter 9.9. The goodput framing that makes storage a GPU-efficiency problem is developed in Chapter 12.2. The workload archetype that sets the dominant personality is the subject of Chapter 1.1 and Chapter 1.3. The fabric isolation that keeps checkpoint incast off the training collectives is engineered in Chapter 8.5, and the 2026 storage roadmap is in Chapter 16.2.
Cite this chapter
Fehn, J. (2026). Storage in the AI Lifecycle: Why It Determines GPU Efficiency (Chapter 9.1). The Definitive Guide to AI Data Centers. https://aidatacenterguide.com/part-9-storage-and-data/9-1-storage-in-the-ai-lifecycle-why-it-determines-gpu-efficiency (accessed 2026-10-25).
@misc{aidc-9-1,
  author       = {Fehn, Jacob},
  title        = {Storage in the AI Lifecycle: Why It Determines GPU Efficiency (Chapter 9.1)},
  howpublished = {The Definitive Guide to AI Data Centers},
  year         = {2026},
  url          = {https://aidatacenterguide.com/part-9-storage-and-data/9-1-storage-in-the-ai-lifecycle-why-it-determines-gpu-efficiency},
  note         = {Accessed 2026-10-25}
}
Spotted an error? Suggest an edit