Accelerate verlangt den Start auf allen Nodes mit korrektem machine_rank.
Watchdog Collective Timeout, Rank Hangs, Barriers, machine_rank, main_process_ip, NCCL-Netzwerk, DDP, ZeRO und FSDP diagnostizieren.
Accelerate verlangt den Start auf allen Nodes mit korrektem machine_rank.
ZeRO-1 shardet Optimizer States, ZeRO-2 zusätzlich Gradients, ZeRO-3 zusätzlich Parameter; mehr Sharding erhöht Kommunikation.
FSDP FULL_SHARD entspricht konzeptionell ZeRO-3, SHARD_GRAD_OP ZeRO-2.
Stirbt ein Rank vorher durch OOM, Dataloader- oder Shape-Fehler, warten andere Ranks im Collective bis Timeout. Alle Rank-Logs nach dem ersten Fehler durchsuchen.
Single Node: PCIe/NVLink und Process Mapping. Multi-Node: zusätzlich IP/Port, Firewall, Routing, MTU, Interface. Problem möglichst auf Minimaltest reduzieren.
Accelerate-Felder müssen konsistent sein. Rank-0-Intranet-IP wird empfohlen; machine_rank pro Node anpassen.
accelerate env
accelerate config show 2>/dev/null || true
hostname -I
nvidia-smi topo -m
Accelerate muss auf allen Nodes gestartet werden. Fehlt ein Node, hängen andere beim Rendezvous/Barrier.
PyTorch ProcessGroupNCCL bietet Env-Variablen für Watchdog/Async Error Handling. Beim Repro detailliertes Logging aktivieren und Collective/Rank identifizieren.
export NCCL_DEBUG=INFO
export TORCH_DISTRIBUTED_DEBUG=DETAIL
export TORCH_NCCL_ASYNC_ERROR_HANDLING=1
Bei Multi-NIC-Hosts kann NCCL ein ungeeignetes Interface wählen. Routes, IPs, Bandbreite/Latenz und Rendezvous-Port prüfen.
DDP hält Modellkopie pro GPU; FSDP/ZeRO sharden mehr State und erhöhen Kommunikation. Passt das Modell ohnehin, kann ZeRO-3 unnötig bremsen.
Endet ein Rank früher, warten andere im Collective. Distributed Sampler, drop_last, Filter und Exceptions prüfen.
Direktes Debugging vieler GPUs/Nodes ist schwer. Erst 1 GPU, dann 2 GPU DDP, kompletter Node, zuletzt Multi-Node testen.
| Hang-Punkt | Erster Verdacht | Prüfung |
|---|---|---|
| Launch/Rendezvous | IP/Port/Rank | Accelerate Config |
| Erster All-Reduce | NCCL/Interface/Topologie | NCCL Debug + Topo |
| Nach einigen Steps | Ein Rank Exception/OOM | Alle Rank-Logs |
| Epoch-Ende | Ungleicher Dataloader | Sampler/drop_last |
In einer funktionierenden Trainingsumgebung Pakete nicht blind aktualisieren. GPU, Treiber, CUDA/PyTorch-Runtime, Transformers, Accelerate, PEFT, TRL, bitsandbytes/Diffusers, Modellrevision und Dataset-Fingerprint pro Run protokollieren.
Nein. OOM/Exception auf einem Rank kann andere Ranks im Collective timeouten lassen.
Nein. Es spart mehr Speicher, erhöht aber Kommunikation durch Parameter-Sharding.
Modellgröße, Precision, Context, Batch, LoRA/QLoRA oder Full Fine-Tuning und Multi-GPU gemeinsam bewerten.