الفصل 2: التدريب الموزّع
استراتيجيات التوازي
مثال PyTorch DDP
import torch
import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP
def setup(rank, world_size):
dist.init_process_group("nccl", rank=rank, world_size=world_size)
def train(rank, world_size):
setup(rank, world_size)
model = MyModel().to(rank)
model = DDP(model, device_ids=[rank])
optimizer = torch.optim.Adam(model.parameters())
for epoch in range(num_epochs):
for batch in dataloader:
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
optimizer.zero_grad()
dist.destroy_process_group()
# Launch with torchrun
# torchrun --nproc_per_node=4 train.py
النقاط الرئيسية
ملخص
- التوازي البياني يعمل لمعظم حالات الاستخدام
- التوازي النموذجي مطلوب للنماذج الكبيرة جداً
- DeepSpeed/FSDP تمكّن من تدريب نماذج أكبر من ذاكرة GPU
التالي: الفصل 3: التدريب السحابي