Fine-tuning to kluczowa technika adaptacji dużych modeli językowych (LLM) do konkretnych zadań, domen lub stylów odpowiedzi. Zamiast trenować model od zera — co wymaga miliardów tokenów i milionów dolarów — dostrajamy wytrenowany model na mniejszym, specjalistycznym zbiorze danych. To jest transfer learning w świecie dużych modeli językowych.

Kiedy fine-tuning jest potrzebny?

Prompt engineering i RAG rozwiązują wiele problemów bez modyfikacji modelu. Fine-tuning jest uzasadniony, gdy:

  1. Specyficzny format wyjścia — model musi konsekwentnie odpowiadać w określonym formacie (JSON schema, szablon raportowy)
  2. Specjalistyczny język — terminologia medyczna, prawnicza, techniczna
  3. Ton i styl — model musi pisać „jak marka" — spójny głos w komunikacji
  4. Wiedza domenowa — zagadnienia niszowe, słabo reprezentowane w pretreningu
  5. Redukcja kosztów — mniejszy fine-tunowany model zastępuje duży model z długim promptem
  6. Latencja — krótsze prompty = szybsza inferencja
  7. Prywatność — model lokalny z wiedzą firmową, bez wysyłania danych do API

Fine-tuning vs prompt engineering vs RAG

Podejście Modyfikuje model? Wymaga danych treningowych? Koszt Kiedy stosować
Prompt engineering Nie Nie Niski Zawsze jako pierwszy krok
RAG Nie Baza wiedzy Średni Gdy potrzebna aktualna/specyficzna wiedza
Fine-tuning Tak Tak (setki-tysiące przykładów) Wysoki Gdy prompt/RAG nie wystarczają

Pełny fine-tuning

Klasyczny full fine-tuning aktualizuje wszystkie parametry modelu na nowych danych. Dla modelu 7B parametrów oznacza to:

  • ~28 GB pamięci na wagi (FP32) lub ~14 GB (FP16)
  • Dodatkowa pamięć na gradienty, stany optymalizatora (Adam: 2x parametrów)
  • Łącznie: 50-80 GB VRAM dla modelu 7B

Procedura

  1. Przygotowanie danych — pary (instrukcja, odpowiedź) w formacie chat
  2. Konfiguracja — learning rate (1e-5 – 5e-5), batch size, epoki (1-3)
  3. Trening — standardowy trening z backpropagation
  4. Ewaluacja — metryki na zbiorze walidacyjnym

Problem: catastrophic forgetting

Pełny fine-tuning ryzykuje katastrofalne zapominanie — model traci ogólne zdolności nabyte podczas pretrenowania. Rozwiązania: niski learning rate, krótki trening, regularyzacja.

LoRA — Low-Rank Adaptation

LoRA (Hu et al., 2021) to przełomowa technika parametrowo-efektywnego fine-tuningu (PEFT). Zamiast aktualizować wszystkie wagi, LoRA dodaje małe macierze adaptacyjne do wybranych warstw modelu.

Zasada działania

Dla macierzy wag W₀ o wymiarach d×k, LoRA dodaje:

W = W₀ + ΔW = W₀ + B·A

