Określanie liczby kroków dla każdego przebiegu trenowania

Istnieją 2 rodzaje zadań trenowania:

  • zależne od mocy obliczeniowej,
  • nie jest ograniczona przez moc obliczeniową,

Trenowanie ograniczone mocą obliczeniową jest ograniczone czasem, jaki możesz poświęcić na trenowanie, a nie ilością danych treningowych ani innymi czynnikami. Innymi słowy, „optymalny” czas trenowania to zawsze „tak długo, jak możesz sobie na to pozwolić”. Jeśli uda Ci się trenować dłużej lub wydajniej, strata trenowania powinna się zmniejszyć. (Przy odpowiednim dostrajaniu powinna też maleć strata weryfikacyjna).

Przyspieszenie trenowania ograniczonego przez moc obliczeniową jest równoznaczne z ulepszaniem trenowania. To prawda, że jeśli obciążenie jest ograniczone przez moc obliczeniową, dłuższe lub szybsze trenowanie nie jest jedynym sposobem na poprawę wyników.

Jeśli trenowanie nie jest ograniczone mocą obliczeniową, możesz trenować tak długo, jak chcesz. Jednak dłuższe trenowanie modelu może nie przynieść większych korzyści lub może nawet spowodować przetrenowanie. Gdy trenowanie nie jest ograniczone przez moc obliczeniową:

  • Możesz trenować model, aż osiągniesz bardzo niską stratę trenowania, do momentu, w którym dodatkowe trenowanie może nieznacznie zmniejszyć stratę trenowania, ale nie zmniejszy znacząco straty weryfikacji.
  • Możesz łatwiej dostrajać modele, zwłaszcza gdy dostrajasz harmonogramy zmniejszania współczynnika uczenia się, ponieważ mają one szczególnie silną interakcję z budżetem trenowania. Z kolei uzyskanie niskiej utraty trenowania w przypadku trenowania ograniczonego przez moc obliczeniową może wymagać idealnie dostrojonego harmonogramu zmniejszania szybkości uczenia się.

Niezależnie od tego, czy dany zbiór zadań jest ograniczony przez moc obliczeniową, metody zwiększające wariancję gradientów (w przypadku poszczególnych partii) zwykle spowalniają postęp trenowania, a tym samym mogą zwiększać liczbę kroków trenowania wymaganych do osiągnięcia określonej wartości funkcji straty weryfikacji. Wysoką wariancję gradientu mogą powodować te czynniki:

  • używać mniejszych partii;
  • Dodawanie rozszerzania danych.
  • Dodanie niektórych typów regularyzacji (np. regularyzacji przez wyłączanie).

Określanie czasu trenowania, gdy trenowanie nie jest ograniczone przez moc obliczeniową

Cel: trenuj model wystarczająco długo, aby osiągnąć najlepszy możliwy wynik, nie marnując przy tym kroków treningowych.

Twoim głównym celem jest zapewnienie wystarczająco długiego trenowania, aby model osiągnął najlepszy możliwy wynik bez marnowania niepotrzebnych kroków trenowania. Jeśli masz wątpliwości, lepiej trenuj dłużej. Wskaźniki oceny (np. precyzja, czułość, AUC lub F1) nigdy nie powinny się pogarszać podczas dłuższego trenowania, pod warunkiem że prawidłowo używasz retrospektywnego wyboru punktu kontrolnego i wystarczająco często tworzysz punkty kontrolne.

Nigdy nie dostosowuj liczby max_train_steps w badaniu. Zamiast tego wybierz wartość i używaj jej w przypadku wszystkich testów. Na podstawie tych prób wykreśl krok trenowania, który został znaleziony przez retrospektywne wybieranie punktów kontrolnych, aby doprecyzować wybór wartości max_train_steps.

Jeśli np. najlepszy krok zawsze występuje w pierwszych 10% treningu, maksymalna liczba kroków jest zdecydowanie za wysoka. Jeśli najlepszy krok jest stale w ostatnich 25% trenowania, warto trenować dłużej i ponownie dostroić harmonogram zmniejszania. Idealna liczba kroków trenowania może się zmienić, gdy zmieni się architektura lub dane (np. po dodaniu rozszerzania danych). W następnej sekcji opisujemy, jak wybrać początkową wartość kandydata dla parametru max_train_steps na podstawie liczby kroków niezbędnych do „idealnego dopasowania” zbioru treningowego przy użyciu stałej szybkości uczenia się.

