POWRÓT_DO_BLOGA
AI & Automatyzacja 15 min

Fine-tuning LLM na danych firmy — kiedy warto, jak zacząć i czego unikać

Praktyczny przewodnik po fine-tuningu modeli językowych: kiedy wybrać FT zamiast RAG lub lepszego promptu, jak przygotować dane JSONL, QLoRA na RTX 4090 z Unsloth i jak ocenić, czy trening naprawdę poprawił model.

Fine-tuning warto robić gdy masz problem ze stylem, terminologią lub głosem marki — nie z wiedzą. Jeśli model nie zna Twoich danych (cennik, produkty, procedury), rozwiązaniem jest RAG, nie fine-tuning. Jeśli model zna, ale wyraża to w "asystenckim" języku zamiast w Twoim — fine-tuning ma sens, pod warunkiem że masz co najmniej 500 par treningowych (wejście/wyjście). W 80% przypadków lepszy prompt z przykładami rozwiązuje problem szybciej i taniej.

Twój model GPT-4o odpowiada poprawnie — ale pisze jak "ogólny asystent", nie jak ekspert twojej firmy. Terminologia z systemu promptu jest ignorowana. Nazwy produktów przekręcane. Masz 50 000 archiwalnych zgłoszeń supportu, które odzwierciedlają dokładnie taki styl i merytorykę, jakiej chcesz. Fine-tuning?

Może. Właściwe pytanie brzmi inaczej: czy masz problem ze stylem (model wie, ale wyraża to inaczej) — czy problem z wiedzą (model nie wie czegoś, czego powinien)? Od odpowiedzi zależy, czy potrzebujesz fine-tuningu, RAG-a, lepszego promptu — a może żadnego z powyższych.

KryteriumPrompt EngineeringRAGFine-tuning
CelLepsza instrukcjaDodanie wiedzyZmiana zachowania modelu
Koszt jednorazowy~$0$200–$2000$50–$5000
Koszt operacyjnyNajwyższy (długi prompt)Średni (retrieval)Niski (krótki prompt)
Czas wdrożeniaGodzinyDniDni–tygodnie
Dane wymaganeBrakDokumenty500–5000 par JSONL
Dane aktualneTak (w prompcie)Tak (retrieval)Nie (cutoff)
Kiedy wygrywujePrototyp, częste zmianyDuże bazy, faktycznośćStały styl, terminologia

Kiedy fine-tuning naprawdę ma sens?

Fine-tuning to dobry wybór, gdy spełniony jest co najmniej jeden z poniższych warunków:

  • Stały styl i ton marki — model powinien zawsze pisać jak twój najlepszy specjalista, nie jak ogólny asystent; dobry prompt nie gwarantuje tego konsekwentnie przy dłuższych rozmowach
  • Specjalistyczna terminologia branżowa — nazwy własne, skróty i procedury, które bazowy model systematycznie przekręca lub nie rozpoznaje
  • Ściśle zdefiniowany format wyjścia — raport zawsze w 5 sekcjach, JSON zawsze z polami X i Y; prompt "pisz w formacie..." jest niewystarczający gdy zero błędów struktury to warunek biznesowy
  • Redukcja kosztów tokenów — 3000-tokenowy system prompt w każdym wywołaniu kosztuje; fine-tuning "wbudowuje" instrukcje, skracając prompt o 60–80%
  • Prywatność przez destylację — kopiujesz zachowanie modelu komercyjnego do self-hosted open-source, który nie wysyła danych poza infrastrukturę firmy
  • Szybka klasyfikacja lub routing — fine-tunowany model 7B do jednego zadania jest 10× tańszy i szybszy od GPT-4o na tym samym zadaniu

Kiedy fine-tuning to zły wybór?

  • Potrzebujesz aktualnych informacji — model ma cutoff treningowy; dane z ostatnich 6 miesięcy wymagają RAG, nie fine-tuningu
  • Chcesz dodać wiedzę faktyczną — "naucz model naszej bazy produktów" to zadanie dla RAG; fine-tuning uczy formatu odpowiedzi, ale fakty z małego datasetu są podatne na halucynacje
  • Masz mniej niż 300 przykładów — za mało danych prowadzi do catastrophic forgetting i overfittingu; model traci ogólne umiejętności
  • Lepszy prompt nie był próbowany — zacznij od optymalnego system promptu z 5–10 few-shot examples; to rozwiązuje 80% problemów ze stylem bez kosztów GPU
  • Wymagania zmieniają się co tydzień — aktualizacja fine-tuned modelu to nowy cykl treningowy; prompt można zmienić w 5 minut

