Ta sekcja zawiera szczegóły potoku trenowania.
Optymalizacja potoku wejściowego
Podsumowanie: przyczyny i interwencje potoków powiązanych z danymi w dużym stopniu zależą od zadań. Użyj programu profilującego i rozwiązuj typowe problemy.
Skorzystaj z odpowiedniego narzędzia profilującego, takiego jak jeden z poniższych, aby zdiagnozować potoki wejściowe wejściowe:
- Perfetto dla języka JAX
- Profil profiler TensorFlow.
W rzeczywistości konkretne przyczyny i interwencje w dużym stopniu zależą od zadań. Szersze kwestie inżynieryjne (na przykład minimalizowanie ilości miejsca na dysku) mogą negatywnie wpływać na wydajność potoku wejściowego.
Oto typowe przyczyny potoków związanych z danymi wejściowymi:
- Dane nie są kolokowane w ramach procesu trenowania, co powoduje opóźnienia wejścia/wyjścia. Na przykład odczytywanie danych treningowych w sieci może powodować opóźnienia wejścia/wyjścia.
- Wysokie koszty wstępnego przetwarzania danych online. Rozważ wstępne przetworzenie raz offline i zapisanie wyników.
- Niezamierzone bariery synchronizacji, które zakłócają wstępne pobieranie potoku danych. na przykład podczas synchronizowania danych między urządzeniem a hostem w CommonLoopUtils.
Sugerujemy te interwencje dotyczące potoków związanych z danymi wejściowymi:
- Przygotować potok danych wejściowych z pobieraniem przykładów (np. tf.data.dataset.prefetch).
- Usuń z niego niewykorzystane funkcje i metadane jak najszybciej.
- Zwiększ replikację liczby zadań generujących przykłady dla wejściowego potoku, na przykład przy użyciu usługi tf.data.
Ocena wydajności modelu
Podsumowanie: przeprowadzaj ocenę w większych rozmiarach partii niż trenowanie. Przeprowadzaj oceny w regularnych odstępach czasu, a nie w regularnych odstępach czasu.
Ustawienia oceny
Do oceny wydajności modeli możesz używać tych ustawień:
- Ocena online: zbieranie danych, gdy model obsługuje prognozy w środowisku produkcyjnym. Ocena online zapewnia zazwyczaj najbardziej realistyczną ocenę jakości modelu, ponieważ pasuje do jego zastosowania.
- Ocena offline: zbieraj dane, gdy model zostanie uruchomiony podczas trenowania offline, walidacji lub zbiorów testowych reprezentujących środowisko produkcyjne. W zależności od problemu ocena offline może być dość skomplikowana i obliczana komputerowo.
- Oceny okresowe: zbieranie danych podczas trenowania modelu, które mogą być pośrednikiem do oceny offline lub do podzbioru danych używanych do oceny offline. Ocena okresowa jest najbardziej praktycznym i ekonomicznym rozwiązaniem, ale może nie odzwierciedlać w pełni środowiska produkcyjnego. Staraj się korzystać z wygodnego serwera proxy do oceny offline bez szkody dla niezawodności sygnału uzyskanego podczas trenowania.
Konfigurowanie ocen okresowych
Zalecamy przeprowadzanie okresowych ocen podczas trenowania z tych powodów:
- Monitorowanie postępów trenowania w czasie rzeczywistym
- Aby ułatwić wybór punktu kontrolnego modelu wstecznego.
- Aby sprawdzić krzywe trenowania na końcu trenowania.
Najprostsza konfiguracja polega na przeprowadzaniu zarówno oceny trenowania, jak i okresowego w tej samej instancji obliczeniowej, okresowo między ustawieniami trenowania i oceny. W tym przypadku rozmiar wsadu użyty do oceny powinien być co najmniej tak duży, jak rozmiar wsadu używany do trenowania. Dzieje się tak, ponieważ podczas oceny nie musisz utrzymywać aktywacji modelu, co zmniejsza wymagania obliczeniowe na przykład.
Przeprowadzaj oceny okresowe w regularnych odstępach czasu, a nie w odstępach czasowych. Ocena na podstawie interwałów czasu może utrudnić interpretację krzywych trenowania, szczególnie jeśli trenowanie może być skutkujące prewencją przerwania zadań treningowych, problemami z opóźnieniami w sieci itd.
Okresowość w weryfikowaniu i danych testowych (jeśli używasz tasowanego zestawu treningowego, zbioru do weryfikacji lub podziału zbioru testów) może wskazywać na błędy wdrożenia, takie jak:
- Testowe dane nakładają się na dane treningowe.
- Dane treningowe nie są prawidłowo tasowane.
Ocena w regularnych odstępach czasu może ułatwić wychwycenie tych problemów.
Częściowe partie mogą wystąpić, gdy zbiory oceny nie są podzielone przez rozmiar grupy. Sprawdź, czy dopełnione przykłady są prawidłowo ważone (jak w przypadku średniej ważonej względem przykładów obliczających średnią stratę wsadową), aby zapobiec odchyleniu przez funkcję straty. Często dopełnienie tych przykładów może mieć wagę zero.
Zapisz wystarczającą ilość danych podczas każdej oceny, aby ułatwić analizę offline. Najlepiej jest zapisywać prognozy na wybranych fragmentach, ponieważ mogą być bezcenne podczas debugowania. Generowanie artefaktów, takich jak SavedModels, upraszcza inspekcję modelu doraźnego po zakończeniu zadań oceny.
Wybór próbki do okresowej oceny
Zadanie okresowe może nie działać wystarczająco szybko, aby obliczyć wskaźniki dla pełnej oceny offline skonfigurowanej w rozsądnym czasie. Ten problem często wymaga okresowej oceny danych próbkowania. Podczas tworzenia próbkowanego zbioru danych weź pod uwagę problemy z rozmiarem próbki i problemy dotyczące niezrównoważonych zbiorów danych.
Rozmiar próbki
Sprawdź, czy wydajność obliczona na podstawie próbkowanego zbioru danych używanego przez zadanie okresowe odpowiada skuteczności całego zbioru offline; tzn. upewnij się, że nie występuje odkształcenie między zbiorem danych z próbki i całego zbioru danych.
Zbiór danych używany do okresowej oceny powinien spełniać oba te warunki:
- Wystarczająco dobry, aby łatwo generować prognozy modelu w całości.
- Wystarczająco duża, aby wykonać obie te czynności:
- Dokładnie mierz ulepszenia modelu, to znaczy, że pomiary nie powinny być przytłoczone szumem etykiet.
- Przeprowadzaj kolejno takie testy w określonych odstępach czasu i nadal twórz dokładne szacunki. Oznacza to, że można z czasem dołączyć do zestawu weryfikacji w sposób, który nie jest uogólniony. Nie jest to jednak praktyczne obawy.
Niezrównoważone zbiory danych
W przypadku niezrównoważonych zbiorów danych wydajność w rzadkich klasach mniejszościowych jest często głośna. W przypadku zbiorów danych, które obejmują tylko niewielką liczbę przykładów mniejszości, zarejestruj poprawnie liczbę przykładów, aby uzyskać lepszy wgląd w dokładność danych. Na przykład poprawa czułości wykrywania 0,05 wydaje się ekscytująca, ale czy poprawa nastąpiła tylko z powodu poprawności pozostałego przykładu?
Zapisywanie punktów kontrolnych i poprzednie wybieranie najlepszego punktu kontrolnego
Podsumowanie: trenuj stałą liczbę kroków i zwróć uwagę na najlepszy punkt początkowy.
Większość platform do deep learningu obsługuje punkty kontrolne. Oznacza to, że bieżący stan modelu jest okresowo zapisywany na dysku. Punkt kontrolny sprawia, że zadanie trenowania jest odporne na przetwarzanie przerw w działaniu instancji. Najlepszy punkt kontroli często nie jest ostatnim punktem kontrolnym, zwłaszcza w przypadku, gdy wydajność zbioru weryfikacji nie zwiększa się z upływem czasu, ale raczej zależy od konkretnej wartości.
Skonfiguruj potok, aby śledzić N najlepszych punktów kontrolnych widocznych do tej pory podczas trenowania. Po zakończeniu trenowania wybór modelu oznacza po prostu wybranie najlepszego punktu kontrolnego. Ta metoda nosi nazwę optymalnego punktu styczności z klientem. Wspieranie potencjalnego wczesnego zatrzymania zwykle nie jest konieczne, ponieważ wstępnie określa się budżet próbny i dotychczas zachowano N najlepszych punktów kontrolnych.
Konfiguracja śledzenia eksperymentu
Podsumowanie: w przypadku śledzenia różnych eksperymentów śledź ich podstawowe aspekty, takie jak najlepsza skuteczność punktu kontrolnego w badaniu oraz 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.
- Uwagi lub krótki opis badania.
- Liczba uruchomionych prób
- Skuteczność dotycząca zbioru weryfikacji najlepszego punktu kontrolnego w badaniu.
- Konkretne polecenia odtworzenia lub uwagi dotyczące nieprzesłanych zmian były konieczne do uruchomienia trenowania.
Znajdź wygodny system śledzenia, który zbiera co najmniej informacje wymienione powyżej. Śledzone eksperymenty mogą już nie istnieć.
Szczegóły implementacji normalizacji zbiorczej
Obecnie: często można zastąpić znormalizowaną grupę funkcją LayerNorm, ale jeśli nie można przeprowadzić takiej zmiany, zmiana rozmiaru lub liczby hostów będzie skomplikowana.
Normalizacja wsadowa normalizuje aktywacje, wykorzystując ich średnią i wariancję w porównaniu z bieżącą wsadem. W przypadku ustawienia na wielu urządzeniach statystyki te mogą jednak być inne na każdym z nich, chyba że zostanie on zsynchronizowany. Historyczne raporty (przeważnie w usłudze ImageNet) wskazują, że obliczenie tych znormalizowanych statystyk przy użyciu ok. 64 przykładów faktycznie działa lepiej w praktyce. (Opis tego działania znajdziesz w artykule Dłuższe trenowanie, ogólnie uogólnianie: wyeliminowanie luki w uogólnianiu podczas dużego trenowania grup neuronowych). Rozdzielenie całkowitego rozmiaru wsadu i liczby przykładów używanych do obliczania statystyk norm zbiorczych jest szczególnie przydatne w przypadku porównań wielkości zbiorczych.
Implementacje normalizacji widmowej widmo nie zawsze dobrze sprawdzają się w przypadku, gdy rozmiar wsadu na urządzenie jest większy niż wirtualny rozmiar grupy. W takim przypadku konieczne będzie podpróbkowanie grupy na każdym urządzeniu, aby uzyskać poprawną liczbę przykładów statystyk dotyczących norm zbiorczych.
Wykładnicze średnie kroczące (EMA) używane podczas normalizacji wsadowej w trybie testowym to tylko liniowa kombinacja statystyk trenowania. Dlatego musisz je zsynchronizować tylko przed zapisaniem w punktach kontrolnych. Niektóre typowe implementacje normalizacji zbiorczej nie synchronizują jednak tych EMA i zapisują EMA tylko z pierwszego urządzenia.
Uwagi dotyczące potoków z wieloma hostami
Podsumowanie: do logowania, oceny, generatorów liczb kontrolnych, punktów kontrolnych i fragmentacji danych funkcja trenowania z wieloma hostami może bardzo łatwo wprowadzać błędy.
W przypadku potoków z wieloma hostami wykonaj te czynności:
- Sprawdź, czy potok jest logowany i kontrolny w przypadku jednego hosta.
- Synchronizuj statystyki normalizacji wsadowej między hostami przed dokonaniem oceny lub punktem kontrolnym.
- Fragmentowanie plików danych między hostami, ponieważ zazwyczaj poprawia to wydajność.
Krytyczne: upewnij się, że w przypadku hostów (z inicjacji modelu) są takie same sygnały RNG, które są takie same (na potrzeby tasowania lub wstępnego przetwarzania danych). Dlatego należy je odpowiednio oznaczyć.