Wartość max_train_steps można zmniejszyć, jeśli proces trenowania zostanie w jakiś sposób ulepszony, np. dzięki lepiej dostrojonemu optymalizatorowi lub lepiej dostrojonemu harmonogramowi szybkości uczenia się.

Algorytm wyboru początkowego kandydata na potrzeby parametru max_train_steps za pomocą zakresu szybkości uczenia się

Możesz wybrać początkową wartość parametru max_train_steps za pomocą algorytmu sprawdzania zakresu tempa uczenia się. Poniższy algorytm zakłada, że można nie tylko „idealnie” dopasować zbiór treningowy, ale też zrobić to przy użyciu stałego harmonogramu współczynnika uczenia się.

  1. Jeśli można idealnie dopasować cały zbiór treningowy, musi istnieć konfiguracja (z pewną wartością max_train_steps), która idealnie pasuje do zbioru treningowego. Znajdź taką konfigurację i użyj jej wartości max_train_steps jako punktu wyjścia N.
  2. Przeprowadź test stałej szybkości uczenia się (czyli wyszukiwanie siatkowe szybkości uczenia się) bez rozszerzania danych i bez regularyzacji, w którym każdy test trenuje przez N kroków. Liczba kroków potrzebnych do osiągnięcia doskonałej skuteczności trenowania w przypadku najszybszej próby w zakresie szybkości uczenia się powinna być początkowym oszacowaniem wartości max_train_steps.

UWAGA: nieodpowiednie przestrzenie wyszukiwania mogą prowadzić do oszukiwania samego siebie. Jeśli na przykład wszystkie współczynniki uczenia w badaniu są zbyt małe, możesz błędnie wywnioskować, że konieczna jest bardzo duża wartość max_train_steps. Sprawdź przynajmniej, czy optymalna szybkość uczenia się w badaniu nie znajduje się na granicy przestrzeni wyszukiwania.

Określanie czasu trenowania w przypadku trenowania ograniczonego przez moc obliczeniową

W niektórych przypadkach utrata podczas trenowania stale się zmniejsza, więc czynnikiem ograniczającym stają się Twoja cierpliwość i zasoby obliczeniowe. Czy jednak warto trenować tak długo, jak to możliwe? Niekoniecznie. Weź pod uwagę następujące kwestie:

  • Możesz skuteczniej dostrajać modele, przeprowadzając większą liczbę krótszych eksperymentów i rezerwując najdłuższe uruchomienia „o długości produkcyjnej” dla modeli, które chcesz wdrożyć.
  • Gdy czas trenowania wersji próbnych zbliża się do granicy Twojej cierpliwości, eksperymenty dotyczące dostrajania stają się bardziej istotne w przypadku potencjalnych kandydatów do wdrożenia, ale możesz przeprowadzić ich mniej.
  • Na wiele pytań można prawdopodobnie odpowiedzieć, trenując model przez około 10% czasu potrzebnego do uzyskania wersji produkcyjnej. Wnioski wyciągnięte w tym czasie mogą jednak nie mieć zastosowania do eksperymentów trwających 20% czasu produkcji, a tym bardziej 100%.

Dostrajanie w wielu rundach ze zwiększającymi się limitami kroków trenowania w każdej próbie to rozsądne podejście. Możesz przeprowadzić dowolną liczbę rund, ale zwykle najbardziej praktyczne są 1–3 rundy. Spróbuj jak najlepiej zrozumieć problem, przeprowadzając testy z bardzo krótkim czasem realizacji, uwzględniając te czynniki:

  • Dokładność dostrajania.
  • trafność w przypadku ostatnich, najdłuższych biegów;

Gdy dany limit czasu na test wygeneruje przydatne statystyki, wydłuż czas trenowania i kontynuuj dostrajanie, w razie potrzeby sprawdzając wnioski z krótszych przebiegów. Na początek zalecamy przeprowadzenie 2 rund dostrajania:

  • Runda 1. Krótsze uruchomienia, aby znaleźć dobre hiperparametry modelu i optymalizatora.
  • Etap 2. Bardzo niewiele długich serii na dobrych punktach hiperparametrów, aby uzyskać model końcowy.

Najważniejsze pytanie, które pojawia się po zakończeniu 1 rundy, to:

Jak dostosować harmonogramy zaniku współczynnika uczenia się.

Jednym z częstych błędów przy dostosowywaniu harmonogramów szybkości uczenia się między rundami jest wykorzystywanie wszystkich dodatkowych kroków trenowania ze zbyt małą szybkością uczenia się.

