Deep Learning Academy · Lekcja

Zmniejszyć zużycie pamięci GPU

Stosować checkpointing i inteligentniejszą obsługę tensorów

Lekcja 4 z 413 kroki

Zmniejszyć zużycie pamięci GPU to bezpłatna lekcja Deep Learning Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Deep Learning Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.

Budzący grozę OOM

Po wyczerpaniu pamięci GPU trenowanie kończy się błędem out-of-memory. Dobra wiadomość jest taka, że kilka prostych metod pozwala szybko zwolnić miejsce.

Na co jest zużywana pamięć

GPU przechowuje wagi modelu, gradienty, stan optymalizatora oraz aktywacje zapisane na potrzeby wstecznej propagacji. Aktywacje często zajmują najwięcej miejsca.

Zmniejsz batch

Najszybszym rozwiązaniem jest mniejszy batch size. Mniejsza liczba próbek na krok oznacza mniej aktywacji do zapisania, a akumulacja może przywrócić efektywny rozmiar.

Brak gradientów podczas wnioskowania

Podczas ewaluacji gradienty nie są potrzebne. Umieszczenie wnioskowania w torch.no_grad pomija zapisywanie aktywacji i oszczędza dużo pamięci.

with torch.no_grad():
    preds = model(x)

Mieszana precyzja pomaga także tutaj

Tensory o zmniejszonej precyzji są po prostu mniejsze. Włączenie autocast zmniejsza zużycie pamięci na aktywacje i wagi mniej więcej o połowę podczas trenowania.

with torch.autocast(device_type='cuda'):
    out = model(x)

Checkpointing gradientów

Checkpointing zamienia obliczenia na oszczędność pamięci: usuwa większość aktywacji i odtwarza je podczas wstecznej propagacji, zamiast przechowywać je wszystkie.

from torch.utils.checkpoint import checkpoint

Zastosowanie checkpointingu

Umieść ciężki blok w checkpoint, aby jego aktywacje zostały odtworzone podczas przebiegu wstecznego. Oszczędzasz pamięć kosztem dodatkowych obliczeń.

out = checkpoint(heavy_block, x)

Odłącz dane rejestrowane w logach

Przechowywanie tensora funkcji straty utrzymuje w pamięci cały jego graf. Wywołaj .item(), aby zapisać w logu tylko liczbę i pozwolić na zwolnienie grafu.

running_loss += loss.item()

Użyj set_to_none

Przekaż set_to_none do zero_grad, aby tensory gradientów zostały zwolnione, zamiast jedynie wypełnione zerami, co uwolni ich pamięć między krokami.

optimizer.zero_grad(set_to_none=True)

Wyczyść pamięć podręczną

PyTorch przechowuje zwolnione bloki w pamięci podręcznej, aby użyć ich ponownie. Gdy naprawdę potrzebujesz odzyskać miejsce, empty_cache zwraca je do GPU, choć rzadko rozwiązuje to problem rzeczywistych wycieków pamięci.

torch.cuda.empty_cache()

Sprawdź wykorzystanie pamięci

Sprawdź, ile pamięci zajmujesz, korzystając z memory_allocated. Obserwowanie tej wartości podczas dostrajania potwierdza, która zmiana rzeczywiście zwolniła miejsce.

print(torch.cuda.memory_allocated())

Szybkie sprawdzenie

Jaka technika oszczędza pamięć, odtwarzając aktywacje podczas wstecznej propagacji?

Podsumowanie

Pokonaj problem braku pamięci, zmniejszając batche oraz używając no_grad podczas wnioskowania, autocast, checkpointingu gradientów i set_to_none. Mierz zużycie za pomocą memory_allocated. 🧹

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Zmniejszyć zużycie pamięci GPU” jest bezpłatna?

Tak — pełny tekst „Zmniejszyć zużycie pamięci GPU” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Deep Learning Academy, przejdź na CoddyKit PRO. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zmniejszyć zużycie pamięci GPU”?

Stosować checkpointing i inteligentniejszą obsługę tensorów Ćwiczysz Deep Learning Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Deep Learning Academy?

Nie wymagamy żadnego doświadczenia. Deep Learning Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Zmniejszyć zużycie pamięci GPU”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Deep Learning Academy?

Tak. Każda lekcja Deep Learning Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Obliczenia mieszanej precyzji z autocast i GradScaler
  2. Akumulacja gradientów dla dużych batchy
  3. Profilowanie wąskiego gardła
  4. Zmniejszyć zużycie pamięci GPU
← Powrót do Deep Learning Academy