## Fine-tuning i LoRA

*Skąd model wie to, co wie*

*Ostatnia zmiana: 28 września 2026*

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 ludzku:** Fine-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ą.

*Interaktywny widżet na stronie: 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.

*Interaktywny widżet na stronie: Zmień rank i klasę modelu. Zobacz, ile wag trenuje LoRA i ile pamięci GPU potrzeba.*

- 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ę

**Pytanie:** Kiedy użyjesz fine-tuningu zamiast promptu albo RAG i jak działa LoRA?

**Krótka odpowiedź:** 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.

### Pytania pogłębiające

- **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)](https://arxiv.org/abs/2106.09685)
- [Dettmers i in.: QLoRA: Efficient Finetuning of Quantized LLMs (2023)](https://arxiv.org/abs/2305.14314)
- [John Schulman, Thinking Machines: LoRA Without Regret (2025)](https://thinkingmachines.ai/blog/lora/)
- [Gekhman i in.: Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations? (2024)](https://arxiv.org/abs/2405.05904)
- [Thinking Machines: Tinker, API do trenowania modeli open-weight z LoRA](https://thinkingmachines.ai/tinker/)

Strona interaktywna: https://howaiworks.dev/pl/finetuning/
