Strona główna / Rozdział 2 · Skąd model wie to, co wie
Ostatnia zmiana · 8 min czytania
Fine-tuning i LoRA
Fine-tuning to dalszy trening gotowego modelu na twoich przykładach: dobrze zmienia to, jak model odpowiada, a słabo to, co wie. LoRA robi to tanio, bo zamraża model i trenuje małą poprawkę, często poniżej 1% wag.
Po ludzkuFine-tuning to szkolenie stanowiskowe doświadczonego pracownika. Po nim pisze w firmowym formacie i tonie, ale cennika na pamięć nie wykuje, od tego jest segregator na biurku, czyli RAG. LoRA to poprawki na przezroczystej folii nałożonej na podręcznik: oryginał zostaje nietknięty, a folię można zdjąć albo podmienić na inną.
Wybierz problem i zobacz, od którego szczebla zacząć
Co fine-tuning zmienia, a czego nie
- Fine-tuning przesuwa wagi tak, żeby odpowiedzi przypominały twoje przykłady. Najlepiej uczy tego, co widać w każdej odpowiedzi: formatu, stylu i tonu, stałego zachowania (kiedy dopytać, kiedy odmówić) i wąskiej umiejętności, takiej jak klasyfikacja czy wyciąganie pól z dokumentu. Przenosi też zachowanie dużego modelu w jednym zadaniu do mniejszego, tańszego i szybszego, trenowanego na odpowiedziach dużego (temat „Destylacja”).
- Fakty wchodzą w wagi słabo i ryzykownie. Gekhman i in. (2024): model uczy się przykładów z wiedzą, której nie znał, wolniej niż pozostałych, a w miarę jak je opanowuje, jego skłonność do halucynacji rośnie liniowo. Ovadia i in. (2023): RAG wygrywał z douczaniem na surowym tekście, i dla wiedzy znanej, i dla nowej. Fakt w wagach nie ma też źródła i nie da się go poprawić bez kolejnego treningu.
- Kolejność: prompt i kontekst (instrukcje, przykłady, structured output), potem RAG dla wiedzy (temat „RAG”), fine-tuning na końcu. Prompt zmieniasz w minutę, RAG aktualizujesz, dodając dokument, a fine-tuning to dane, trening, ewaluacje i nowy model do utrzymania. Sięgasz po niego, gdy dopracowany prompt wciąż nie przechodzi ewaluacji albo gdy długi prompt z przykładami jest za drogi przy twoim wolumenie.
Rodzaje fine-tuningu i gdzie trenować
- SFT (supervised fine-tuning): pary wejście → wzorcowa odpowiedź. Strata liczona tylko na tokenach odpowiedzi, jak w etapie SFT z tematu „Trening”, ale na twoich przykładach. Model naśladuje wzorce, więc ich jakość wyznacza sufit.
- Preference tuning, np. DPO (Rafailov i in., 2023): pary „lepsza i gorsza odpowiedź” na ten sam prompt. Model podnosi prawdopodobieństwo lepszej względem gorszej, bez osobnego modelu nagrody i bez pętli RL. Sprawdza się w uczeniu tonu i tego, czego model ma unikać, bo różnicę łatwiej pokazać, niż napisać idealny wzorzec.
- Reinforcement fine-tuning: model sam generuje odpowiedzi, a grader je punktuje. Grader to funkcja w kodzie, porównanie z oczekiwanym wynikiem albo model oceniający. Wzorcowe odpowiedzi nie są potrzebne, tylko sposób oceny, więc pasuje do zadań z weryfikowalnym wynikiem. Dziurawy grader model wykorzysta (reward hacking, zobacz „Trening”).
- Hostowany fine-tuning modeli zamkniętych: wysyłasz plik JSONL z przykładami, dostawca trenuje i serwuje, a wag nie dostajesz. Google Vertex AI oferuje dla modeli Gemini SFT, preference tuning i RL (wrzesień 2026). OpenAI wygasza usługę fine-tuningu: od 7 maja 2026 nie przyjmuje organizacji, które nigdy z niej nie korzystały, od 2 lipca 2026 blokuje też te bez inferencji na modelu po fine-tuningu w ostatnich 60 dniach, a od 6 stycznia 2027 nikt nie uruchomi nowego treningu.
- Model open-weight (temat „Modele open-weight”) wytrenujesz też w zarządzanej usłudze: Together AI przyjmuje plik z przykładami, a Tinker od Thinking Machines daje API do własnej pętli SFT, DPO lub RL na LoRA. GPU są po stronie dostawcy, a adapter pobierasz i serwujesz gdziekolwiek. Trening na własnym sprzęcie daje pełną kontrolę nad pipeline’em, ale GPU i serwowanie są po twojej stronie.
Jak działa LoRA
- Pełny fine-tuning aktualizuje każdą wagę. LoRA (Hu i in., 2021) zamraża macierz W o wymiarach d × k i uczy tylko poprawki ΔW = B·A, gdzie B ma wymiar d × r, a A – r × k. Rank r (np. 8, 16, 64) jest dużo mniejszy od d i k, więc zamiast d·k parametrów trenujesz r·(d + k): dla macierzy 4096 × 4096 i r = 16 to 131 tys. zamiast 16,8 mln. Autorzy zakładają, że zmiana wag potrzebna do dostosowania modelu ma niski rank. B jest inicjalizowana zerami, więc na początku ΔW = 0 i model działa jak bazowy, a wyjście adaptera mnoży się przez α/r.
- Oryginalna praca dodawała LoRA głównie w attention. Schulman (Thinking Machines, 2025) pokazuje, że LoRA na wszystkich warstwach, zwłaszcza MLP, dorównuje pełnemu fine-tuningowi na małych i średnich zbiorach, a w RL nawet z rankiem 1. Przegrywa, gdy danych jest więcej, niż zmieści adapter, i gorzej niż pełny fine-tuning znosi duże batche. Optymalny learning rate jest ok. 10 razy wyższy niż przy pełnym fine-tuningu.
- QLoRA (Dettmers i in., 2023) to LoRA na bazie skwantyzowanej do 4 bitów w formacie NF4 (temat „Kwantyzacja”). Gradienty przechodzą przez zamrożoną bazę do adaptera w 16 bitach. Baza zajmuje ok. 4 razy mniej pamięci, a w pracy fine-tuning modelu 65B zmieścił się na jednej karcie 48 GB bez straty jakości względem treningu w 16 bitach.
Zmień rank i klasę modelu. Zobacz, ile wag trenuje LoRA i ile pamięci GPU potrzeba
Pamięć GPU na wagi i stan optymalizatora:
Liczby poglądowe. Architektura jak Llama 3.1 8B i 70B, LoRA na wszystkich siedmiu macierzach liniowych w każdej warstwie (Q, K, V, O i trzy w MLP). Pamięć według reguły kciuka: pełny fine-tuning z Adamem w mieszanej precyzji to ok. 16 bajtów na parametr (wagi i gradienty w BF16, kopia wag w FP32, dwa momenty Adama), LoRA to 2 bajty na zamrożoną wagę w BF16, QLoRA ok. 0,5 bajta (4 bity), plus 16 bajtów na każdy parametr adaptera. Aktywacje doliczasz osobno: rosną z długością sekwencji i batchem. Karty dobrane z zapasem 20% na aktywacje.
- Adapter to mały plik: dla modelu klasy 8B z r = 16 ok. 42 mln parametrów, czyli ok. 84 MB w BF16 przy 16 GB bazy. Trzymasz jedną bazę i wiele adapterów, np. na klienta, język albo zadanie. vLLM trzyma jedną kopię bazy i łączy w jednym batchu requesty do różnych adapterów; S-LoRA (Sheng i in., 2023) serwuje tak tysiące adapterów na jednym GPU. Cena to dodatkowe mnożenie B·(A·x) w każdym kroku.
- Scalanie: po treningu B·A można dodać do W. Model jest wtedy tak samo szybki jak bazowy, ale każdy wariant to osobna pełna kopia. Kilka adapterów tej samej bazy można też złożyć w jeden bez treningu, sumą ważoną albo metodami TIES i DARE (w Hugging Face PEFT
add_weighted_adapter). Umiejętności potrafią się przy tym nawzajem psuć, więc scalony adapter ewaluujesz jak nowy model.
Dane, ewaluacja, utrzymanie
- Jakość danych wygrywa z ilością. W pracy LIMA (Zhou i in., 2023) wystarczyło 1000 starannie dobranych przykładów SFT, żeby model 65B dawał odpowiedzi wysokiej jakości. Autorzy wnioskują, że wiedza pochodzi z pretrainingu, a dostrajanie uczy głównie formy. Model uczy się wszystkiego, co w danych powtarzalne, także literówek, niespójnego formatu i złych odpowiedzi.
- Zestaw ewaluacyjny odkładasz przed treningiem i nigdy na nim nie trenujesz (temat „Ewaluacje”). Najpierw mierzysz na nim bazę z najlepszym promptem: to poprzeczka, którą fine-tuning musi przeskoczyć. Dokładasz przypadki spoza zadania i testy odmów, bo fine-tuning osłabia zabezpieczenia: Qi i in. (2023) zdjęli je z GPT-3.5 Turbo 10 przykładami za mniej niż 0,20 USD, a zwykłe, nieszkodliwe zbiory też je osłabiały, tylko mniej.
- Przeuczenie: strata treningowa spada, walidacyjna rośnie, a model powtarza frazy z przykładów. Pomaga mniej epok, niższy learning rate i wybór checkpointu na podstawie walidacji. Katastrofalne zapominanie: model traci umiejętności spoza twoich danych. LoRA zapomina mniej niż pełny fine-tuning, ale na dużych zbiorach też mniej się uczy (Biderman i in., 2024, na kodzie i matematyce: przypadek ograniczonej pojemności opisany wyżej).
- Model po fine-tuningu jest przywiązany do bazy. Adapter pasuje tylko do dokładnie tej wersji wag, a przy hostowanym fine-tuningu model znika razem z bazą: OpenAI wyłącza 23 października 2026 m.in. ft-gpt-4.1-nano. Nowa baza to nowy trening, więc wersjonujesz razem dane, konfigurację, wersję bazy, adapter i wyniki ewaluacji, a cały pipeline uruchamiasz jednym poleceniem. Przy każdej nowej bazie najpierw sprawdź, czy sam prompt już nie wystarcza.
Sprawdź się
Kiedy użyjesz fine-tuningu zamiast promptu albo RAG i jak działa LoRA?
Kolejność: prompt i kontekst, dla wiedzy RAG, fine-tuning na końcu. Fine-tuning dobrze uczy zachowania (formatu, tonu, wąskiego zadania) i potrafi przenieść zachowanie dużego modelu do małego. Faktów uczy słabo: wchodzą niepewnie, bez źródła, każda zmiana to nowy trening, a do tego mogą nasilić halucynacje. LoRA zamraża wagi i uczy poprawki ΔW = B·A o niskim ranku r, czyli r·(d + k) parametrów zamiast d·k. Adapter waży dziesiątki MB, więc na jednej bazie serwuje się wiele adapterów. QLoRA robi to samo na bazie w 4 bitach.
In English
Order: prompt and context first, RAG for knowledge, fine-tuning last. Fine-tuning is good at behaviour: format, tone, a narrow task, or distilling a large model’s behaviour into a small one. It is poor at facts: they go in unreliably, without a source, every change means retraining, and they can increase confident errors. LoRA freezes the weights and learns a low-rank update ΔW = B·A of rank r, so it trains r·(d + k) parameters instead of d·k. An adapter is tens of MB, so many adapters can be served on one base. QLoRA does the same on a 4-bit base.
Pytania pogłębiające (5)
- Masz 50 tys. firmowych dokumentów, które zmieniają się co tydzień. Fine-tuning czy RAG?
- RAG. Fakty z fine-tuningu wchodzą niepewnie, nie mają źródła, a każda zmiana wymaga nowego treningu. Fine-tuning może dojść później, żeby nauczyć model formatu odpowiedzi i cytowania fragmentów, ale wiedza zostaje w indeksie.
- Jak dobierasz rank LoRA i warstwy, do których ją dodajesz?
- Wszystkie macierze liniowe, łącznie z MLP, bo LoRA tylko w attention wyraźnie odstaje. Rank to pojemność adaptera: na małych i średnich zbiorach niski wystarcza, w RL nawet r = 1, a przy dużych zbiorach LoRA zaczyna przegrywać z pełnym fine-tuningiem. Learning rate ok. 10 razy wyższy niż przy pełnym fine-tuningu, a kilka ranków porównuje się na ewaluacji.
- Masz 200 klientów i każdy chce model w swoim stylu. Jak to serwujesz?
- Jedna baza i adapter LoRA na klienta, bez scalania. vLLM wybiera adapter dla każdego requestu, trzyma kilka aktywnych adapterów w jednym batchu obok jednej kopii bazy i ładuje kolejne w locie. Cena to trochę dodatkowego liczenia w każdym kroku zamiast 200 pełnych kopii modelu.
- Po fine-tuningu format jest idealny, ale model gorzej radzi sobie poza zadaniem i łatwiej go namówić na rzeczy, których wcześniej odmawiał. Co się stało?
- Katastrofalne zapominanie i osłabione zabezpieczenia: trening przesunął wagi tylko w stronę twoich przykładów. Pomaga mniej epok, niższy learning rate albo LoRA zamiast pełnego fine-tuningu, przykłady ogólne i odmowy w danych, a w ewaluacji zestaw spoza zadania i testy bezpieczeństwa.
- Dostawca wycofuje model bazowy, na którym stoi twój fine-tuning. Co robisz?
- Najpierw sprawdź, czy nowa baza z samym promptem nie przechodzi już ewaluacji, bo wtedy fine-tuning przestaje być potrzebny. Jeśli nie, trenujesz od nowa na nowej bazie tym samym pipeline’em. Dane, konfiguracja i zestaw ewaluacyjny są wersjonowane, więc to jedno uruchomienie.
Źródła
- Hu i in.: LoRA: Low-Rank Adaptation of Large Language Models (2021)
- Dettmers i in.: QLoRA: Efficient Finetuning of Quantized LLMs (2023)
- John Schulman, Thinking Machines: LoRA Without Regret (2025)
- Gekhman i in.: Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations? (2024)
- Thinking Machines: Tinker, API do trenowania modeli open-weight z LoRA