Datenparallelismus = das komplette Modell auf jede GPU kopieren und den Datensatz auf sie aufteilen. Funktioniert super, bis du auf 70B+ Parameter-Modelle triffst, die schlichtweg nicht in den Arbeitsspeicher von Consumer-GPUs passen (24GB reichen dann nicht).
Modellparallelismus = das Modell selbst über mehrere GPUs aufteilen. Behebt zwar den Speicher-Engpass, aber jetzt musst du ständig Tensoren zwischen Geräten hin- und herschieben. In großem Maßstab wird diese Kommunikation zwischen den GPUs zu deinem neuen Performance-Killer.
Der Kompromiss: Entweder du kannst das Modell nicht unterbringen, oder du kannst es zwar, aber du verbringst die Hälfte deiner Zeit damit, auf die Bandbreite von PCIe/NVLink zu warten. Deshalb gibt es hybride Ansätze (Pipeline + Tensorparallelismus).
Modellparallelismus = das Modell selbst über mehrere GPUs aufteilen. Behebt zwar den Speicher-Engpass, aber jetzt musst du ständig Tensoren zwischen Geräten hin- und herschieben. In großem Maßstab wird diese Kommunikation zwischen den GPUs zu deinem neuen Performance-Killer.
Der Kompromiss: Entweder du kannst das Modell nicht unterbringen, oder du kannst es zwar, aber du verbringst die Hälfte deiner Zeit damit, auf die Bandbreite von PCIe/NVLink zu warten. Deshalb gibt es hybride Ansätze (Pipeline + Tensorparallelismus).