Training Infrastructure
GPU Selection
| GPU |
VRAM |
Best For |
Notes |
| RTX 4090 |
24 GB |
LoRA/QLoRA 7B–13B, inference |
Consumer, no NVLink |
| RTX 5090 |
32 GB |
LoRA 13B–30B, QLoRA 70B |
Consumer, no NVLink |
| A6000 |
48 GB |
Full fine-tune 7B, LoRA 30B–70B |
Prosumer, NVLink pair |
| A100 80GB |
80 GB |
Full fine-tune 13B–30B, multi-GPU |
Datacenter, NVLink |
| H100 80GB |
80 GB |
Full fine-tune 30B–70B, RLHF |
Datacenter, NVLink, FP8 |
| H200 141GB |
141 GB |
Full fine-tune 70B+, long context |
Datacenter, NVLink |
VRAM Budgeting
Rule of thumb for training memory (mixed precision, AdamW):
| Technique |
VRAM multiplier |
Example: 7B model |
| Full fine-tune (FP16 + Adam) |
~16× params |
~112 GB |
| LoRA (rank 64) |
~2.5× params |
~18 GB |
| QLoRA (4-bit + LoRA) |
~0.8× params |
~6 GB |
| Inference only (FP16) |
~2× params |
~14 GB |
| Inference only (4-bit) |
~0.5× params |
~4 GB |
Multi-GPU Training
| Strategy |
When |
Framework |
| DataParallel (DP) |
Single node, quick experiments |
PyTorch native |
| DistributedDataParallel (DDP) |
Single node, production training |
torchrun --nproc_per_node=N |
| FSDP / DeepSpeed ZeRO |
Model doesn't fit one GPU |
accelerate, DeepSpeed config |
| Pipeline parallelism |
Very large models (>70B) |
DeepSpeed, Megatron-LM |
| Tensor parallelism |
Latency-critical inference |
vLLM, TensorRT-LLM |
DDP Launch Pattern
Effective batch size = per_device × nproc × grad_accum = 4 × 4 × 8 = 128.
FSDP Config (accelerate)
Cloud vs On-Prem Decision
| Factor |
Cloud (Lambda, RunPod, Vast) |
On-Prem |
| Utilization < 30% |
✅ Pay per hour |
❌ Idle hardware |
| Utilization > 60% |
❌ Expensive at scale |
✅ Amortizes in ~8 months |
| Data sensitivity |
❌ Data leaves premises |
✅ Stays local |
| Burst capacity |
✅ Scale to 8×H100 on demand |
❌ Fixed ceiling |
| Ops burden |
❌ Zero (managed) |
✅ You maintain cooling, power, drivers |
| Experiment velocity |
✅ Spin up, tear down |
⚠️ Queue contention on shared cluster |
Cloud Cost Reference (spot/on-demand, 2025)
| GPU |
On-demand $/hr |
Spot $/hr |
| A100 80GB |
$1.80–$2.50 |
$0.90–$1.40 |
| H100 80GB |
$3.50–$5.00 |
$2.00–$3.00 |
| RTX 4090 |
$0.40–$0.70 |
$0.25–$0.45 |
Storage and Data Pipeline
- Training data on NVMe or tmpfs — network storage stalls GPUs
- Checkpoints to object storage (S3/GCS) or NAS — never only local disk
- Use
safetensors format — faster load, no pickle security risk
- Pre-tokenize datasets for large corpora — tokenization at load time wastes GPU-hours
Monitoring Training
| Metric |
Healthy Range |
Red Flag |
| GPU utilization |
> 90% |
< 70% = data pipeline bottleneck |
| GPU memory |
Stable after warmup |
Growing = leak (check grad accumulation) |
| Loss curve |
Smooth decrease |
Spikes = LR too high; plateau = converged or stuck |
| Grad norm |
Stable or decreasing |
Exploding = reduce LR or add clipping |
| Throughput (samples/sec) |
Consistent |
Degrading = thermal throttle or I/O |