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:
- Specyficzny format wyjścia — model musi konsekwentnie odpowiadać w określonym formacie (JSON schema, szablon raportowy)
- Specjalistyczny język — terminologia medyczna, prawnicza, techniczna
- Ton i styl — model musi pisać „jak marka" — spójny głos w komunikacji
- Wiedza domenowa — zagadnienia niszowe, słabo reprezentowane w pretreningu
- Redukcja kosztów — mniejszy fine-tunowany model zastępuje duży model z długim promptem
- Latencja — krótsze prompty = szybsza inferencja
- 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
- Przygotowanie danych — pary (instrukcja, odpowiedź) w formacie chat
- Konfiguracja — learning rate (1e-5 – 5e-5), batch size, epoki (1-3)
- Trening — standardowy trening z backpropagation
- 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:
- Wagi bazowe modelu kwantyzowane do 4 bitów (NF4 — NormalFloat 4-bit)
- Adaptery LoRA trenowane w FP16/BF16
- 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)
- Zbierz pary odpowiedzi i ludzkie rankingi (która lepsza)
- Wytrenuj reward model na podstawie rankingów
- 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.