Gdzie:

  • A ma wymiary r×k (r
  • B ma wymiary d×r
  • ΔW = B·A ma pełne wymiary d×k, ale jest niskorangowa (rank r)

Korzyści LoRA

  • Drastyczna redukcja parametrów treningowych — np. model 7B: 7 mld parametrów → 4-20 mln parametrów LoRA (0,1-0,3%)
  • Oszczędność pamięci — oryginalne wagi zamrożone, gradient obliczany tylko dla A i B
  • Szybki trening — znacznie mniej obliczeń
  • Modularne adaptery — różne adaptery LoRA do różnych zadań, ładowane na żądanie
  • Brak degradacji inferencji — macierze A·B mogą być scalone z W₀ (merge) — zero dodatkowego kosztu

Kluczowe hiperparametry LoRA

  • rank (r) — ranga macierzy adaptacyjnych. Wyższy = więcej parametrów, lepsze dopasowanie. Typowo 8-64
  • alpha — współczynnik skalowania. Wpływa na learning rate efektywny. Zwykle alpha = 2r
  • target_modules — które warstwy modyfikować. Typowo: q_proj, k_proj, v_proj, o_proj (warstwy atencji)

QLoRA — Quantized LoRA

QLoRA (Dettmers et al., 2023) łączy LoRA z kwantyzacją 4-bit:

  1. Wagi bazowe modelu kwantyzowane do 4 bitów (NF4 — NormalFloat 4-bit)
  2. Adaptery LoRA trenowane w FP16/BF16
  3. Gradient obliczany z dequantyzacją w locie

Efekt: fine-tuning modelu 65B na jednym GPU 48GB (A6000). Model 7B na GPU 12GB.

Instruction Tuning

Fine-tuning modelu na zbiorze par instrukcja-odpowiedź (instruction-following format):

{
  "instruction": "Streść poniższy artykuł w 3 zdaniach.",
  "input": "[treść artykułu]",
  "output": "Artykuł omawia..."
}

Formaty danych

Chat format (Alpaca/ShareGPT):

{
  "conversations": [
    {"role": "system", "content": "Jesteś pomocnym asystentem."},
    {"role": "user", "content": "Co to jest transfer learning?"},
    {"role": "assistant", "content": "Transfer learning to..."}
  ]
}

Popularne zbiory do instruction tuningu

  • Alpaca (Stanford) — 52K instrukcji wygenerowanych przez GPT-3.5
  • Dolly (Databricks) — 15K instrukcji napisanych przez ludzi
  • OpenAssistant — crowdsourced conversational data
  • LIMA — 1000 starannie wyselekcjonowanych przykładów (less is more)

Jakość > ilość

Badania (LIMA, 2023) pokazują, że 1000 starannie dobranych przykładów może dać lepsze wyniki niż 50 000 automatycznie wygenerowanych. Kluczowe:

  • Różnorodność zadań
  • Wysokiej jakości odpowiedzi
  • Brak błędów i halucynacji w odpowiedziach
  • Reprezentatywne dla docelowego użycia

RLHF i DPO — alignment

Po instruction tuningu model jest dalej dostrajany do preferencji ludzkich:

RLHF (Reinforcement Learning from Human Feedback)

  1. Zbierz pary odpowiedzi i ludzkie rankingi (która lepsza)
  2. Wytrenuj reward model na podstawie rankingów
  3. Optymalizuj model przez PPO (Proximal Policy Optimization) — uczenie ze wzmocnieniem

DPO (Direct Preference Optimization)

Prostsza alternatywa RLHF — nie wymaga osobnego reward modelu. Bezpośrednio optymalizuje model na parach (lepsza odpowiedź, gorsza odpowiedź). Mniej zasobożerny, stabilniejszy trening.

Praktyczny workflow fine-tuningu

1. Zdefiniuj cel

Co dokładnie model ma robić inaczej/lepiej? Bez jasnego celu nie ocenisz sukcesu.

2. Przygotuj dane

  • Zbierz 500-10 000 przykładów (zależnie od zadania)
  • Format: instrukcja → odpowiedź
  • Podziel na train/val (90/10)
  • Zapewnij jakość i różnorodność

3. Wybierz model bazowy

  • Llama 3 (Meta) — 8B, 70B parametrów, open-weight
  • Mistral/Mixtral — efektywne, dobre dla języków europejskich
  • Qwen 2.5 — silne w wielojęzyczności
  • Gemma 2 (Google) — 9B, 27B

4. Wybierz technikę

  • < 1000 przykładów → LoRA/QLoRA, niski rank
  • 1000-10 000 przykładów → LoRA/QLoRA, średni rank
  • > 10 000 przykładów + duży budżet → pełny fine-tuning lub LoRA z wysokim rankiem

5. Trenuj i ewaluuj

  • Monitoruj loss na walidacji
  • Early stopping zapobiega overfittingowi
  • Ewaluacja manualna: czy odpowiedzi spełniają oczekiwania?
  • Benchmarki: porównaj z bazowym modelem i promptem

6. Deployuj

  • Scal adaptery LoRA z modelem bazowym (merge)
  • Kwantyzuj do GGUF/GPTQ/AWQ do inferencji
  • Deploy: vLLM, TGI, Ollama

Narzędzia do fine-tuningu

  • Hugging Face PEFT — biblioteka do LoRA, QLoRA, prefix-tuning
  • Axolotl — framework do fine-tuningu z prostą konfiguracją YAML
  • Unsloth — zoptymalizowany trening LoRA, 2x szybszy, 60% mniej pamięci
  • LLaMA-Factory — GUI do fine-tuningu z wieloma technikami
  • OpenAI Fine-tuning API — fine-tuning GPT-3.5/4 przez API (hosted)

Podsumowanie

Fine-tuning LLM to potężne narzędzie adaptacji modeli do specyficznych potrzeb. LoRA i QLoRA zdemokratyzowały ten proces — fine-tuning modelu 7B jest dziś możliwy na konsumenckim GPU. Kluczem sukcesu jest jakość danych treningowych i jasny cel — co model ma robić inaczej niż bazowy model z dobrym promptem.