Accelerate multi-node training komutunun bütün node'larda çalıştırılmasını ve her node için doğru machine_rank kullanılmasını ister.
Watchdog collective timeout, rank hang, barrier beklemesi, machine_rank, main_process_ip, NCCL network, DDP, DeepSpeed ZeRO ve FSDP sorunlarını teşhis edin.
Accelerate multi-node training komutunun bütün node'larda çalıştırılmasını ve her node için doğru machine_rank kullanılmasını ister.
DeepSpeed ZeRO-1 optimizer states, ZeRO-2 optimizer+gradients, ZeRO-3 optimizer+gradients+parameters shard eder; daha fazla sharding daha fazla communication maliyeti getirir.
FSDP FULL_SHARD kavramsal olarak ZeRO-3'e, SHARD_GRAD_OP ZeRO-2'ye karşılık gelir.
Bir rank daha önce CUDA OOM, dataloader exception veya shape mismatch ile öldüğünde diğer rank'lar collective/barrier beklemeye devam edip dakikalar sonra NCCL timeout verebilir. Loglarda timeout satırından önce bütün rank'ların ilk exception'ını arayın.
Tek node çoklu GPU'da PCIe/NVLink topolojisi ve process mapping öne çıkar. Multi-node'da bunlara ek olarak main process IP/port, firewall, route, MTU ve interface seçimi devreye girer. Sorunu önce tek node/iki GPU minimal script ile sınırlayın.
`num_machines`, `num_processes`, `machine_rank`, `main_process_ip`, `main_process_port` ve `same_network` birlikte tutarlı olmalıdır. Rank 0'ın intranet IP'si düşük latency için önerilir. Aynı config'i kopyalarken yalnız machine_rank'i node'a göre değiştirmeyi unutmayın.
accelerate env
accelerate config show 2>/dev/null || true
hostname -I
nvidia-smi topo -m
Accelerate dokümanı multi-node command'in yalnız master'da değil tüm node'larda çalıştırılması gerektiğini belirtir. Bir node hiç başlamadıysa diğerleri rendezvous/barrier aşamasında sonsuza yakın bekliyor gibi görünür.
PyTorch ProcessGroupNCCL, watchdog ve async error handling için environment değişkenleri sunar. Debug modunu problem yeniden üretirken açın; production'da sürekli aşırı log bırakmayın. Hangi collective'in ve hangi rank'ın takıldığını logdan ayırın.
export NCCL_DEBUG=INFO
export TORCH_DISTRIBUTED_DEBUG=DETAIL
export TORCH_NCCL_ASYNC_ERROR_HANDLING=1
Multi-NIC sunucuda NCCL yanlış public/docker/management interface seçerse connection kurulsa bile düşük bandwidth veya timeout görülebilir. Interface IP'lerini, route'u ve node-to-node bandwidth/latency'yi ayrı test edin; firewall'da main process port erişimini doğrulayın.
DDP her GPU'da model kopyası tutup gradients all-reduce eder. FSDP/ZeRO daha fazla state'i shard ederek VRAM kazandırır fakat communication pattern'i ağırlaşır. Küçük model 8 GPU'ya sığıyorsa gereksiz ZeRO-3 bazen throughput'u düşürebilir.
Bir rank diğerlerinden erken epoch bitirirse kalan rank'lar collective bekleyebilir. Distributed sampler, drop_last, dataset filter ve exception nedeniyle rank'ların aynı sayıda synchronization noktasına ulaştığını doğrulayın.
8 GPU/4 node problemi doğrudan debug etmek zordur. Aynı script'i tek GPU, sonra iki GPU DDP, sonra tek node tüm GPU, en son multi-node çalıştırın. Hangi aşamada bozulduğunu bulmak configuration search alanını dramatik küçültür.
| Nerede takılıyor? | İlk şüphe | Kontrol |
|---|---|---|
| Launch/rendezvous | IP/port/rank | Accelerate config |
| İlk all-reduce | NCCL/interface/topology | NCCL debug + topo |
| Birkaç step sonra | Bir rank exception/OOM | Tüm rank logları |
| Epoch sonunda | Uneven dataloader | Sampler/drop_last |
Çalışan eğitim ortamında paketleri rastgele güncellemeyin. GPU modeli, driver, CUDA/PyTorch runtime, transformers, accelerate, peft, trl, bitsandbytes/diffusers sürümleri ile model revision ve dataset fingerprint bilgisini her run için kaydedin. Önce minimal reproducible test oluşturun, sonra production eğitime müdahale edin.
Hayır. Bir rank'ın daha önce OOM/exception ile çıkması da diğer rank'ların collective timeout vermesine yol açabilir.
Hayır. Daha fazla VRAM tasarrufu sağlar ama parameter sharding nedeniyle communication maliyeti de artar.
Model boyutu, precision, context, batch, LoRA/QLoRA veya full fine-tuning yöntemi ve multi-GPU ihtiyacınızı birlikte değerlendirin; yalnız GPU model adına bakarak kapasite seçmeyin.