Skip to content

DeepSpeed ZeRO & LoRA Memory Calculator

Calculate exact GPU VRAM allocation across ZeRO stages 1 through 3, parameter scaling for LoRA and QLoRA fine-tuning, CPU offload overhead, and generate production ready deepspeed configuration files instantly.

Active Model Architecture

Llama 3.1 8B

8B params, 32 layers, 4096 hidden

Cluster Topology

4x A100 SXM (80 GB)

320 GB total cluster VRAM (NVLink 600 GB/s)

VRAM Per GPU

80.82 GB / 80 GB

Exceeds single-GPU capacity (OOM)

Effective Token Batch

131,072 tokens/step

Global batch: 32 sequences

1. Model Architecture & GPU Cluster

Select a foundation model preset or configure custom parameter scaling across your GPU nodes.

Total GPUs in Cluster

2. DeepSpeed ZeRO Stage & CPU Offload

Choose how optimizer states, gradients, and parameters are partitioned across data-parallel GPUs.

ZeRO-Offload (Host CPU RAM)
Training Precision

BF16 uses 2 bytes/param for weights & gradients with FP32 master Adam states (12 bytes/param).

3. Batch Size, Context Length & Activations

Activation memory scales with micro-batch size and quadratically with sequence length unless FlashAttention or checkpointing is used.

2
181632
4
1163264

4. LoRA / QLoRA Adapter Fine-Tuning

Freeze base model weights and restrict optimizer states and gradients to low-rank adapter matrices.

Full-parameter fine-tuning is currently active. Enable LoRA or 4-bit QLoRA above to eliminate up to 95% of optimizer state and gradient VRAM overhead.

Per-GPU Memory Breakdown

Allocation across NVIDIA A100 SXM (80 GB) (80 GB capacity)

OUT OF MEMORY
Total Per-GPU Footprint: 80.82 GBHardware Limit: 80 GB
Model Weights

16.00 GB

Gradients

4.00 GB

Optimizer States

24.00 GB

Activations

36.82 GB

Free Headroom

0.00 GB

Host CPU RAM

0.00 GB

Cluster Bottleneck Warnings & Optimization Checklist

Automated diagnostics for NCCL collectives, PCIe bandwidth, and VRAM fragmentation.

  • !Upgrade from ZeRO-2 to ZeRO-3 (or ZeRO-3) to shard more model state across all 4 GPUs.
  • !Enable LoRA or 4-bit QLoRA (NF4) to freeze the base model and restrict Adam optimizer states to low-rank adapter weights.
  • !Enable ZeRO-Offload for optimizer states to move FP32 Adam states from GPU VRAM to system RAM.
  • !Reduce micro-batch size from 2 to 1 and increase gradient accumulation steps to preserve global batch size.

Generated ds_config.json

Production-ready DeepSpeed configuration matching your exact cluster settings.

{
  "train_batch_size": 32,
  "train_micro_batch_size_per_gpu": 2,
  "gradient_accumulation_steps": 4,
  "gradient_clipping": 1,
  "steps_per_print": 10,
  "wall_clock_breakdown": false,
  "bf16": {
    "enabled": true
  },
  "zero_optimization": {
    "stage": 2,
    "allgather_partitions": true,
    "allgather_bucket_size": 200000000,
    "overlap_comm": true,
    "reduce_scatter": true,
    "reduce_bucket_size": 200000000,
    "contiguous_gradients": true
  },
  "activation_checkpointing": {
    "partition_activations": false,
    "cpu_checkpointing": false,
    "contiguous_memory_optimization": true,
    "number_checkpoints": null,
    "synchronize_checkpoint_boundary": false,
    "profile": false
  }
}
Automated Distributed Training Diagnostics

Still hitting CUDA OOMs, NCCL timeouts, or ZeRO-3 hangs in production?

Static memory calculators cannot see runtime allocator fragmentation, stray autograd graphs, or degraded NVLink lanes. Paste your PyTorch, DeepSpeed, or FSDP crash log into Denpex to pinpoint the exact root cause and fix in seconds.

DeepSpeed ZeRO & LoRA Architectural Reference

Model Weights (Psi)

Base model parameters stored in 16-bit precision (FP16 or BF16) requiring 2 bytes per parameter.

Memory = 2 * Psi / N_gpus (ZeRO-3)

Optimizer States

AdamW maintains 32-bit master weights, 32-bit first moments, and 32-bit second moments requiring 16 bytes per parameter.

