0Pricing
Deep Learning Academy · Lekcja

Profilowanie wąskiego gardła

Znajdować miejsca zużywające czas i pamięć

Profilowanie wąskiego gardła to bezpłatna lekcja Deep Learning Academy na CoddyKit. To lekcja 3 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.

Dlaczego najpierw profilować

Zanim rozpoczniesz optymalizację, sprawdź, na co rzeczywiście zużywany jest czas. Zgadywanie prowadzi do niepotrzebnego wysiłku, a szybkie profilowanie pokazuje prawdziwe wąskie gardła.

Dwa typowe wąskie gardła

Trenowanie zwykle zatrzymuje się w jednym z dwóch miejsc: podczas obliczeń GPU compute albo w potoku danych, który je zasila. Ważne jest ustalenie, które z nich stanowi problem.

Najpierw zmierz czas w prosty sposób

Na początek zmierz czas wykonywania fragmentu pętli za pomocą zegara. Przybliżony odczyt perf_counter często w ciągu kilku sekund wskaże właściwy obszar.

import time
t = time.perf_counter()
# run one batch
print(time.perf_counter() - t)

Praca GPU jest asynchroniczna

CUDA działa w tle, więc naiwne pomiary czasu mogą wprowadzać w błąd. Najpierw wywołaj synchronize, aby upewnić się, że GPU rzeczywiście zakończyło pracę, zanim odczytasz zegar.

torch.cuda.synchronize()

Wbudowany profiler

Aby uzyskać szczegółowe informacje, użyj menedżera kontekstu torch.profiler. Rejestruje on czas wykonywania każdej operacji na CPU i GPU.

from torch.profiler import profile

Obejmij kod profilowaniem

Uruchom interesujący Cię fragment wewnątrz bloku profile. Wybranie aktywności CPU i CUDA pozwala uchwycić pełny obraz.

with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA]) as prof:
    model(x)

Odczytywanie tabeli

Wyświetl wyniki posortowane według kosztu, aby na górze zobaczyć najbardziej obciążające operacje. Tabela key_averages grupuje identyczne operacje.

print(prof.key_averages().table(sort_by='cuda_time_total'))

Wykrywanie wąskiego gardła danych

Jeśli GPU często pozostaje bezczynne i czeka, Twój DataLoader działa zbyt wolno. Zwiększenie liczby workerów lub użycie danych z pamięci podręcznej zwykle eliminuje tę lukę.

Wykrywanie wąskiego gardła obliczeniowego

Jeśli jedna operacja matmul lub conv dominuje w tabeli, ograniczeniem są surowe możliwości compute. Warto wtedy zastosować obliczenia w mieszanej precyzji albo mniejszy model.

Obserwuj także pamięć

Profiler może również raportować szczytowe zużycie pamięci. Śledzenie profile_memory pokazuje, które warstwy zużywają jej najwięcej, pomagając określić, co należy ograniczyć.

with profile(profile_memory=True) as prof:
    model(x)

Mierz, zmieniaj, mierz ponownie

Optymalizacja to pętla: profiluj, wprowadź jedną zmianę, a następnie ponownie wykonaj profilowanie. Aby potwierdzić, że poprawka rzeczywiście pomogła, ufaj liczby, a nie przeczuciom.

Szybkie sprawdzenie

GPU często pozostaje bezczynne między batchami. Jakie jest prawdopodobne wąskie gardło?

Podsumowanie

Profiluj przed dostrajaniem: użyj synchronize, aby uzyskać wiarygodne pomiary czasu, wykorzystaj torch.profiler do znalezienia najbardziej obciążających operacji, a następnie napraw problem z danymi lub obliczeniami i zmierz wynik ponownie. 🔍

Często zadawane pytania

Czy lekcja „Profilowanie wąskiego gardła” jest bezpłatna?

Tak — pełny tekst „Profilowanie wąskiego gardła” 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 „Profilowanie wąskiego gardła”?

Znajdować miejsca zużywające czas i pamięć Ć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 3 z 4.

Ile czasu zajmuje lekcja „Profilowanie wąskiego gardła”?

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