অধ্যায়Phase 7 · প্রোডাকশন ও ডিপ্লয়মেন্ট
7.5 10 মিনিট পড়া
GPU Acceleration
CUDA ও cuDNN basics।
🎬 গল্প দিয়ে শুরু
CPU-তে training সারা রাত, GPU-তে ১০ মিনিট। কেন? — parallelism। GPU হাজার হাজার core একসাথে চালায়। কিন্তু GPU efficiently ব্যবহার করতে কিছু rule জানা চাই।
GPU stack
text
Application (PyTorch / TF / ONNX RT)
↓
cuDNN (Conv, RNN primitives)
cuBLAS (Matrix multiply)
↓
CUDA Toolkit (nvcc, runtime)
↓
NVIDIA Driver
↓
GPU hardware (SM, Tensor Cores, VRAM)Setup verify
bash
nvidia-smi # driver + GPU + VRAM
nvcc --version # CUDA compiler versionpython
import torch
print(torch.cuda.is_available()) # True
print(torch.cuda.get_device_name(0))
print(torch.backends.cudnn.version())Tensor Cores ও mixed precision
- Volta+ GPU-তে Tensor Core — FP16/BF16 matmul হাজারগুণ দ্রুত।
- Auto Mixed Precision (AMP) — accuracy বজায় রেখে 2× speedup, 50% VRAM সাশ্রয়।
python
AMP training
from torch.amp import autocast, GradScaler
scaler = GradScaler("cuda")
for x, y in loader:
x, y = x.cuda(non_blocking=True), y.cuda(non_blocking=True)
opt.zero_grad()
with autocast("cuda", dtype=torch.float16):
loss = criterion(model(x), y)
scaler.scale(loss).backward()
scaler.step(opt)
scaler.update()DataLoader bottleneck দূর করা
- num_workers = 4–8 (CPU core অনুযায়ী)।
- pin_memory=True — host→device dma দ্রুত।
- persistent_workers=True — epoch-এ worker recycle না।
- Image decode GPU-তে: NVIDIA DALI, torchvision.io।
python
loader = DataLoader(ds, batch_size=64, shuffle=True,
num_workers=8, pin_memory=True,
persistent_workers=True, prefetch_factor=4)Inference-এ GPU best practice
- torch.no_grad() বা torch.inference_mode() — গ্রাফ ও memory সাশ্রয়।
- Half precision: model.half(); input.half()।
- torch.compile(model) — PyTorch 2.x kernel fusion।
- CUDA Graphs — repeated workflow-এ launch overhead শূন্য।
- Pinned memory + async transfer।
python
model = torch.compile(model.eval().cuda().half())
with torch.inference_mode():
out = model(x.cuda().half())Multi-GPU
- DataParallel — সহজ কিন্তু পুরনো, GIL bottleneck।
- DistributedDataParallel (DDP) — production standard, 1 process / GPU।
- FSDP / DeepSpeed — বড় model (>10 B param) shard করে।
bash
torchrun --nproc_per_node=4 train_ddp.pyMonitoring tools
- nvidia-smi dmon — real-time util/mem/power।
- nvtop — htop-এর মতো interactive।
- Nsight Systems — timeline profiling (CPU↔GPU gap)।
- PyTorch Profiler — operator-wise breakdown।
প্র্যাকটিস টাস্ক
- ResNet50 training-এ AMP on/off করে speedup ও VRAM measure করুন।
- DataLoader num_workers 0/4/8 — epoch time graph করুন।
- torch.compile YOLOv8 inference-এ speedup verify করুন।