Memory = 16 * Psi / N_gpus (ZeRO-1/2/3)

Gradients

Gradients computed during backward pass stored in 16-bit precision requiring 2 bytes per parameter.

Memory = 2 * Psi / N_gpus (ZeRO-2/3)

LoRA Rank Scaling

Low rank adaptation parameter count scaling based on rank r and target module projection dimensions d_in and d_out.

Param_lora = 2 * L * r * (d_in + d_out)

Interconnect Overhead and Communication Volume

  • ZeRO Stage 1: Partitioned optimizer states. Communication volume is equal to 1x optimizer state size communicated via ReduceScatter during gradient updates.
  • ZeRO Stage 2: Partitioned optimizer states and gradients. Communication volume adds AllGather for gradient synchronization before optimizer steps.
  • ZeRO Stage 3: Partitioned parameters, gradients, and optimizer states. Requires AllGather for every parameter tensor during forward and backward execution, increasing communication volume by 1.5x to 2.0x compared to DDP.
  • NVLink vs PCIe: High speed NVLink interconnects provide 900 GB/s bidirectional bandwidth per GPU, mitigating ZeRO-3 communication bottlenecks. Standard PCIe Gen5 x16 provides only 64 GB/s, causing significant pipeline stalls during AllGather operations.

Quantization and QLoRA Mechanics

  • NormalFloat4 (NF4): Information theoretically optimal quantile quantization format for normally distributed neural network weights, reducing base model footprint from 16 bits to 4 bits (0.5 bytes per parameter).
  • Double Quantization: Quantizes the quantization constants themselves, saving an additional 0.375 bits per parameter.
  • Paged Optimizers: Utilizes NVIDIA CUDA unified memory paging to manage optimizer state memory spikes during gradient checkpointing anomalies, preventing out of memory crashes.
  • Activation Checkpointing: Recomputes activations during backward passes instead of storing all intermediate tensors, reducing activation memory from O(sequence length times hidden dimension) to O(square root of sequence length).

Frequently Asked Questions

How does ZeRO-3 reduce GPU VRAM consumption compared to ZeRO-2?

ZeRO-2 partitions optimizer states and gradients across data parallel GPUs. ZeRO-3 goes a step further by also partitioning model parameters. During the forward and backward passes, ZeRO-3 dynamically gathers and immediately discards parameters across ranks using AllGather and ReduceScatter communication primitives, eliminating the memory duplication of static model parameters on every GPU.

When should you use LoRA or QLoRA instead of full ZeRO-3 fine-tuning?

LoRA and QLoRA freeze base model weights and train low rank adaptation matrices, reducing trainable parameter memory by over 99 percent. Use LoRA when GPU memory is limited and task adaptation is sufficient. Use QLoRA to quantize base weights to 4-bit NormalFloat with double quantization, enabling fine-tuning of 70B models on single consumer GPUs. Use full ZeRO-3 fine-tuning when adapting all model weights is required to maximize downstream task performance.

What are the trade-offs of CPU optimizer offloading (zero_optimization.offload_optimizer)?

CPU optimizer offloading moves optimizer state updates and master weight maintenance from GPU SRAM to host system RAM via pinned CPU memory and PCIe bus transfers. This dramatically lowers GPU VRAM usage and allows training larger models on smaller GPUs, but introduces significant PCIe bandwidth bottlenecks that decrease training throughput speed.

Why does ZeRO-3 cause training step slowdowns over PCIe interconnects?

ZeRO-3 requires extensive communication during every forward and backward sub-layer computation to fetch and discard partitioned parameters via AllGather operations. Over standard PCIe Gen4 or Gen5 links, this communication overhead saturates bus bandwidth and stalls GPU compute units, whereas high speed interconnects like NVIDIA NVLink mitigate the bottleneck through high throughput peer to peer transfers.

How do you choose between ZeRO-2 and ZeRO-3 for multi-node Llama 3 training?

Choose ZeRO-2 if your model parameters fit comfortably within individual GPU VRAM when combined with partitioned optimizer states and gradients, because ZeRO-2 avoids the heavy AllGather communication overhead of ZeRO-3. Choose ZeRO-3 when model size exceeds individual GPU capacity even with ZeRO-2, or when working with extremely large clusters where parameter partitioning is mandatory to prevent out of memory errors.

Related Hardware and AI Training Calculators