W tej sekcji znajdziesz szczegółowe informacje o potoku trenowania.
Optymalizacja potoku wejściowego
Podsumowanie: przyczyny i interwencje w przypadku potoków ograniczonych przez dane wejściowe w dużym stopniu zależą od zadania. Użyj profilera i poszukaj typowych problemów.
Aby zdiagnozować potoki ograniczone przez dane wejściowe, użyj odpowiedniego profilera, np. jednego z tych:
- Perfetto dla JAX
- Profiler TensorFlow dla TensorFlow.
Ostatecznie konkretne przyczyny i interwencje są w dużej mierze zależne od zadania. Szersze kwestie techniczne (np. minimalizowanie zajętości dysku) mogą negatywnie wpływać na wydajność potoku wejściowego.
Oto najczęstsze przyczyny, dla których potoki są ograniczone przez dane wejściowe:
- Dane nie są umieszczone w tym samym miejscu co proces trenowania, co powoduje opóźnienia wejścia/wyjścia. Na przykład odczytywanie danych treningowych przez sieć może powodować opóźnienia wejścia/wyjścia.
- kosztowne wstępne przetwarzanie danych online, Rozważ jednorazowe wstępne przetwarzanie offline i zapisanie wyników.
- Nieumyślne bariery synchronizacji, które zakłócają wstępne pobieranie danych w potoku danych. Na przykład podczas synchronizowania danych między urządzeniem a hostem w klasie CommonLoopUtils.
W przypadku potoków zależnych od danych wejściowych proponujemy te działania:
- Instrument input pipeline to prefetch examples (for example, tf.data.Dataset.prefetch).
- Usuwaj nieużywane funkcje i metadane z każdego etapu procesu tak wcześnie, jak to możliwe.
- Zwiększ replikację liczby zadań generujących przykłady dla potoku wejściowego, np. za pomocą usługi tf.data.
Ocena skuteczności modelu
Podsumowanie: przeprowadzaj ocenę przy większych rozmiarach wsadu niż w przypadku trenowania. Przeprowadzaj oceny w regularnych odstępach kroków, a nie w regularnych odstępach czasu.
Ustawienia oceny
Aby ocenić skuteczność modeli, możesz użyć tych ustawień:
- Ocena online: zbieraj dane, gdy model generuje prognozy w środowisku produkcyjnym. Ocena online zwykle zapewnia najbardziej realistyczną ocenę jakości modelu, ponieważ jest zgodna ze sposobem, w jaki model będzie używany.
- Ocena offline: zbieraj dane, gdy model jest uruchamiany na zestawach treningowych, walidacyjnych lub testowych offline, które są reprezentatywne dla środowiska produkcyjnego. W zależności od problemu ocena offline może być dość złożona i wymagać dużych nakładów obliczeniowych.
- Okresowe oceny: zbieraj wskaźniki podczas trenowania modelu, które mogą być przybliżeniem oceny offline lub podzbiorem danych używanych w ocenie offline. Okresowe oceny są najbardziej praktycznym i ekonomicznym wyborem, ale mogą nie w pełni odzwierciedlać środowiska produkcyjnego. Staraj się używać szybkiego serwera proxy oceny offline, nie rezygnując z wiarygodności sygnału otrzymywanego podczas trenowania.
Konfigurowanie okresowych ocen
Zalecamy przeprowadzanie okresowych ocen podczas trenowania z tych powodów:
- Aby monitorować postępy trenowania w czasie rzeczywistym.
- Ułatwia to wybór punktu kontrolnego modelu z perspektywy czasu.
- Aby sprawdzić krzywe trenowania na końcu trenowania.
Najprostsza konfiguracja polega na przeprowadzaniu zarówno trenowania, jak i okresowych ocen na tej samej instancji obliczeniowej, okresowo przełączając się między trenowaniem a oceną. W takim przypadku rozmiar wsadu używanego do przeprowadzania ocen powinien być co najmniej tak duży jak rozmiar wsadu używanego do trenowania. Dzieje się tak, ponieważ podczas oceny nie musisz utrzymywać aktywacji modelu, co zmniejsza wymagania obliczeniowe na przykład.
Przeprowadzaj okresowe oceny w regularnych odstępach kroków, a nie w odstępach czasu. Ocena na podstawie przedziałów czasowych może utrudniać interpretację krzywych uczenia, zwłaszcza gdy proces uczenia może być przerywany, występują problemy z opóźnieniem sieci itp.
Okresowość w przypadku wskaźników walidacji i testowania (przy użyciu potasowanego podziału zbioru do trenowania, zbioru walidacyjnego i zbioru testowego) może wskazywać błędy implementacji, takie jak:
- Dane testowe nakładają się na dane treningowe.
- Dane treningowe nie są odpowiednio tasowane.
Regularne sprawdzanie w określonych odstępach czasu może ułatwić wykrywanie tych problemów.
Partie częściowe mogą wystąpić, gdy zbiory oceny nie są podzielne przez rozmiar partii. Upewnij się, że przykłady z wypełnieniem mają prawidłową wagę (tak jak w przypadku średniej ważonej przykładów obliczającej średnią stratę w partii), aby funkcja straty nie była przez nie obciążona. Zwykle można przypisać tym przykładom dopełnionym wagę 0.
Zapisuj wystarczającą ilość informacji na potrzeby każdej oceny, aby umożliwić analizę offline. Najlepiej zapisywać prognozy na podstawie wybranych pojedynczych przykładów, ponieważ mogą one być nieocenione podczas debugowania. Generowanie artefaktów, takich jak SavedModels, upraszcza doraźną kontrolę modelu po zakończeniu zadań oceny.
Wybieranie próbki do okresowej oceny
Zadanie okresowej oceny może nie działać wystarczająco szybko, aby w rozsądnym czasie obliczyć dane na podstawie pełnego zestawu oceny offline. Ten problem często wymaga próbkowania danych do okresowej oceny. Podczas tworzenia próbkowanego zbioru danych weź pod uwagę problemy z rozmiarem próbki i szczególne kwestie dotyczące niezrównoważonych zbiorów danych.
Rozmiar próbki
Sprawdź, czy skuteczność obliczona na podstawie próbkowanego zbioru danych używanego przez zadanie okresowe jest zgodna ze skutecznością w całym zbiorze danych do oceny offline. Oznacza to, że nie może występować rozbieżność między próbkowanym zbiorem danych a pełnym zbiorem danych.
Zbiór danych używany do okresowej oceny powinien spełniać te warunki:
- Jest wystarczająco mały, aby łatwo generować prognozy modelu w całości.
- Wystarczająco duży, aby można było wykonać obie te czynności:
- Dokładnie mierz ulepszenia modelu, czyli pomiary nie powinny być zniekształcone przez szum etykiet.
- umożliwiać przeprowadzenie wielu takich ocen w kolejnych próbach i nadal generować dokładne szacunki. Musi być wystarczająco duży, aby uniknąć adaptacyjnego „dopasowywania” do zbioru weryfikacyjnego w czasie, które nie uogólnia się na odłożony zbiór testowy. Jednak w praktyce rzadko stanowi to problem.
Niezrównoważone zbiory danych
W przypadku niezrównoważonych zbiorów danych skuteczność w przypadku rzadkich klas mniejszościowych jest często niepewna. W przypadku zbiorów danych z niewielką liczbą przykładów mniejszościowych rejestruj liczbę prawidłowo przewidzianych przykładów, aby uzyskać więcej informacji o poprawie dokładności. Na przykład poprawa czułości o 0,05 brzmi zachęcająco, ale czy nie wynikała ona tylko z tego, że jeden dodatkowy przykład został prawidłowo zaklasyfikowany?
Zapisywanie punktów kontrolnych i wybieranie najlepszego z nich
Podsumowanie: przeprowadź trenowanie przez określoną liczbę kroków i wstecznie wybierz najlepszy punkt kontrolny z tego procesu.
Większość platform deep learning obsługuje zapisywanie stanu modelu. Oznacza to, że bieżący stan modelu jest okresowo zapisywany na dysku. Checkpointing umożliwia odporność zadania trenowania na przerwy w działaniu instancji obliczeniowych. Najlepszy punkt kontrolny nie zawsze jest ostatnim, zwłaszcza gdy skuteczność zbioru weryfikacyjnego nie rośnie z czasem, ale waha się wokół określonej wartości.
Skonfiguruj potok, aby śledzić N najlepszych punktów kontrolnych zaobserwowanych do tej pory podczas trenowania. Na koniec trenowania wybór modelu oznacza po prostu wybranie najlepszego punktu kontrolnego. Takie podejście nazywamy retrospektywnym wyborem optymalnego punktu kontrolnego. Obsługa potencjalnego wczesnego zatrzymania zwykle nie jest konieczna, ponieważ wstępnie określasz budżet próbny i zachowujesz N najlepszych punktów kontrolnych, które zostały dotychczas zaobserwowane.
Konfigurowanie śledzenia eksperymentów
Podsumowanie: podczas śledzenia różnych eksperymentów śledź kilka podstawowych elementów, takich jak najlepsze wyniki punktu kontrolnego w badaniu i krótki opis badania.
Zalecamy śledzenie wyników eksperymentu w arkuszu kalkulacyjnym. Nasze arkusze kalkulacyjne często zawierają te kolumny:
- Nazwa badania
- Link do miejsca, w którym jest przechowywana konfiguracja badania.
- Notatki lub krótki opis badania.
- Liczba przeprowadzonych prób
- Skuteczność najlepszego punktu kontrolnego w badaniu na zbiorze danych do weryfikacji.
- Konkretne polecenia odtwarzania lub uwagi dotyczące zmian, które nie zostały przesłane, ale były niezbędne do rozpoczęcia trenowania.
Znajdź wygodny system śledzenia, który rejestruje co najmniej informacje wymienione powyżej. Nieśledzone eksperymenty są w zasadzie nieistotne.
Szczegóły implementacji normalizacji wsadowej
Podsumowanie: obecnie normalizację wsadową można często zastąpić normalizacją warstwową, ale w przypadkach, gdy nie jest to możliwe, przy zmianie rozmiaru partii lub liczby hostów pojawiają się pewne trudności.
Normalizacja wsadowa normalizuje aktywacje przy użyciu ich średniej i wariancji w bieżącej partii. Jednak w przypadku wielu urządzeń te statystyki różnią się na poszczególnych urządzeniach, chyba że zostaną wyraźnie zsynchronizowane. Niepotwierdzone raporty (głównie dotyczące ImageNet) wskazują, że obliczanie tych statystyk normalizujących przy użyciu tylko około 64 przykładów w praktyce sprawdza się lepiej. (Zobacz opis normalizacji Ghost Batch w artykule Train longer, generalize better: closing the generalization gap in large batch training of neural networks). Oddzielenie łącznego rozmiaru partii od liczby przykładów używanych do obliczania statystyk normalizacji partii jest szczególnie przydatne w przypadku porównywania rozmiarów partii.
Implementacje normalizacji wsadowej typu ghost nie zawsze prawidłowo obsługują przypadek, w którym wielkość wsadu na urządzenie jest większa niż wielkość wsadu wirtualnego. W takim przypadku musisz pobrać próbkę z grupy na każdym urządzeniu, aby uzyskać odpowiednią liczbę przykładów statystyk normalizacji wsadowej.
Wykładnicze średnie ruchome (EMA) używane w normalizacji wsadowej w trybie testowym są tylko kombinacją liniową statystyk trenowania. Dlatego wystarczy zsynchronizować te EMA przed zapisaniem ich w punktach kontrolnych. Jednak niektóre typowe implementacje normalizacji wsadowej nie synchronizują tych wykładniczych średnich ruchomych i zapisują tylko wykładniczą średnią ruchomą z pierwszego urządzenia.
Uwagi dotyczące potoków z wieloma hostami
Podsumowanie: w przypadku rejestrowania, ocen, generatorów liczb losowych, tworzenia punktów kontrolnych i dzielenia danych na fragmenty szkolenie na wielu hostach może bardzo łatwo wprowadzić błędy.
W przypadku potoków z wieloma hostami wykonaj te czynności:
- Upewnij się, że potok rejestruje i zapisuje punkty kontrolne tylko na jednym hoście.
- Synchronizuj statystyki normalizacji wsadowej między hostami przed oceną lub zapisywaniem punktów kontrolnych.
- Dziel pliki danych na hosty, ponieważ zwykle zwiększa to wydajność.
Krytyczne: upewnij się, że masz te same wartości początkowe generatora liczb losowych na wszystkich hostach (do inicjowania modelu) i różne wartości początkowe na wszystkich hostach (do tasowania i wstępnego przetwarzania danych). Dlatego pamiętaj, aby odpowiednio je oznaczyć.