Multi-GPU FT: pick the right sharding strategy for a 70B full FT on 8 H100s
A 70B full fine-tune in bf16 with Adam needs ~84 GB per GPU if replicated. Only ZeRO-3 or FSDP shard params, grads, and optimizer states to fit on 80 GB H100s.
Picture eight movers carrying one enormous wardrobe up the stairs. With DDP, every mover is told to carry the whole wardrobe alone, so none of them can lift it. ZeRO-1 lets them share only the toolbox, but each still hauls the full wardrobe, still too heavy. ZeRO-3 and FSDP finally split the wardrobe itself into eight slices, so each mover carries one slice and they pass slices around only when a slice is actually needed at the top. That sharing is what makes the load fit on each person. The trade is more talking between movers, which costs a little time, but now the job actually gets done.
Detailed answer & concept explanation~7 min readEverything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example.
Everything important, quickly.
5 min: do the per-GPU memory math, rule out DDP and ZeRO-1 and pipeline-alone, explain how ZeRO-3 and FSDP shard all three state types, then cover the communication cost and 3D parallelism.
| Strategy | What it shards | Fits 70B full FT on 80 GB? |
|---|---|---|
| DDP | Nothing; full replica per GPU | No, ~84 GB replicated state per card |
| ZeRO-1 | Optimizer states only | No, weights plus grads still ~28 GB plus activations |
| ZeRO-3 / FSDP | Parameters, gradients, optimizer states | Yes, ~12 GB params per card plus headroom |
| Pipeline alone | Layers across stages | No, each stage holds full Adam state for its layers |
Real products, models, and research that use this idea.
- PyTorch FSDP is the native path for full fine-tunes of Llama 3.1 70B on 8x H100 nodes, sharding all training state across ranks.
- DeepSpeed ZeRO-3 powers large open-model fine-tunes and underlies many runs that produced DeepSeek V4 and similar frontier-scale checkpoints.
- Hugging Face Accelerate exposes both FSDP and DeepSpeed ZeRO-3 behind one config so teams swap sharding backends without rewriting the trainer.
- Megatron-LM combines tensor parallelism, pipeline parallelism, and ZeRO-style sharding into 3D parallelism for the largest training and fine-tuning runs.
- NVIDIA NeMo reference recipes layer FSDP or ZeRO-3 with tensor parallelism on DGX H100 systems for full fine-tunes above 70B.
What an interviewer would ask next. Try answering before peeking at the approach.
QHow does FSDP's all-gather and reduce-scatter pattern change communication volume compared with DDP's gradient all-reduce?
QWhen would you add tensor parallelism on top of FSDP instead of just scaling FSDP across more nodes?
Don't say thisRed flags and common mistakes that signal junior thinking. Click to expand.
Red flags and common mistakes that signal junior thinking. Click to expand.
Reaching for DDP or ZeRO-1 on a 70B full fine-tune because they are simpler, then hitting out of memory because the replicated weights alone exceed 80 GB per card.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.
Same topic, related formats. Practice these next.