Why Storage Infrastructure Is the Hidden Bottleneck in LLM Training
Norway's national AI infrastructure push — anchoring 2 petabytes of high-throughput flash storage to feed large language model training workloads — is the kind of story that gets buried under GPU headlines. That is a mistake. Storage architecture is quietly one of the most consequential engineering decisions in any serious ML pipeline, and most teams only discover that after wasting weeks of expensive compute time.
The GPU Illusion
When organizations plan an LLM training project, the conversation almost always starts and ends with GPUs. How many A100s? Can we get H100s? What is the cloud budget for compute?
This framing is understandable but dangerously incomplete. A GPU cluster sitting idle — waiting on data — is burning money at full rate while doing zero useful work. This phenomenon has a name: I/O starvation. It happens when your storage subsystem cannot saturate the memory bandwidth your accelerators demand.
Modern LLM training involves shuffling billions of tokens through a model in tightly sequenced batches. The throughput requirement is not merely high — it is sustained. A single training run can last days or weeks. Any storage bottleneck compounds across every step.
Why Flash Storage Changes the Equation
Traditional spinning disk (HDD) arrays, even in RAID configurations, simply cannot keep pace with high-throughput ML workloads. The random-access latency alone — measured in milliseconds for HDDs versus microseconds for NVMe flash — makes them unsuitable as primary training data stores.
Flash storage, particularly enterprise NVMe arrays deployed at scale, offers:
- Sustained sequential read throughput in the hundreds of GB/s range across parallel drives
- Low queue-depth latency, critical when data loaders are pulling randomized mini-batches
- Predictable performance under load, unlike spinning media which degrades as the read head moves
- Lower cooling and power overhead per TB compared to equivalent HDD arrays
At petabyte scale, these properties are not luxuries — they are prerequisites. Norway's 2 PB deployment signals that national-level AI initiatives are treating storage as a first-class infrastructure concern, not an afterthought provisioned from leftover budget.
What a Poorly Designed Data Pipeline Actually Looks Like
Here is a simplified example of a naive PyTorch data loader that will silently starve your GPUs:
# Anti-pattern: single-threaded, synchronous loading from cold storage
dataset = LargeTokenDataset("/mnt/nfs/training_corpus")
loader = DataLoader(dataset, batch_size=64, num_workers=0, shuffle=True)
for batch in loader:
loss = model(batch)
loss.backward()
num_workers=0 means the main process handles all I/O serially. While the CPU is reading the next batch from disk, the GPU is waiting. On a large corpus backed by slow storage, this can reduce effective GPU utilization below 40%.
The fix involves prefetching, multiple worker processes, pinned memory, and ideally a storage backend with high parallel IOPS — exactly what enterprise flash arrays are designed to provide.
Architectural Lessons for ML Teams
Whether you are running training on-premises or in the cloud, the storage decisions you make early will define your iteration speed throughout the project. A few principles that hold across environments:
1. Separate hot and cold data tiers. Raw, uncleaned datasets belong on cheap object storage (S3, GCS, or local HDDs). Preprocessed, tokenized training corpora that will be accessed repeatedly during training belong on fast NVMe or high-IOPS block storage. Do not conflate the two.
2. Profile before you optimize compute. Before requesting more GPU quota or upgrading instance types, instrument your data pipeline. Tools like PyTorch's built-in profiler or Nvidia's Nsight Systems will show you exactly how much time is spent on data loading versus actual forward/backward passes.
3. Co-locate storage and compute where possible. Network latency between a compute cluster and a remote storage array adds up across millions of I/O operations. In cloud environments, use storage services within the same availability zone as your training instances.
4. Plan for checkpoint I/O, not just training I/O. Checkpointing a 70B parameter model can involve writing hundreds of gigabytes to disk in a short window. If your storage system cannot absorb that write burst without stalling training, your fault-tolerance strategy becomes a performance liability.
Implications for SaaS Founders Building AI Features
You probably are not training a national-scale LLM. But the underlying principles apply even at modest scale. If you are fine-tuning a domain-specific model, running continuous retraining pipelines, or managing embedding generation for a retrieval-augmented system, your data infrastructure choices directly impact:
- How quickly you can experiment with new architectures or datasets
- The cost per training run (idle compute is paid compute)
- Your ability to recover from failed runs without losing hours of progress
The gap between teams that treat storage as infrastructure and teams that treat it as an afterthought is visible in their iteration velocity. Faster iteration means better models reaching production sooner.
The Broader Signal
National AI programs investing at petabyte scale in flash infrastructure are making a clear statement: the era of treating data storage as commodity plumbing is over. The organizations — whether governments, enterprises, or startups — that build their ML infrastructure with storage as a primary design concern will train faster, spend less on wasted compute, and ship more reliable models.
The GPU arms race gets the headlines. The storage layer wins the training runs.
Source: Blocks & Files — Norway's 2 petabytes of Huawei flash storage and LLM training, via Hacker News.
Why this matters for your project: If you are building or scaling an AI-powered product, storage architecture deserves a seat at the design table from day one. At Code!nk Technologies, we factor data pipeline performance into every ML engagement — because the fastest model is only as fast as the infrastructure feeding it.