Rodzaje fine-tuningu w 2025 roku

/// KIEDY WYBRAĆ KTÓRĄ METODĘ?

Prompt Engineering vs RAG vs Fine-tuning

Prompt EngineeringSZYBKO

Kiedy wybrać:

  • Szybki prototyp lub MVP
  • Zmieniające się wymagania
  • Standardowy styl odpowiedzi
  • Brak dostępu do danych

Kiedy NIE:

  • Spójny ton marki jest wymogiem
  • Model błędnie obsługuje terminologię

KOSZT

~$0

CZAS

Godziny

DANE

Brak

RAGWIEDZA

Kiedy wybrać:

  • Aktualna wiedza faktyczna
  • Duże bazy dokumentów
  • Weryfikowalne źródła
  • Dane zmieniają się często

Kiedy NIE:

  • Stały ton ważniejszy niż wiedza
  • Latency < 500 ms jest wymaganiem

KOSZT

$200–$2 000

CZAS

Dni

DANE

Dokumenty

Fine-tuningZACHOWANIE

Kiedy wybrać:

  • Stały styl i ton marki
  • Specjalistyczna terminologia
  • Konkretny format wyjścia
  • Redukcja kosztu tokenów

Kiedy NIE:

  • Potrzebujesz aktualnych danych
  • Masz < 300 przykładów

KOSZT

$50–$5 000

CZAS

Dni–tygodnie

DANE

500–5 000 par

Ekosystem fine-tuningu ma pięć głównych podejść:

  • Full fine-tuning — aktualizacja wszystkich wag modelu; najlepsza jakość, ale wymaga dziesiątek GB VRAM na wielu kartach GPU; zarezerwowane dla laboratoriów AI z infrastrukturą wartą miliony dolarów
  • SFT (Supervised Fine-Tuning) — uczenie na parach instrukcja→odpowiedź; standard dla zastosowań biznesowych; prawie zawsze stosowany z LoRA lub QLoRA zamiast pełnego FT
  • LoRA (Low-Rank Adaptation) — dodaje małe macierze A×B do warstw attention zamiast aktualizować wszystkie wagi; trenuje 0.1–1% parametrów przy jakości zbliżonej do full FT i 90% mniejszym zużyciu VRAM
  • QLoRA (Quantized LoRA) — LoRA z kompresją modelu bazowego do 4 bitów; pozwala trenować 7B na RTX 4090 (24 GB) i 13B na A100 (40 GB); standard przemysłowy 2025 dla firm bez GPU data center
  • DPO (Direct Preference Optimization) — uczenie z par dobra/zła odpowiedź zamiast nagród RLHF; eliminuje niechciane zachowania modelu; stosowany do alignment i bezpieczeństwa

Jak przygotować dane treningowe?

Jakość danych jest ważniejsza niż ich ilość. 500 perfekcyjnych przykładów pokona 10 000 byle jakich.

Format JSONL:

  • Każda linia to jeden przykład JSON z polami: system (instrukcja systemowa), input (pytanie lub zadanie), output (oczekiwana odpowiedź)
  • Alternatywnie: format messages-based z rolami (kompatybilny z OpenAI fine-tuning API)
  • Kodowanie: UTF-8, bez BOM, polskie znaki bez eskapowania

Ile przykładów potrzebujesz:

  • Klasyfikacja prosta (2–5 klas): 100–300 przykładów wystarczy
  • Zmiana stylu i tonu: 300–1000 przykładów
  • Złożone generowanie wieloetapowe: 1000–5000 przykładów
  • Destylacja zachowania GPT-4 do mniejszego modelu: 5000–50 000 przykładów

Jak zebrać dane:

  • Eksport i filtrowanie historycznych odpowiedzi supportu ocenionych przez QA — najlepsze źródło, bo odzwierciedla realne wzorce konwersacji
  • Generowanie syntetyczne przez GPT-4o z instrukcją "generuj 50 par input/output dla zadania X w stylu Y" z weryfikacją człowieka na 20% próbce
  • Ręczna anotacja przez ekspertów domenowych dla zastosowań krytycznych (prawo, medycyna, finanse)
  • Augmentacja: parafrazy tych samych pytań zwiększają odporność modelu na wariacje wejścia

Czego unikać w danych:

  • Duplikaty i quasi-duplikaty (podobieństwo > 30%) — prowadzą do overfittingu na konkretnych frazach
  • Sprzeczne przykłady (identyczne wejście, różne wyjście) — dezorientują model podczas gradientu
  • Brak podziału train/validation (90/10) — bez holdout setu nie wykryjesz overfittingu w porę

