Activation Checkpointing
Activation Checkpointing zmniejsza pamięć potrzebną do treningu: zachowuje wybrane aktywacje, a pozostałe odtwarza, gdy obliczanie gradientu ich potrzebuje. Płaci za to dodatkowymi obliczeniami. Aktywacje są pośrednimi wynikami przejścia przez model. Ten checkpoint nie jest kopią wag na dysku służącą do wznowienia treningu.

Chen et al., Training Deep Nets with Sublinear Memory Cost, §4.1–4.3 opisują podział grafu obliczeń na fragmenty: zachowane wejścia pozwalają ponownie wykonać fragment podczas backward. Dla odpowiednio podzielonego łańcucha warstw autorzy uzyskują koszt pamięci aktywacji rzędu zamiast . To wynik przy założeniach pracy, nie obietnica takiego spadku całej pamięci GPU.
Usunięcie wyniku nie musi zmieniać gradientu
We własnym przykładzie liczymy:
Dla otrzymujemy , i . Do obliczenia pochodnej ostatniego kwadratu potrzebujemy . Jeśli go usuniemy, trzeba najpierw odtworzyć i z zachowanego . Potem reguła łańcuchowa daje ten sam wynik:
Przejdź backward krok po kroku. Porównaj zachowanie z jego usunięciem i zmień wejście także na zero lub liczbę ujemną.
Licznik pokazuje wartości zachowane po forward na potrzeby backward: tutaj albo tylko . Pomija wspólny wynik , gradienty i chwilowe bufory. Nie jest pomiarem maksymalnego zużycia pamięci; podczas odtwarzania znowu powstają wartości pośrednie. Demo wykonuje tylko niezbędne ponowne operacje, nie cały forward.
Odtworzenie musi być wierne
Gdy odtwarzany fragment używa losowości, np. dropout, trzeba zadbać o zgodny stan generatora. Zmiana zachowania funkcji między forward a backward może dać błędny gradient. Dokumentacja PyTorch, torch.utils.checkpoint opisuje te ograniczenia oraz wariant zatrzymujący odtwarzanie po uzyskaniu potrzebnych aktywacji.
Metodę można stosować do bloków Transformer i łączyć z Pipeline Parallelism. Ogranicza pamięć aktywacji; nie usuwa wag ani stanów optymalizatora. Zysk pamięci i koszt czasu zależą od miejsca wybranych checkpointów.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.