Chapter 57

ডিস্ট্রিবিউটেড ট্রেনিং

Distributed Training
🌐 যখন এক GPU যথেষ্ট না
Model বা data বড় হলে একাধিক GPU/node-এ train করতে হয়। PyTorch DDP, FSDP, DeepSpeed, Megatron — সব এই সমস্যার সমাধান।

চারটি Parallelism

  • Data Parallel: প্রতিটি GPU full model + আলাদা batch (DDP)।
  • Model/Tensor Parallel: একই layer-এর matrix shard (Megatron)।
  • Pipeline Parallel: layer-গুলো ভিন্ন GPU-তে stage হিসেবে।
  • ZeRO / FSDP: optimizer state, gradient, parameter shard।

DDP — Standard Data Parallel

# train.py
import torch, torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP

dist.init_process_group("nccl")
rank = dist.get_rank()
torch.cuda.set_device(rank)

model = MyModel().cuda()
model = DDP(model, device_ids=[rank])

for x,y in loader:                       # DistributedSampler দরকার
    loss = model(x.cuda()).loss
    loss.backward()
    opt.step(); opt.zero_grad()
dist.destroy_process_group()
torchrun --nproc_per_node=8 --nnodes=2 \
         --rdzv_endpoint=master:29500 train.py

FSDP — বড় Model

from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
model = FSDP(model, auto_wrap_policy=...,
             mixed_precision=bf16_policy,
             sharding_strategy=ShardingStrategy.FULL_SHARD)

DeepSpeed ZeRO Stages

  • Stage 1: optimizer state shard।
  • Stage 2: + gradient shard।
  • Stage 3: + parameter shard (FSDP-এর সমতুল্য)।
  • Offload: CPU/NVMe-তে state — even বড় model।
deepspeed train.py --deepspeed ds_config.json
# ds_config.json:
# { "zero_optimization": {"stage": 3,
#     "offload_optimizer": {"device": "cpu"}},
#   "bf16": {"enabled": true} }

Communication Backend

  • NCCL: NVIDIA GPU-তে fastest (all-reduce)।
  • Gloo: CPU বা mixed।
  • Inter-node — InfiniBand / RoCE আদর্শ।

Frameworks

  • HuggingFace Accelerate: DDP/FSDP/DeepSpeed unified।
  • PyTorch Lightning: trainer flag দিয়ে multi-GPU।
  • Megatron-LM, NeMo: tensor + pipeline parallel।
  • Ray Train: cloud orchestration।

Checkpointing

  • Sharded checkpoint — সব rank একসাথে লেখে।
  • Async checkpoint (NVIDIA TransformerEngine)।
  • Resume + elastic training (node fail হলেও চলে)।
⚠️ Communication = Bottleneck
GPU যত বাড়ে, all-reduce overhead তত বড়। Gradient accumulation, bf16, overlap compute+comm — সবসময় profile করুন।

সারসংক্ষেপ

✨ এই অধ্যায়ে যা শিখলাম
  • Data, Tensor, Pipeline, ZeRO — চার parallel strategy।
  • DDP → FSDP → DeepSpeed ZeRO-3 — model বড় হলে ধাপ।
  • NCCL + InfiniBand — fast inter-GPU comm।