LoRA i QLoRA — fine-tuning na jednej karcie GPU

/// WYMAGANIA VRAM WEDŁUG METODY TRENINGOWEJ

Zapotrzebowanie na pamięć GPU

Minimalne VRAM dla typowego treningu (batch 2, sekwencja 2048 tokenów)

7B — Full fine-tuning
112 GB
A100 ×2
13B — Full fine-tuning
200 GB
A100 ×4
7B — LoRA (bf16)
28 GB
A100 40 GB
13B — LoRA (bf16)
52 GB
A100 80 GB
7B — QLoRA (4-bit)
8 GB
RTX 4090 ✓
13B — QLoRA (4-bit)
12 GB
RTX 4090 ✓
70B — QLoRA (4-bit)
48 GB
A100 80 GB
Niepraktyczne dla firm Drogie GPU (~$2–3/h) Konsumencki GPU (~$0.50/h) Dostępne, wymaga datacenter

LoRA to matematyczny trick: zamiast modyfikować macierz wag W (np. 4096×4096 = 16 mln parametrów), dodaje dwie małe macierze: A (4096×rank) i B (rank×4096). Trenowane są tylko A i B. Przy rank=16 liczba parametrów spada z 16 mln do 131 tysięcy — 122× mniej — przy jakości zbliżonej do full fine-tuningu na wąskich zadaniach.

QLoRA dodaje kwantyzację modelu bazowego do 4 bitów (format NF4 z biblioteki bitsandbytes). Efekt: model 7B zajmujący normalnie 14 GB w bf16 zajmuje 4 GB skwantyzowany, plus ~0.5 GB na adaptery LoRA. RTX 4090 z 24 GB VRAM obsługuje trening z batch 2 i sekwencją 2048 tokenów bez problemów.

finetune_qlora.py
# finetune_qlora.py — QLoRA z Unsloth (2-3x szybciej niz standardowy HF Trainer)from unsloth import FastLanguageModelfrom trl import SFTTrainerfrom transformers import TrainingArgumentsfrom datasets import load_datasetMAX_SEQ_LEN = 2048RANK = 16model, tokenizer = FastLanguageModel.from_pretrained(    model_name="unsloth/llama-3-8b-bnb-4bit",    max_seq_length=MAX_SEQ_LEN,    load_in_4bit=True,)model = FastLanguageModel.get_peft_model(    model,    r=RANK,    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],    lora_alpha=RANK * 2,    lora_dropout=0.05,    bias="none",    use_gradient_checkpointing=True,)dataset = load_dataset("json", data_files="train.jsonl", split="train")TEMPLATE = "<|system|>\n{system}\n<|user|>\n{input}\n<|assistant|>\n{output}"def format_chat(ex):    return {"text": TEMPLATE.format(**ex)}dataset = dataset.map(format_chat)trainer = SFTTrainer(    model=model,    tokenizer=tokenizer,    train_dataset=dataset,    dataset_text_field="text",    max_seq_length=MAX_SEQ_LEN,    args=TrainingArguments(        output_dir="./output",        num_train_epochs=3,        per_device_train_batch_size=2,        gradient_accumulation_steps=4,        learning_rate=2e-4,        fp16=True,        logging_steps=10,        save_steps=200,        warmup_ratio=0.03,        lr_scheduler_type="cosine",        report_to="none",    ),)trainer.train()model.save_pretrained_merged("./my-model", tokenizer, save_method="merged_16bit")

Unsloth przyspiesza trening 2–3× względem standardowego HuggingFace Trainer i redukuje zużycie VRAM o kolejne 50–60%. Gotowy model można załadować przez Ollama (lokalne wdrożenie i testy), vLLM (produkcyjne API z wysoką przepustowością) lub Hugging Face Inference Endpoints.

Gdzie i za ile trenować?

PlatformaModel bazowyGPUKoszt 1000 przykł. × 3 epokiDeployment
OpenAI FT APIGPT-4o-miniZarządzane$6–$15API od razu
HuggingFace + RunPodLlama / QwenRTX 4090 (24 GB)$1–$3Inference Endpoints
Lambda LabsLlama / QwenA100 (80 GB)$8–$15Self-deploy / vLLM
Google Vertex AIGemma / własnyTPU zarządzane$20–$50Vertex AI Prediction
Modal.comLlama / MistralA10G on-demand$3–$8Serverless API
Unsloth + Colab ProLlama 3 do 13BT4 / A100$0 (limit GPU)Export GGUF do Ollama

