Zmniejszyć zużycie pamięci GPU
Stosować checkpointing i inteligentniejszą obsługę tensorów
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 checkpointZastosowanie 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. 🧹
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
- Obliczenia mieszanej precyzji z autocast i GradScaler
- Akumulacja gradientów dla dużych batchy
- Profilowanie wąskiego gardła
- Zmniejszyć zużycie pamięci GPU