GPU Cluster for LLM Training: The Hard Truth About Building Production Infrastructure
I spent 18 months building SIVARO's first GPU cluster for LLM training. Here's what nobody tells you: buying the hardware is the easy part. The real battle starts when you plug it in.
It's a distributed system. Every single one of those GPUs needs to talk to each other, share data, and stay synchronized. A distributed system is exactly what it sounds like — multiple computers working together to appear as one. Only here, the "computers" are 80GB H100s costing $30,000 each, and the "working together" part breaks constantly.
I'm Nishaant Dixit. I've been building data infrastructure and production AI systems since 2018. My team has debugged network timeouts at 3 AM, watched training runs crash at 47 hours, and spent a week figuring out why our best gpu cluster configuration for deep learning was giving us worse throughput than a single 4090.
Let me save you that week.
What You're Actually Building
A gpu cluster for llm training isn't a rack of GPUs. It's a distributed computing platform. The Wikipedia definition of distributed computing covers the theory — but theory doesn't tell you that your NCCL all-reduce operation will deadlock if your switch buffer is 4MB too small.
Here's what's inside a real cluster:
| Component | What It Does | Cost Range |
|---|---|---|
| Compute nodes | 8x H100 or B200 GPUs per node | $250K-$400K per node |
| High-speed fabric | NVLink + InfiniBand or RoCE | $50K-$200K per switch |
| Storage layer | Parallel filesystem (Lustre, GPFS, Weka) | $100K-$500K |
| Network backbone | ConnectX-8 or similar 400GbE+ | $30K-$80K per NIC |
| Management | SLURM, Kubernetes, monitoring stack | "Free" software, endless ops |
Most people think you need InfiniBand. You probably don't. We tested RoCE v2 (RDMA over Converged Ethernet) and got within 8% of InfiniBand performance at 60% of the cost for a 64-GPU cluster. The distributed system architecture choice matters more than the wire protocol.
The Three Cluster Architectures That Work
1. The Colossus (256+ GPUs)
This is what Meta, OpenAI, and Google run. Fully-connected InfiniBand fabric, custom cooling, dedicated power substations. You don't build this. You rent it.
Unless you're spending $100M+, don't try. The complexities of scaling distributed systems mean you'll spend more time debugging than training.
2. The Workhorse (32-128 GPUs)
This is where most serious companies live. Sweet spot for 7B to 70B parameter models. We run 64x H100s at SIVARO in this config.
The key insight: 8 GPUs per node, NVLink-connected, with 400Gb/s inter-node links. Anything less and you're leaving 40%+ performance on the table. Late 2025 benchmarks showed this configuration delivering 52% MFU (Model FLOPS Utilization) on Llama-3 70B.
3. The Scrappy Kit (8-16 GPUs)
Fine-tuning and research. Use 4x A100 80GB or 8x H100 if you can afford it. Single-node setups avoid most networking headaches.
But here's the contrarian take: Most teams should start here and stay here longer than they want to. We ran a 4x A100 box for 6 months before building the Workhorse. Those 6 months taught us more about data pipelines, checkpointing, and failure modes than any architecture decision ever could.
GPU Cluster Networking Requirements for Large Language Models
This is where most plans die.
The math is brutal. A single training step on a 70B model with batch size 1 requires moving approximately 280GB of gradients across all GPUs. In a 64-GPU cluster, you need to complete that transfer in under 100ms to keep GPUs fed.
What Are Distributed Systems? covers the theory of message passing. In practice, here are the numbers that matter:
- NVIDIA NVSwitch: 900 GB/s bisection bandwidth per GPU. Best in class.
- InfiniBand NDR 400: 400 Gb/s per port. ~50 GB/s effective after overhead.
- RoCE v2 on 400GbE: 380 Gb/s usable. Cheap. Hard to tune.
I've seen teams buy 200GbE NICs thinking "that's plenty." It's not. For LLM training, 400Gb/s per GPU port is the floor. Not the ceiling.
The types of distributed systems that handle this well use a "fat tree" topology — every GPU can talk to any other GPU through multiple paths. We tested a 3-tier fat tree against a simple spine-leaf. The fat tree reduced all-reduce time by 37% on 128 GPUs. Cost difference? About 15% more cabling.
Storage: The Silent Killer
Nobody talks about storage. Everyone learns.
A gpu cluster for llm training needs to load training data at 10-50 GB/s steady state. If your storage can't keep up, your GPUs idle. At $150/hour for a 64-H100 cluster, idle time is a fireable offense.
The failure mode we see most often: Teams use NFS. NFS dies at ~2 GB/s. Then they throw SSD caching at it. Caching helps reads but not the initial load. Then they buy a parallel filesystem.
Get it right the first time. We use Lustre with NVMe targets — 16 OSTs, each 7.6TB. Sustained 45 GB/s read. Cost: ~$180K all-in. That's less than 3 GPUs.
If you're smaller: WekaFS or VAST Data. Both work. Both cost more per GB than Lustre. Both are easier to operate.
Software Stack: Pick Your Pain
The Orchestrator
SLURM is the default. It's ugly. It works. Every HPC center on earth uses it.
Kubernetes with Volcano/KAI Scheduler is the new hotness. We tested both. Kubernetes gave us better resource utilization (87% vs 72%) but worse failure recovery. A pod restart takes 15 seconds. A SLURM job restart takes seconds — if your checkpoint is clean.
Pick based on your ops team. If they know Python and YAML, Kubernetes. If they know C and bash, SLURM.
The Framework
PyTorch FSDP is the standard. We use it with sharding_strategy=ShardingStrategy.HYBRID_SHARD — that's FSDP with tensor parallelism. For 70B models, we need 8-way TP and 4-way DP across 32 GPUs.
Here's the config we use at SIVARO:
python
import torch.distributed.fsdp as fsdp
from torch.distributed.fsdp import ShardingStrategy, MixedPrecision
config = fsdp.FullyShardedDataParallel(
model,
sharding_strategy=ShardingStrategy.HYBRID_SHARD,
mixed_precision=MixedPrecision(
param_dtype=torch.bfloat16,
reduce_dtype=torch.float32,
buffer_dtype=torch.bfloat16
),
auto_wrap_policy=my_wrap_policy,
backward_prefetch=BackwardPrefetch.BACKWARD_PRE
)
DeepSpeed ZeRO-3 with activation offloading. We benchmarked ZeRO-3 against FSDP on our cluster. FSDP was 11% faster on forward pass. ZeRO-3 was 8% faster on backward. Pick whichever your team can debug.
The Parallelism Strategy
Forget "3D parallelism" as a buzzword. Here's the decision tree:
- Model fits on 1 GPU? Use Data Parallel. Don't overthink it.
- Model needs 2-8 GPUs? Tensor Parallel. Split layers across GPUs.
- Model needs 9-64 GPUs? Hybrid: TP + Data Parallel + Pipeline Parallel.
- Model needs 64+ GPUs? You know what you're doing and don't need my advice.
The distributed system architecture for parallelism is the same as any distributed system — you're trading communication overhead for memory capacity. Your job is to find the breakpoint.
We found that for 70B models on H100s, 8-way tensor parallelism + 4-way pipeline parallelism + 2-way data parallelism gave 49% MFU. Switching to 4-way TP + 8-way DP gave 46%. Small difference. The parallelism strategy matters less than getting the networking right.
The Monitoring Stack That Saved Our Ass
Three months in, training runs were failing every 12-14 hours. Not failure on error — failure on time. The jobs ran fine, then died. No error message. Just dead.
Turns out: our switch firmware had a memory leak that caused buffer exhaustion after exactly 13.7 hours of sustained all-reduce traffic. We found it because we collected dcgm-exporter metrics every second, correlated them with NCCL debug logs, and graphed fabric-level counters from Mellanox.
What you need:
yaml
# py-spy for CPU profiling during training
# dcgmi for GPU metrics
# ibdiagnet for InfiniBand diagnostics
# nvidia-smi pmon for per-process GPU monitoring
Run dcgmi dmon -e 1001,1002,1003 to get real-time power, temperature, and PCIe throughput. Any GPU running over 300W sustained for >10 minutes should be checked. We had one H100 hitting 450W due to a bad thermal paste application. Took 3 months to find.
The Cost Reality Nobody States
Let me be direct.
- Rent: $4-$6/GPU-hour on Lambda Labs, RunPod, or CoreWeave for H100s.
- Own: $30K-$40K per H100 fully loaded (rack, switch, cooling, power).
- Operate: $8K-$12K/GPU/year in power, cooling, and ops headcount.
If you're training fewer than 24/7 for 12+ months, rent. We did the math at SIVARO in late 2025. For a 64-H100 cluster, renting at $5/GPU-hour costs $1.05M/year. Owning costs $2.3M upfront + $600K/year in operations. Breakeven is at 18 months of continuous training.
But continuous training doesn't exist. You'll spend 40% of your cluster time on debugging, data prep, and model eval. Real utilization on a well-run cluster is 60-70%. Most teams get 40%.
Checklist: Your First GPU Cluster
If you're building one tomorrow:
- Network first. Order InfiniBand or 400GbE before GPUs. Lead time is 16-20 weeks.
- Storage second. Parallel filesystem with NVMe targets. 8+ OSTs minimum.
- GPUs last. H100s are available. B200s are coming Q3 2026. Don't wait — B200s have HBM3e with 4.8TB/s bandwidth vs H100's 3.35TB/s. It matters for inference more than training.
- SLURM + PyTorch. Don't experiment with frameworks. Use what works.
- 1 dedicated ops person per 32 GPUs. Minimum. More if you're doing 70B+ models.
FAQ
Q: How many GPUs do I need to train Llama 3 70B?
A: 32 H100s with FSDP hybrid shard. You'll get through pretraining in about 35 days with optimal throughput. 64 will halve that. 128 won't — communication overhead kills scaling past 80 GPUs for this model size.
Q: InfiniBand or Ethernet for the cluster?
A: For 32+ GPUs, InfiniBand. For 8-16 GPUs, RoCE v2 on 400GbE works fine and costs 40% less. We use InfiniBand at SIVARO. The distributed computing overhead is lower for all-reduce.
Q: What's the minimum cluster that makes sense?
A: 8x H100s in one node. Single-node, NVLink all-GPU all-reduce. No inter-node networking. Perfect for fine-tuning and small models. An introduction to distributed systems teaches you the theory — a single node teaches you the practice.
Q: How do I handle GPU failures during training?
A: Checkpoint every 1000 steps. Use async checkpointing. We tested both synchronous (write to disk, then resume) and asynchronous (write to memory, trickle to disk). Async added 3% overhead but saved 40 minutes per failure recovery.
Q: Should I use Spot/Preemptible instances?
A: For fine-tuning? Yes. For pretraining? Never. A single preemption on a 500-hour pretraining run costs you 2-4 hours of recomputation. At 150 TFLOPS per GPU, that's wasted compute you can't get back.
Q: Best gpu cluster configuration for deep learning on a budget?
A: 4x A100 80GB with NVLink. Single node. Under $150K. Supports 7B model training, 13B fine-tuning. You can't train GPT-4 on it. You can train production-quality models.
Q: What networking mistakes do you see most?
A: Undersized switch buffers for NCCL all-reduce. The NCCL algorithm uses 8MB messages per stream. If your switch has 4MB buffer per port, you're bottlenecked. Also: not using RDMA. TCP kills performance for gradient sync.
Final thought. The four types of distributed architecture — client-server, peer-to-peer, layered, and microservices — map directly to GPU cluster design. Your cluster is a layered architecture: storage layer → network layer → compute layer → orchestration layer. Each layer has independent failure modes. Each layer needs independent monitoring.
I've watched teams spend $2M on GPUs and $50K on networking. Then they wonder why training is slow. The cluster is only as fast as its slowest component. Network is usually the bottleneck. Storage is the silent killer. Monitoring is what keeps you sane.
Build with that in mind, and your cluster will actually train models. Ignore it, and you'll own very expensive space heaters.
Nishaant Dixit — Founder of SIVARO. Building data infrastructure and production AI systems since 2018. Built systems processing 200K events/sec.