Jak ocenić, czy fine-tuning poprawił model?

Subiektywne "wygląda lepiej" nie wystarczy w środowisku produkcyjnym. Potrzebujesz mierzalnych metryk:

  • LLM-as-judge — GPT-4o ocenia w skali 1–5 każdą odpowiedź fine-tuned modelu vs bazowego na 100-przykładowym holdout secie; metoda tania, skalowalna i wysoko korelująca z ocenami ludzkimi
  • Task accuracy — dla klasyfikacji: accuracy i F1; dla ekstrakcji danych: precyzja i recall kluczowych pól
  • Regression test — 50 przykładów poza domeną fine-tuningu; sprawdź, że model nie utracił ogólnych umiejętności (catastrophic forgetting)
  • Latency i koszt — czy krótszy system prompt po fine-tuningu faktycznie redukuje czas i koszt wywołania o planowane 40–60%?
  • Hallucination rate — jeśli model podaje fakty: jaki procent odpowiedzi zawiera wymyślone informacje przed i po fine-tuningu?

Najczęstsze błędy przy fine-tuningu

  • Fine-tuning zamiast dobrego promptu — 80% problemów ze stylem i formatem rozwiązuje optymalny system prompt z 5 few-shot examples; sprawdź to zanim wydasz czas i pieniądze
  • Za mało danych = overfitting — model perfekcyjnie odtwarza dane treningowe, ale pada na nowe wejścia; symptom: validation loss rośnie gdy training loss spada
  • Za dużo epok — 3–5 epok to zazwyczaj optimum dla SFT; 10+ epok = overfitting i degradacja ogólnych umiejętności modelu
  • Trening na danych bez QA — model nauczy się błędów z danych; każdy przykład wymaga weryfikacji człowieka lub LLM-judge
  • Brak testów regresji — fine-tuning na wąskiej domenie może skrzywić odpowiedzi poza domeną; zawsze testuj pytania ogólne po treningu
  • Vendor lock-in danych — dane treningowe to zasób strategiczny; zachowaj je w formacie JSONL niezależnie od platformy; trenuj równoległe modele open-source jako backup
  • Brak monitoringu po wdrożeniu — fine-tuned model może degradować się gdy rozkład wejść się zmienia; monitoruj quality metrics regularnie i zaplanuj cykl retrainingu

Lista kontrolna przed fine-tuningiem

  1. 1.Sprawdź, czy lepszy prompt lub few-shot examples rozwiązuje problem — zainwestuj 2–4 godziny przed przejściem dalej
  2. 2.Sprawdź, czy RAG nie rozwiązuje problemu lepiej i taniej (jeśli to problem wiedzy faktycznej — użyj RAG)
  3. 3.Zbierz minimum 500 par input/output z QA na każdym przykładzie w formacie JSONL
  4. 4.Podziel dane: 90% trening, 10% walidacja, plus 50–100 przykładów holdout poza podziałem
  5. 5.Wybierz platformę według budżetu i wymagań prywatności danych (szczególnie GDPR i HIPAA)
  6. 6.Zacznij od modelu 7B — fine-tuning 7B jest 3× tańszy niż 13B przy podobnej jakości na wąskich zadaniach
  7. 7.Po treningu zrób A/B test na holdout secie z LLM-as-judge: fine-tuned vs bazowy vs model z lepszym promptem
  8. 8.Zaplanuj cykl retrainingu co 3–6 miesięcy w miarę jak zmienia się domena i wzorce wejść

---

Pomagam firmom ocenić, czy fine-tuning to właściwy krok — i jeśli tak, przeprowadzam cały proces: od audytu i przygotowania danych przez trening QLoRA po deployment i monitoring jakości. Napisz do mnie — zaczynam od bezpłatnej 30-minutowej analizy twojego przypadku użycia.

/// AUTHOR
Paweł Wiszniewski – AI & Web Engineer

Paweł Wiszniewski

SEO & GEO Specialist & AI Engineer

Specjalista SEO/GEO (10 lat) i AI engineer (3 lata). Buduję widoczność w wyszukiwarkach, systemy AI i automatyzacje, które redukują koszty i zwiększają efektywność operacyjną firm.

Signal received?

Przerwij
Ciszę

Zainicjuj protokół. Nawiąż połączenie. Zbudujmy coś głośnego.

> OCZEKIWANIE_NA_SYGNAŁ...