Są 2 rodzaje zadań treningowych:
- powiązany z Compute
- bez mocy obliczeniowej
Trenowanie obliczone na podstawie obliczeń jest ograniczone przez ilość czasu, który możesz przeznaczyć na trening, a nie przez to, ile masz danych treningowych. Innymi słowy, „optymalny” czas trenowania jest zawsze „tak długo, jak jest go stać”. Jeśli możesz trenować dłużej lub wydajniej, utrata treningów powinna się zmniejszyć. (Prawidłowe dostrajanie również spowoduje utratę walidacji).
Szybsze trenowanie związane z obliczeniami jest równoważne ulepszeniu trenowania. To jednak nie znaczy, że trenowanie dłuższe i szybsze jest jedynym sposobem na poprawę wyników.
Gdy trenowanie nie jest ograniczone do mocy obliczeniowej, możesz sobie pozwolić na trenowanie tak długo, jak chcesz. Dłuższe trenowanie modelu może jednak nie pomóc wiele, a nawet spowodować przeciążenie. Gdy trenowanie nie jest ograniczone do mocy obliczeniowej:
- Można trenować bardzo mało trenowanie do poziomu, w którym dodatkowe trenowanie może lekko ograniczyć stratę podczas trenowania, ale nie zmniejsza znacząco straty podczas walidacji.
- Możesz dostosować to ustawienie, zwłaszcza w przypadku harmonogramu zmniejszania współczynnika uczenia się, ponieważ mają one silną interakcję z budżetem trenowania. Jeśli natomiast chodzi Ci o małą utratę trenowania podczas trenowania związanego z obliczaniem obliczeń, może Ci zależeć na dostosowaniu harmonogramu uczenia się do perfekcji.
Niezależnie od tego, czy dane zadanie jest ograniczone do mocy obliczeniowej, metody zwiększające wariancję gradientów (w grupach) zazwyczaj spowalniają trenowanie i dlatego mogą zwiększać liczbę kroków trenowania wymaganych do osiągnięcia konkretnej walidacji. Każdy z tych powodów może powodować wysoką wariancję gradientu:
- Użyj mniejszego rozmiaru wsadu.
- Dodaję dane.
- Dodanie określonych typów regularnej konserwacji (na przykład regularne usuwanie treści).
Określ, jak długo chcesz trenować, gdy trenowanie nie jest związane z mocą obliczeniową
Cel: wytrenowanie modelu na tyle długo, aby uzyskać najlepszy możliwy wynik bez marnowania kroków podczas trenowania.
Twoim głównym celem jest trenowanie wystarczająco długo, aby model osiągnął najlepszy możliwy wynik bez zbędnych kroków treningowych. W razie wątpliwości popełnić błąd, wydłużaj proces trenowania. Wskaźniki oceny (na przykład precyzyjne, czułości, AUC czy F1) nie powinny się zmniejszać podczas dłuższego trenowania, przy założeniu, że prawidłowo korzystasz z punktu widzenia stosowanego w punktach kontrolnych wstecznie i zbyt często dokonujesz oceny.
Nigdy nie zmieniaj numeru max_train_steps
w badaniu. Zamiast tego wybierz wartość i użyj tej samej wartości we wszystkich wersjach próbnych. Na podstawie tych etapów utwórz etap trenowania, który pozwala znaleźć najważniejszy punkt kontrolny w celu doprecyzowania wyboru max_train_steps
.
Jeśli na przykład najlepszy krok to zawsze pierwsze 10% treningu, maksymalna liczba kroków jest zbyt duża.
Jeśli najkorzystniejszym etapem było ostatnie 25% trenowania, najlepiej trenuj dłużej i pozbądź się rozkładu.
Idealna liczba etapów trenowania może się zmienić w przypadku zmiany architektury lub danych (np. dodania uzupełnienia danych).
W następnej sekcji opisujemy, jak wybrać początkową wartość dla kandydata max_train_steps
na podstawie liczby kroków niezbędnych do „idealnego dopasowania” zestawu treningowego ze stałą częstotliwością uczenia się.
W razie lepszego procesu trenowania może wystąpić zmniejszenie wartości max_train_steps
, np. dzięki lepszemu optymalizatorowi lub lepszemu harmonogramowi nauki.
Algorytm do wyboru początkowego kandydata na opcję max_train_steps za pomocą wyznaczania tempa nauki
Możesz wybrać wstępnego kandydata na użytkownika max_train_steps
z algorytmem wyznaczania tempa nauki. W poniższym algorytmie założono, że można nie tylko idealnie pasować do zbioru treningowego, ale także używać stałego harmonogramu uczenia się.
- Jeżeli istnieje możliwość idealnego dopasowania do całego zbioru treningowego, musi istnieć konfiguracja (o wartości
max_train_steps
) idealnie pasująca do tego zbioru. Znajdź taką konfigurację i użyj jej wartościmax_train_steps
jako punktu wyjściaN
. - Wykonuj regularne pomiary tempa nauki (czyli utrwalanie informacji w siatce podczas uczenia się) bez powiększania danych i bez regularności, gdzie każda wersja próbna trenuje tak, aby umożliwiała wykonywanie kroków
N
. Liczba kroków wymaganych do przeprowadzenia jak najszybszego okresu testowania w trakcie kursu edukacyjnego w celu osiągnięcia idealnej skuteczności trenowania powinna wynosić wstępny przypuszczenia dla użytkownikamax_train_steps
.
UWAGA: nieprawidłowe wyszukiwania mogą prowadzić do oszustwa.
Jeśli na przykład wszystkie wskaźniki uczenia się w badaniu są za małe, możesz błędnie uznać, że wymagana jest bardzo duża wartość max_train_steps
.
Upewnij się przynajmniej, że optymalny poziom uczenia się nie znajduje się na granicy przestrzeni wyszukiwania.
Określ, jak długo chcesz trenować, gdy trenowanie jest ograniczone do mocy obliczeniowej
W niektórych przypadkach utrata trenowania stale się powiększa, więc cierpliwość i zasoby obliczeniowe stają się czynnikami ograniczającymi. Ale czy szkolenie jest możliwe, jeśli można sobie pozwolić na taki krok? Niekoniecznie. Weź pod uwagę następujące kwestie:
- Możesz zwiększyć skuteczność, przeprowadzając większą liczbę krótszych eksperymentów i zapisując najdłuższe cykle produkcji dla oczekiwanych modeli.
- Ponieważ czas trenowania w przypadku prób zbliża się do limitu cierpliwości, eksperymenty dopasowują się do potencjalnych kandydatów, ale można wykonać ich mniej.
- Zapewne odpowiesz na wiele pytań, ale trenujesz tylko ok. 10% długości produkcji. Wnioski z tego limitu mogą jednak nie mieć zastosowania w przypadku eksperymentów obejmujących 20% długości produkcji, a nawet 100%.
Dobrym rozwiązaniem jest stopniowe wprowadzanie zmian podczas wielu rund z rosnącymi limitami kroków treningowych. Możesz prowadzić dowolną liczbę rund, ale zazwyczaj 1–3. Zasadniczo staraj się jak najszybciej zrozumieć działanie problemu, wykorzystując do tego bardzo krótkie terminy. Wymień:
- Szczegółowość dostrajania.
- Trafność względem ostatnich, najdłuższych uruchomień.
Gdy po upływie określonego okresu próbnego wygenerujesz przydatne statystyki, zwiększ czas trenowania i nadal doprecyzuj wnioski, biorąc pod uwagę krótsze biegi. Na początek zalecamy 2 rundy dostrajania:
- Runda 1. Krótszy czas trwania zapewnia znalezienie dobrych hiperparametrów modelu i optymalizatora.
- Runda 2: bardzo mało czasu trwania działa w przypadku dobrych punktów hiperparametrów, aby uzyskać ostateczny model.
Najważniejsze pytanie od rundy 1 do 2:
Jak dostosować harmonogram rozkładu uczenia się?
Jednym z częstych problemów z dostosowaniem harmonogramów rozmów między kolejnymi rundami jest wykorzystanie zbyt wielu dodatkowych etapów trenowania.
Runda 1. Dużo krótkich treningów
Niestety nie ma gwarancji, że dobre parametry hiperparametrów zostaną znalezione podczas krótkich, niepełnych treningów, a jednocześnie znacznie wydłużysz ich długość. Jednak w przypadku niektórych hiperparametrów dobry wybór jest często skorelowany wystarczająco do zastosowania w pierwszej turze. Które wartości hiperparametrów zostały przeniesione do krótszych uruchomień? Nie wiemy; potrzebujemy więcej informacji. Na podstawie dotychczasowych danych wiemy, że istnieje mniejsze prawdopodobieństwo przeniesienia:
- Bardzo prawdopodobne, że zostaną przeniesione. Niestabilność wczesnego treningu można rozwiązać w pierwszej rundzie dostrajania przy użyciu mniejszej liczby etapów trenowania.
Największe prawdopodobieństwo przeniesienia tych hiperparametrów:
- Długość rozgrzewki
- Zdarzenie inicjujące
- Prawdopodobnie przeniesiemy. Duże zwycięstwa w architekturze modeli przeważnie są przenoszone, ale istnieje wiele kontrprzykładów.
- Możliwe przeniesienie: Te hiperparametry mogą przenieść:
- Algorytm optymalizacji i hiperparametry zostaną „luźno” przeniesione.
- Zwiększenie ilości danych.
- Regularyzacja. Jeśli nie uda się dokładnie dopasować zbioru treningowego do modelu, jego regularność może nie być zbyt pomocna.
- Prawdopodobnie nie zostaną przeniesione. Harmonogram tempa nauki nie jest idealny do przeniesienia. Trenowanie optymalnego modelu dużego języka sugeruje, że nawet rozkład rozkładu w ciągu tygodnia spada, ale nie uważamy, że to prawda. Na przykład strój na moduł sqrt z małą liczbą kroków treningowych, a później rozciągający się na dużą liczbę spowoduje, że trenowanie będzie miało miejsce w przypadku zbyt małych kroków. W przypadku większości harmonogramów w ramach ograniczonego budżetu na ekstremalne spotkania prawdopodobnie uzyskasz „dobre wyniki”, ale jeśli go poprawisz, prawdopodobnie zauważysz poprawę skuteczności. Interpretacja krótkich tendencyjności algorytmów Stochastic w narzędziu Meta-optymalizacja Meta opisuje niebezpieczeństwa wyboru współczynników uczenia się w sposóboptyczny.
Runda 2: mniej biegów, ale dłuższy czas
Uruchom najlepszą konfigurację hiperparametru z rundy 1.
spekulacji: 🤖 Użyj dodatkowych kroków, aby przedłużyć okres nauki z dużą częstotliwością. Jeśli np. stosujesz harmonogram liniowy, zachowaj stałą wartość spadku dla 1. grupy i przedłuż okres stałego lr
na początku. W przypadku rozkładu cosinusa utrzymuj podstawę lr
z rundy 1 i rozszerzaj max_train_steps
zgodnie z opisem w trenowaniu optymalnych dużych języków.
Dodatkowe rundy treningowe mogą być przydatne dla zespołów, które:
- Bardzo dojrzałe modelowanie
- Dostrajanie potoków
- Bardzo długie i drogie szkolenia produkcyjne
Dodatkowe trenowanie często jest jednak bezproduktywne.
Opisaliśmy już przenoszenie między rundą 1 a 2. Jeśli nie zależy Ci na czasie i masz do dyspozycji efektywne wykorzystanie zasobów obliczeniowych, zalecamy stopniowe wydłużanie czasu trenowania (a tym samym zakończenia całego badania) w wielu fazach nauki:
- W każdej rundzie systematycznie dbaj o to, aby wybrane ustawienia przynosiły dobre wyniki.
- Wprowadzaj nowe pomysły w potoku, który stopniowo stopniowo odsuwa ich od siebie na podstawie stale trwających eksperymentów z kroku i do kroku i+1.