Runda 1: wiele krótkich treningów

Niestety nie ma gwarancji, że dobre hiperparametry znalezione podczas krótkiego, niepełnego trenowania będą nadal dobrym wyborem, gdy znacznie zwiększysz długość trenowania. W przypadku niektórych hiperparametrów dobre wybory są jednak często wystarczająco skorelowane, aby runda 1 była przydatna. Jakie wartości hiperparametrów znalezione w krótszych przebiegach można z powodzeniem przenieść do dłuższych przebiegów trenowania? Nie wiemy, potrzebujemy więcej badań. Na podstawie tego, co wiemy do tej pory, podejrzewamy, że prawdopodobieństwo przeniesienia jest następujące (od największego do najmniejszego):

  • Bardzo prawdopodobne przeniesienie. Wczesną niestabilność trenowania można rozwiązać w pierwszej rundzie dostrajania, używając mniejszej liczby kroków trenowania. Te hiperparametry najprawdopodobniej zostaną przeniesione:
    • Długość rozgrzewki
    • Zdarzenie inicjujące
  • Prawdopodobnie przeniesie Znaczący wzrost skuteczności architektury modelu zwykle się przenosi, ale prawdopodobne jest wiele kontrprzykładów.
  • Może przenieść. Te hiperparametry mogą zostać przeniesione:
    • Algorytm optymalizacji i hiperparametry zostaną „luźno” przeniesione.
    • Rozszerzanie danych.
    • Regularyzacja. Jeśli nie można idealnie dopasować zbioru treningowego, model może znajdować się w zakresie, w którym regularyzacja prawdopodobnie nie pomoże.
  • Małe prawdopodobieństwo przeniesienia. Harmonogram współczynnika uczenia prawdopodobnie nie zostanie przeniesiony w pełni. W artykule Training Compute-Optimal Large Language Models sugeruje się, że można przenosić nawet harmonogramy zaniku, ale nie uważamy, że jest to ogólnie prawdziwe. Na przykład dostrajanie pierwiastkowego rozkładu na małej liczbie kroków trenowania, a następnie rozszerzanie go na dużą liczbę kroków powoduje, że większość trenowania odbywa się na zbyt małych krokach. W większości przypadków możesz uzyskać „wystarczająco dobre” wyniki przy większości harmonogramów w ramach ekstremalnego budżetu na trenowanie, ale jeśli dostosujesz harmonogram, prawdopodobnie zauważysz znaczną poprawę skuteczności. W artykule Understanding Short-Horizon Bias in Stochastic Meta-Optimization opisano zagrożenia związane z próbą krótkowzrocznego wyboru szybkości uczenia się.

Runda 2: mniej przejazdów, ale dłuższych

Uruchom najlepszą konfigurację hiperparametrów z rundy 1.

Spekulacja: 🤖 użyj dodatkowych kroków, aby wydłużyć okres trenowania przy wysokim tempie uczenia się. Jeśli na przykład używasz harmonogramu liniowego, zachowaj stałą długość zanikania od rundy 1 i wydłuż okres stałej wartości lr na początku. W przypadku zaniku kosinusowego zachowaj wartość bazową lrz rundy 1 i wydłuż max_train_steps zgodnie z opisem w artykule Training Compute-Optimal Large Language Models.

Dodatkowe rundy szkoleniowe mogą być przydatne w przypadku zespołów, które spełniają wszystkie te warunki:

  • Bardzo dojrzałe modelowanie
  • Potoki dostrajania
  • Bardzo długie i kosztowne sesje trenowania produkcyjnego

Dodatkowe uruchomienia trenowania są jednak często nieproduktywne.

Opisaliśmy już, jak przejść z Rundy 1 do Rundy 2. Jeśli nie zależy Ci na czasie analizy, a najważniejsze jest dla Ciebie efektywne wykorzystanie zasobów obliczeniowych, zalecamy wykładnicze zwiększanie długości serii treningowych (a tym samym czasu potrzebnego na ukończenie badania) w wielu różnych rundach dostrajania:

  • W każdej rundzie systematycznie sprawdzaj, czy Twoje wybory nadal przynoszą dobre wyniki.
  • Wprowadzaj nowe pomysły w procesie, który stopniowo zmniejsza ryzyko związane z nimi, przeprowadzając coraz dłuższe eksperymenty od kroku i do kroku i+1.