ZeRO
Technika Microsoftu do trenowania dużych modeli, polegająca na tym, by nie trzymać tego samego na każdym GPU. Dzieli stan optymalizatora, gradienty, a w końcu same parametry między karty.
W zwykłej równoległości danych każda karta trzyma pełną kopię wszystkiego, a przy modelu trenowanym Adamem w mieszanej precyzji mniej więcej trzy czwarte pamięci pochłaniają stan optymalizatora i gradienty, identyczne wszędzie. ZeRO usuwa tę redundancję w trzech etapach: etap pierwszy dzieli stan optymalizatora, drugi także gradienty, a trzeci również wagi, które są zbierane warstwa po warstwie w trakcie obliczeń. Oszczędność pamięci jest niemal proporcjonalna do liczby kart, za cenę większej komunikacji. Dzięki offloadowi stan można dodatkowo przenieść do pamięci hosta lub na NVMe. Pomysł został ponownie zaimplementowany w PyTorchu jako FSDP.