Chapter 52

GPU অপ্টিমাইজেশন

GPU Optimization
🏎️ GPU-কে ঘুমাতে দেবেন না
Training/inference-এ GPU utilization ৩০–৪০% হলে অপচয় হচ্ছে। Mixed precision, batching, data pipeline, kernel fusion — কয়েকটি tweak-এই ২–৫x boost।

Monitoring

nvidia-smi -l 1            # 1s interval
nvtop                       # interactive (top-এর GPU version)
nsys profile python train.py   # NVIDIA Nsight Systems

Mixed Precision (AMP)

from torch.cuda.amp import autocast, GradScaler
scaler = GradScaler()
for x, y in loader:
    opt.zero_grad()
    with autocast(dtype=torch.bfloat16):
        out  = model(x.cuda(non_blocking=True))
        loss = criterion(out, y.cuda(non_blocking=True))
    scaler.scale(loss).backward()
    scaler.step(opt); scaler.update()

Data Pipeline

  • num_workers = CPU core সংখ্যা।
  • pin_memory=True + non_blocking=True
  • persistent_workers=True — epoch-গুলোতে worker রিইউজ।
  • Prefetch, augmentation GPU-তে (DALI, Kornia)।

Batch Size & Gradient Accumulation

ACC = 4
for i, (x,y) in enumerate(loader):
    loss = model(x).loss / ACC
    loss.backward()
    if (i+1) % ACC == 0:
        opt.step(); opt.zero_grad()

Memory Saving Tricks

  • Gradient checkpointing: recompute activations।
  • 8-bit/4-bit optimizer: bitsandbytes।
  • FlashAttention: attention দ্রুত + কম VRAM।
  • torch.compile(): kernel fusion (PyTorch 2+)।
  • Channels-last: conv-এ memory_format=torch.channels_last

Multi-GPU

  • DDP: data parallel — সবচেয়ে কমন।
  • FSDP / DeepSpeed ZeRO: model shard, বড় LLM-এ।
  • Tensor/Pipeline parallel: Megatron-LM style।

Inference Speed

  • FP16/INT8 quantization।
  • TensorRT / ONNX Runtime / TorchScript।
  • Dynamic batching (Triton, vLLM)।
  • KV-cache, speculative decoding (LLM)।
💡 আগে মাপুন, পরে অপ্টিমাইজ
Profile না করেই অপ্টিমাইজ করা bug-source। আগে torch.profiler বা Nsight দিয়ে bottleneck খুঁজুন — data loading না GPU compute?

সারসংক্ষেপ

✨ এই অধ্যায়ে যা শিখলাম
  • AMP, data pipeline, batching — quick wins।
  • Gradient checkpoint, FlashAttention, torch.compile।
  • DDP/FSDP — multi-GPU scaling।