Gdy firma decyduje się na fine-tuning własnego LLM, pierwsze pytanie zwykle nie brzmi „jak?" lecz „czy mamy wystarczający sprzęt?". Odpowiedź zależy od wybranej metody. Różnica między full fine-tuningiem a QLoRA może wynosić dla modelu 7B ponad dziesięciokrotność wymaganej VRAM — co rozstrzyga, czy trening odbędzie się na jednej RTX 4090, czy wymaga wynajętego klastra A100.
Ten artykuł omawia trzy główne podejścia — LoRA, QLoRA i full fine-tuning — z perspektywy praktycznego wdrożenia. Otrzymasz konkretne liczby, ramę decyzyjną oraz ostrzeżenia dotyczące sytuacji, w których tańsza metoda okazuje się niewystarczająca.
Podstawowe pojęcia dla tych, którzy zaczynają
Zanim przejdziemy do liczb, krótkie wprowadzenie:
Full fine-tuning aktualizuje wszystkie wagi modelu. Dla modelu 7B oznacza to trening na 7 miliardach parametrów — przy jednoczesnym utrzymywaniu w pamięci gradientów i stanów optymalizatora.
LoRA (Low-Rank Adaptation) zamraża oryginalne wagi i dodaje małe macierze „adapterowe" o niskim rzędzie (rank). Trening obejmuje wyłącznie te adaptery, które są rzędy wielkości mniejsze od bazowego modelu.
QLoRA (Quantized LoRA) idzie o krok dalej: zamrożone wagi modelu bazowego są kwantyzowane do 4 bitów, co radykalnie zmniejsza ich ślad pamięciowy. Adaptery LoRA pozostają przy tym w wyższej precyzji (BF16). Trening odbywa się na zdekwantyzowanych wartościach — co powoduje nieznaczne spowolnienie, ale ogromne oszczędności VRAM.
Liczby, które decydują: VRAM według metody
Poniżej zweryfikowane liczby dla modeli dense (a więc nie architektury MoE, takich jak Llama 4 czy Qwen3, gdzie wymagania są znacznie wyższe ze względu na ładowanie wszystkich ekspertów):
Dla modelu 7B w FP16/BF16: - Full fine-tuning: ~67 GB VRAM - LoRA: ~15 GB VRAM - QLoRA 8-bit: ~9 GB VRAM - QLoRA 4-bit: ~5 GB VRAM
Dla modelu 13B: - Full fine-tuning: ~125 GB VRAM - LoRA: ~28 GB VRAM - QLoRA 8-bit: ~17 GB VRAM - QLoRA 4-bit: ~9 GB VRAM
Dla modelu 70B: - Full fine-tuning: ~672 GB VRAM — praktycznie poza zasięgiem konfiguracji single-node - LoRA: ~146 GB VRAM — minimum 2× A100 80GB - QLoRA 8-bit: ~88 GB VRAM — jeden A100 80GB z napiętymi rezerwami - QLoRA 4-bit: ~46 GB VRAM — jeden A100 80GB bez problemu
Zasada kciuka dla full FT: przyjmij około 10–16 GB VRAM na 1 miliard parametrów — dolna granica zakresu (~10 GB, zgodna z powyższą tabelą) obowiązuje przy 8-bitowym optymalizatorze i gradient checkpointingu, górna (~16 GB) przy klasycznym Adamie 32-bitowym. Liczba obejmuje stany optymalizatora, gradienty i aktywacje.
Jedna ważna uwaga: fine-tuning wymaga znacznie więcej pamięci niż inferencja tego samego modelu. Model 7B działa przy inferencji na 8 GB, ale trening LoRA na nim wymaga ~15 GB. To źródło najczęstszego zaskoczenia w praktyce — „przecież ten model mi działa, dlaczego trening się wysypuje?"
Gdzie która metoda ma sens
QLoRA 4-bit to punkt startowy dla każdego, kto nie ma dedykowanego serwera treningowego. Model 7B w QLoRA 4-bit bez problemu działa na RTX 3090 lub RTX 4090 (24 GB), a z gradient checkpointingiem (dodatkowe ~30% oszczędności VRAM kosztem +2% wolniejszego treningu) poradzi sobie nawet na RTX 3060 12 GB. Do pracy eksploracyjnej, proof-of-concept i instruction tuning na małych datasetach (tysiące przykładów) QLoRA 4-bit to rozsądny wybór.
LoRA w FP16 to krok wyżej zarówno pod względem jakości, jak i wymagań. Dla modelu 7B potrzebujesz ~15 GB — a więc RTX 4090 lub A100 40GB. Jakość orientacyjnie wynosi 90–95% full fine-tuningu. Dla większości zadań domenowych (klasyfikacja, ekstrakcja, instruction tuning na dokumentacji firmowej) LoRA FP16 to optymalny kompromis.
Full fine-tuning rekomendujemy w trzech konkretnych przypadkach: 1. Reasoning, matematyka i kodowanie, gdzie 5% różnicy w jakości jest istotne 2. Continual learning — sekwencyjne fine-tuningi w wielu domenach (tutaj LoRA ma systemowe słabości, patrz niżej) 3. Fundamentalna zmiana zachowania modelu, nie tylko dostosowanie domenowe
W przypadku wdrożeń firmowych z kategorii „chatbot nad własną dokumentacją" czy „klasyfikacja zgłoszeń" full fine-tuning jest zazwyczaj zbędny i kosztowny. Obserwowaliśmy dziesiątki projektów, w których QLoRA lub LoRA osiągały wymaganą jakość przy ułamku kosztów.
Rama decyzyjna w praktyce
Pytania w tej kolejności skrócą Twoje okno decyzyjne:
1. Jaki model planujesz trenować? Dense 7B lub 13B: masz elastyczność. Dense 70B: QLoRA 4-bit na A100 80GB to realistyczny punkt wejścia. Modele MoE (np. Llama 4, Qwen3): wymagania VRAM są znacznie wyższe niż wskazują aktywne parametry — weryfikuj konkretne liczby dla każdego modelu przed planowaniem sprzętu.
2. Jaki masz cel? Instruction tuning, dostosowanie domenowe, zmiana tonu → LoRA lub QLoRA. Reasoning, kodowanie, matematyka → rozważ full FT lub przynajmniej wyższy rank LoRA + DoRA. Sekwencyjny continual learning → full FT (LoRA ma tu udokumentowane problemy).
3. Czy masz wystarczająco danych? Dla supervised fine-tuningu (SFT) zalecane minimum to tysiące wysokiej jakości przykładów — pod warunkiem pokrycia głównych tematów danej domeny. Trening na niewystarczających danych wyprodukuje model, który pewnie odpowiada z luk w wiedzy. To gorszy rezultat niż model bazowy, który umie powiedzieć „nie wiem". Bramka jakości danych jest przed treningiem ważniejsza niż wybór metody.
4. Jaki jest plan wdrożenia?
QLoRA 4-bit stosuje się podczas treningu, nie w produkcji. Po treningu adapter jest łączony z modelem bazowym i wdrażany w normalnej precyzji (BF16/FP16) — lub ponownie kwantyzowany do produkcyjnego serwowania (GGUF dla llama.cpp, AWQ/GPTQ dla vLLM). „Model produkcyjny QLoRA" to błędna terminologia, na którą napotkasz w dokumentacji i planach projektowych.
Hiperparametry LoRA: gdzie jest przestrzeń na optymalizację
Rank (r) to główna dźwignia. Wyższy rank = więcej trenowalnych parametrów = potencjalnie lepsza jakość, ale też więcej pamięci i ryzyko przetrenowania przy małych datasetach.
Sprawdzone zalecenia:
- rank=4 do rank=8: proste zadania (klasyfikacja, szablonowe odpowiedzi), małe datasety
- rank=16 do rank=32: bardziej złożony instruction tuning, dostosowanie domenowe
- rank=64 i wyżej: tylko gdy masz duże zbiory danych i rezerwę sprzętową; wyższy rank zwiększa też ryzyko „intruder dimensions" (patrz niżej)
Alpha (α) ustawia się standardowo równo z rankiem lub na 2× rank. Dla wariantu rsLoRA teoretycznie uzasadnioną wartością jest α/√r.
Target modules: rekomendujemy trening na wszystkich warstwach liniowych — q_proj, k_proj, v_proj, o_proj oraz gate_proj, up_proj, down_proj. Ograniczenie wyłącznie do warstw attention to starszy wzorzec z 2023 roku, który nowe frameworki już przekroczyły.
DoRA i inne warianty PEFT
DoRA (Weight-Decomposed LoRA) rozkłada aktualizację wag na składowe magnitude i kierunku. W praktyce zamyka ~połowę jakościowej luki między LoRA a full FT przy overhead zaledwie +5–10% VRAM. Dostępna w bibliotece PEFT, Unsloth i Axolotl. Dla projektów, gdzie LoRA nie wystarcza, ale full FT jest cenowo poza zasięgiem, DoRA to naturalny następny krok.
GaLore optymalizuje trening bezpośrednio w przestrzeni gradientów o niskim rzędzie — bez jawnej macierzy adapterowej. Wyniki są porównywalne z full FT przy znacznie niższej pamięci, ale wdrożenie jest technicznie bardziej wymagające.
Dla typowych projektów firmowych rekomendujemy: zacznij od LoRA lub QLoRA, jeśli nie wystarcza — wypróbuj DoRA przed przeskokiem na full FT.
Co wiemy o jakości: intruder dimensions
Praca badawcza „LoRA vs Full Fine-tuning: An Illusion of Equivalence" (2024) przyniosła ważne ostrzeżenie: LoRA i full FT osiągają powierzchownie podobne wyniki, ale innym mechanizmem.
LoRA tworzy tzw. „intruder dimensions" — nowe wektory singularne o wysokim rankingu, które nie istnieją w modelu bazowym. Interferują one z oryginalną przestrzenią reprezentacji, co przejawia się przy continual learning — czyli gdy model trenowany jest sekwencyjnie w wielu domenach. LoRA wykazuje w tym scenariuszu wyraźniejsze katastroficzne zapominanie niż full FT.
Dla jednorazowego fine-tuningu w jednej domenie (co stanowi 90% przypadków firmowych) to ograniczenie jest praktycznie nieistotne. Jeśli jednak planujesz stopniowe doskalowywanie modelu na nowych danych lub nowych domenach, full FT lub continual learning z replay bufferem to bezpieczniejsze podejście.
Powiązany artykuł: SFT, DPO, GRPO — która metoda kiedy
Frameworki w 2026 roku
Cztery główne narzędzia pokrywają cały stack i konkurują ze sobą w szczegółach:
`Unsloth` to najszybszy framework na single-GPU — 2–5× szybszy niż standardowy pipeline HuggingFace przy ~70% oszczędności VRAM w porównaniu z pełnym fine-tuningiem. Triton-fused kernels, gradient checkpointing jako domyślny, wsparcie dla Qwen3, Llama 4 i architektur MoE. Open-source dla single-GPU; rozproszony trening multi-GPU dostępny w subskrypcji Unsloth Pro.
`TRL` od HuggingFace to standard dla metod alignment — SFT, DPO, GRPO, ORPO w jednej bibliotece. Dobrze udokumentowany, zintegrowany z ekosystemem Transformers.
`Axolotl` to production pipeline sterowany przez YAML — odpowiedni przy skalowaniu na wiele GPU i przy bardziej złożonych pipeline'ach (QAT, sequence parallelism, reward modeling). Dla projektów wymagających powtarzalnego, wersjonowanego setupu treningowego.
`LLaMA-Factory` łączy GUI i CLI i obsługuje najszerszą paletę modeli — odpowiedni dla zespołów, w których trening nie jest uruchamiany wyłącznie przez inżynierów ML.
Praktyczny wybór: do wewnętrznego proof-of-concept zacznij od Unsloth (najniższy próg wejścia, szybkość). Do produkcyjnego pipeline'u ze skalowaniem rozważ Axolotl. Do eksperymentów z alignment (DPO/GRPO) sięgnij po TRL.
Więcej o ewaluacji wyników: Jak zmierzyć, czy fine-tuning pomógł
Co zrobić z wytrenowanym adapterem
Adapter LoRA to mały plik (typowo kilka do kilkudziesięciu MB), który można udostępniać i wersjonować niezależnie od modelu bazowego. Do wdrożenia masz dwie opcje:
Merge do modelu bazowego: peft.merge_and_unload() scala macierze adapterowe z oryginalnymi wagami. Wynikiem jest pełnoprawny model bez runtime overhead. Rekomendowane dla produkcji.
Runtime loading: adapter ładowany jest dynamicznie podczas inferencji. Elastyczne przy eksperymentowaniu (wiele adapterów dla tego samego modelu bazowego), ale dodaje latency.
Po merge możesz skwantyzować model do efektywniejszego serwowania — GGUF dla llama.cpp i Ollama, AWQ lub GPTQ dla vLLM. To standardowy flow produkcyjny: trening w QLoRA 4-bit → merge adaptera → kwantyzacja do serwowania.
Powiązane tematy: Kwantyzacja LLM (GGUF, AWQ, GPTQ) i Mały fine-tuned vs duży model bazowy
Najczęstsze pytania
Czy QLoRA to po prostu tańsza wersja LoRA? Nie do końca. QLoRA kwantyzuje zamrożone wagi modelu bazowego do 4 bitów, podczas gdy adaptery LoRA pozostają w BF16. Mechanizm jest odmienny, a trening jest ~20–30% wolniejszy ze względu na overhead dekwantyzacji. QLoRA nie jest za darmo — to kompromis między VRAM a szybkością, a nie jedynie zniżka na jakość.
Czy mogę model QLoRA 4-bit bezpośrednio wdrożyć na produkcji? Nie bezpośrednio. Określenie „QLoRA 4-bit" odnosi się do procesu treningowego, nie do modelu produkcyjnego. Po treningu adapter jest łączony z modelem bazowym i wdrażany w standardowej precyzji, ewentualnie ponownie skwantyzowany do efektywnego serwowania (GGUF, AWQ). „Model produkcyjny QLoRA" to błędna terminologia.
Dlaczego full fine-tuning wymaga tak dużo VRAM w porównaniu z inferencją? Ponieważ trening utrzymuje w pamięci znacznie więcej niż same wagi: gradienty (tej samej wielkości co wagi), stany optymalizatora (przy Adamie 2× wagi dodatkowo) oraz aktywacje do backpropagation. Model 7B przy inferencji działa w 8 GB, trening LoRA wymaga ~15 GB, full FT ~67 GB.
Kiedy LoRA nie wystarcza i potrzebny jest full fine-tuning? W trzech przypadkach: (1) reasoning, matematyka, kodowanie — gdzie 5% różnicy w jakości jest istotne, (2) continual learning z sekwencyjnymi fine-tuningami w wielu domenach (LoRA wykazuje tu wyższe katastroficzne zapominanie), (3) fundamentalna zmiana zachowania modelu wykraczająca poza dostosowanie domenowe.
Czy wyższy rank LoRA zawsze daje lepszy wynik?
Nie automatycznie. Wyższy rank zwiększa pamięć i czas treningu, ale przy małych datasetach raczej zwiększa ryzyko przetrenowania. Wyższy rank produkuje też więcej „intruder dimensions", co może nasilać katastroficzne zapominanie. Do instruction tuningu rank=16 lub rank=32 jest zazwyczaj wystarczający.
Podsumowanie
*Wybór między LoRA, QLoRA a full fine-tuningiem to przede wszystkim decyzja sprzętowa — a dopiero w drugiej kolejności kwestia jakości. W zdecydowanej większości przypadków firmowych (chatboty domenowe, klasyfikacja, ekstrakcja z dokumentów) LoRA lub QLoRA osiągają wymaganą jakość przy ułamku kosztów. Full fine-tuning zachowaj dla sytuacji, w których te pięć procent rzeczywiście robi różnicę. W MP Industrial Solutions pomagamy firmom podjąć tę decyzję na podstawie konkretnych danych — od analizy datasetu, przez dobór sprzętu, aż po wdrożenie. Jeśli rozważasz pierwszy fine-tuning lub chcesz sprawdzić, czy Twój obecny setup ma sens — chętnie przyjrzymy się Twojemu przypadkowi.*
