08 · LLM · 4 min czytania · aktualizacja
Na czym polega pretrening LLM i ile danych oraz obliczeń wymaga?
W skrócie
Pretrening to pierwszy, najdroższy etap tworzenia LLM: model uczy się przewidywać następny token na bilionach tokenów tekstu, zdobywając ogólną wiedzę o języku.
Co to jest
Pretrening (trening wstępny) to etap, w którym model językowy uczy się od zera na ogromnym, nieoznaczonym korpusie tekstu — stronach internetowych, książkach, artykułach naukowych, kodzie. Zadaniem jest przewidywanie następnego tokenu. Wynikiem jest model bazowy (base model, foundation model), który zna język i dużo faktów, ale jeszcze nie jest asystentem wykonującym polecenia.
Pretrening pochłania zdecydowaną większość obliczeń potrzebnych do zbudowania LLM. Późniejsze etapy — dostrajanie na instrukcjach i uczenie z preferencji — są o rzędy wielkości tańsze, ale korzystają z wiedzy zdobytej tutaj.
Idea pochodzi z transfer learningu: najpierw naucz model ogólnych reprezentacji na dużych danych bez etykiet, potem dopasuj go do konkretnych zadań. Radford i in. (2018) pokazali, że taki generatywny pretrening transformera wyraźnie poprawia wyniki na wielu zadaniach rozumienia tekstu.
Mechanizm — dlaczego tak działa
Uczenie samonadzorowane. Etykietą dla każdego tokenu jest token następny, więc każdy tekst to gotowe dane treningowe. Usuwa to główne wąskie gardło klasycznego uczenia nadzorowanego — ręczne etykietowanie — i pozwala trenować na bilionach tokenów.
Dlaczego to uczy ogólnej wiedzy. Żeby przewidzieć dalszy ciąg przepisu, dowodu, rozmowy czy funkcji w Pythonie, model musi wewnętrznie modelować to, o czym jest tekst. Przy ogromnej różnorodności danych najtańszym sposobem na niską stratę jest nauczenie się wielu ogólnych umiejętności naraz. To one przenoszą się potem na zadania, których nikt jawnie nie trenował.
Prawa skalowania. Kaplan i in. (2020) zmierzyli, że strata maleje jak funkcja potęgowa liczby parametrów N, liczby tokenów D i mocy obliczeniowej C, przez wiele rzędów wielkości. Koszt treningu transformera to w przybliżeniu C ≈ 6·N·D operacji zmiennoprzecinkowych (2·N na przebieg w przód i 4·N na wsteczny, na każdy token). Hoffmann i in. (2022) poprawili te oszacowania: przy ustalonym budżecie obliczeń parametry i dane należy zwiększać mniej więcej proporcjonalnie, co daje około 20 tokenów na parametr. Ich model Chinchilla (70 mld parametrów, 1,4 bln tokenów) przewyższył czterokrotnie większy model Gopher trenowany przy podobnym koszcie.
Jakość danych jest równie ważna jak ilość. Surowy internet zawiera duplikaty, spam, szablony stron i treści niskiej jakości. Korpusy pretreningowe przechodzą deduplikację, filtrowanie językowe i jakościowe oraz usuwanie danych osobowych. Proporcje źródeł (ile kodu, ile tekstów naukowych, ile języków innych niż angielski) silnie wpływają na umiejętności modelu.
Ograniczenia. Model bazowy powiela wszystko, co jest w danych: błędy, uprzedzenia, nieaktualne fakty. Jego wiedza kończy się na dacie zebrania korpusu. Zbiory testowe mogą przeciec do danych treningowych (kontaminacja), co zawyża wyniki w benchmarkach.
Na przykładzie
GPT-3 miał 175 mld parametrów i był trenowany na 300 mld tokenów (Brown i in., 2020). Wzór C ≈ 6·N·D daje 6 · 175·10⁹ · 300·10⁹ ≈ 3,15·10²³ operacji — zgodnie z wartością podaną przez autorów. To tylko 1,7 tokenu na parametr, więc według Chinchilli model był „niedokarmiony” danymi: przy tym samym budżecie mniejszy model na większej liczbie tokenów osiągnąłby niższą stratę.
Dla modelu 7 mld parametrów reguła 20 tokenów na parametr daje 140 mld tokenów i około 5,9·10²¹ operacji. W praktyce trenuje się dłużej: Llama 2 7B widziała 2 bln tokenów (Touvron i in., 2023), czyli około 286 tokenów na parametr. Powód jest ekonomiczny — Chinchilla optymalizuje koszt treningu, a mały, „przetrenowany” model jest tańszy w codziennym używaniu przez miliony użytkowników.
W praktyce
- Pretrening od zera opłaca się nielicznym; zwykle bierze się gotowy model bazowy i go dostraja albo prowadzi dalszy pretrening na tekstach z własnej dziedziny.
- Przed treningiem zaplanuj budżet: C ≈ 6·N·D, podzielone przez faktyczną przepustowość sprzętu (zwykle 30–50% teoretycznej).
- Do eksperymentów w małej skali służą otwarte korpusy i biblioteki typu
transformerszTraineralbo minimalne implementacje GPT w PyTorch. - Najważniejsze dźwignie jakości: deduplikacja, filtrowanie, dobór proporcji źródeł i harmonogram współczynnika uczenia z rozgrzewką.
- Typowy błąd: ocena modelu na benchmarku, którego pytania trafiły do korpusu — sprawdzaj nakładanie się n-gramów.
Najczęstsze pytania
- Czym różni się pretrening od dostrajania?
- Pretrening uczy ogólnej wiedzy i języka na ogromnym korpusie bez etykiet. Dostrajanie bierze gotowy model i na znacznie mniejszym zbiorze uczy go konkretnego zachowania, np. wykonywania poleceń albo stylu odpowiedzi.
- Dlaczego pretrening jest taki drogi?
- Bo koszt rośnie z iloczynem rozmiaru modelu i liczby tokenów, a oba czynniki liczy się w miliardach. Trening dużego modelu zajmuje tysiące kart graficznych przez tygodnie lub miesiące.
- Czy więcej danych zawsze pomaga?
- Do pewnego stopnia tak, jeśli są dobrej jakości i niepowtarzalne. Wielokrotne powtarzanie tych samych danych daje malejące korzyści, a dane niskiej jakości mogą pogorszyć model.
Źródła
- Radford A. i in., 2018, „Improving Language Understanding by Generative Pre-Training”, raport techniczny OpenAI.
- Brown T. i in., 2020, „Language Models are Few-Shot Learners”, NeurIPS 2020.
- Kaplan J. i in., 2020, „Scaling Laws for Neural Language Models”, arXiv:2001.08361.
- Hoffmann J. i in., 2022, „Training Compute-Optimal Large Language Models”, NeurIPS 2022.
- Touvron H. i in., 2023, „Llama 2: Open Foundation and Fine-Tuned Chat Models”, arXiv:2307.09288.