Artykuł Technologie

Unsloth - szybki fine-tuning modeli LLM na jednym GPU (co to, jak zaczac)

Czym jest Unsloth i dla kogo

W skrócie: Unsloth to otwartoźródłowa biblioteka, która przyspiesza fine-tuning modeli LLM (Llama, Mistral, Qwen) i mocno obniża zużycie pamięci GPU. Dzięki temu dotrenujesz własny model na jednym GPU, a nawet na darmowym Google Colab. Potem eksportujesz go do GGUF i uruchamiasz lokalnie w Ollama.

Fine-tuning to dotrenowanie gotowego, już wyuczonego modelu na Twoich własnych danych - żeby "mówił" Twoim stylem, w Twojej domenie albo w Twoim języku. Przez lata bariera była brutalnie prosta: pamięć karty graficznej. Klasyczne dotrenowanie dużego modelu wymagało kilku profesjonalnych GPU i budżetu, którego solo dev czy analityk zwyczajnie nie ma.

Najważniejsze: Unsloth zbija ten próg wejścia tak nisko, że pierwszy trening odpalisz na darmowym Colabie w przeglądarce. Ten tekst jest dla programisty, analityka albo administratora, który chce mieć model "po swojemu" - bez wynajmowania klastra GPU i bez wysyłania danych do cudzej chmury.

Co to jest Unsloth - definicja i pojęcia

Unsloth to biblioteka open-source do treningu i fine-tuningu dużych modeli językowych, zbudowana wokół ekosystemu Hugging Face i PyTorch. Jej sedno to zestaw ręcznie zoptymalizowanych kerneli (w Triton), które wykonują te same obliczenia co standardowy trening, ale z mniejszym narzutem pamięci i czasu - bez utraty dokładności modelu.

Pod maską kręci się kilka pojęć, które warto rozróżnić, zanim pójdziemy dalej:

  • Fine-tuning - dotrenowanie istniejącego modelu na własnym zbiorze przykładów (instrukcja i oczekiwana odpowiedź).
  • LoRA (Low-Rank Adaptation) - zamiast aktualizować miliardy wag modelu, trenujesz małe "adaptery", co drastycznie obniża zapotrzebowanie na pamięć.
  • QLoRA - LoRA na modelu skwantyzowanym do 4 bitów; pozwala dotrenować spory model na jednej karcie.
  • Kwantyzacja 4-bit - kompresja wag modelu do mniejszej precyzji, żeby zmieścił się w skromnej pamięci GPU.
  • PEFT (Parameter-Efficient Fine-Tuning) - rodzina technik, do której należą LoRA i QLoRA.

Co wyróżnia Unsloth: trening przyspiesza około dwukrotnie i obcina zużycie pamięci GPU o mniej więcej 70 procent w porównaniu do standardowego podejścia, a przy uczeniu ze wzmocnieniem redukcja pamięci sięga nawet 80 procent (dane projektu). W praktyce oznacza to, że model, który wcześniej wymagał kilku kart, dotrenujesz na jednej. Projekt wspiera przy tym ponad 500 modeli - większość tego, co znajdziesz na Hugging Face.

Po co dotrenowywać model - fine-tuning vs RAG vs prompt

Zanim odpalisz trening, zadaj sobie jedno pytanie: czy Ty na pewno potrzebujesz fine-tuningu? Bo są trzy różne narzędzia do trzech różnych problemów i łatwo je pomylić.

Metoda Co robi Kiedy używać
Prompt / instrukcja Sterujesz modelem samym tekstem polecenia Proste, jednorazowe zadania, szybki prototyp
RAG (baza wiedzy) Podajesz modelowi fakty z zewnętrznej bazy w momencie pytania Wiedza zmienna, dokumenty, fakty które trzeba aktualizować
Fine-tuning Uczysz model stałego stylu, formatu i zachowania Powtarzalny ton, własny żargon, format odpowiedzi, język

Konkret: fine-tuning uczy model jak mówić, a RAG dostarcza mu co wiedzieć. Jeśli chcesz, żeby model trzymał sztywny format odpowiedzi, znał branżowy żargon albo lepiej radził sobie z polszczyzną - to zadanie dla fine-tuningu. Jeśli chcesz, żeby odpowiadał na podstawie aktualnej dokumentacji firmy, która zmienia się co tydzień - to raczej RAG, bo dotrenowywanie modelu przy każdej zmianie treści jest nieopłacalne.

Trade-off: fine-tuning to jednorazowy koszt treningu i stały efekt, RAG to prostsza aktualizacja, ale narzut przy każdym zapytaniu. W wielu realnych wdrożeniach używa się obu naraz - dotrenowany model dla stylu plus RAG dla świeżych faktów. Prompt zostawiasz do prostego sterowania zachowaniem; sięgasz po niego zawsze najpierw, bo nie kosztuje ani treningu, ani infrastruktury. Dopiero gdy sam prompt nie utrzymuje stałego formatu czy tonu, wchodzi fine-tuning.

Jak Unsloth przyspiesza trening - LoRA, QLoRA i 4-bit

Cała sztuczka oszczędności pamięci opiera się na tym, że nie ruszasz całego modelu. Duży model to miliardy wag - trzymanie ich wszystkich w trybie treningu, razem ze stanami optymalizatora, wysadza pamięć każdej domowej karty.

LoRA odwraca ten problem. Zamiast aktualizować oryginalne wagi, "zamrażasz" je i trenujesz tylko małe, dodatkowe macierze adapterów. Tych parametrów jest ułamek tego co w pełnym modelu, więc trening mieści się w ułamku pamięci. Efekt końcowy dokładasz do bazowego modelu jako lekką nakładkę.

QLoRA idzie o krok dalej: bazowy model ładujesz w kwantyzacji 4-bit (mocno skompresowany), a na wierzchu trenujesz adaptery LoRA. Dzięki temu na jednym GPU dotrenujesz model, który normalnie by się na nim nie zmieścił.

Pod maską Unsloth dokłada do tego własne, ręcznie napisane kernele obliczeniowe. Robią dokładnie to samo co standardowe operacje biblioteki, tylko z mniejszym marnotrawstwem pamięci i czasu - stąd to przyspieszenie przy zachowaniu jakości. To nie magia ani inny algorytm treningu, tylko lepsza inżynieria tej samej matematyki.

Wymagania - na czym to odpalisz

To zależy - od rozmiaru modelu i tego, jak poważnie podchodzisz do tematu. Ale dobra wiadomość jest taka, że próg startowy jest praktycznie zerowy.

Minimum to jeden układ GPU NVIDIA. I tu kluczowy atut: darmowy Google Colab z kartą T4 (16 GB pamięci) w zupełności wystarcza do dotrenowania mniejszych modeli z użyciem QLoRA. Nie musisz nic instalować lokalnie ani kupować sprzętu - wszystko dzieje się w notebooku w przeglądarce. To właśnie dlatego Unsloth stał się popularny: pierwszy realny fine-tuning masz w zasięgu bez wydawania złotówki.

Do pracy lokalnej Unsloth działa na kartach z serii NVIDIA RTX 30, RTX 40 i RTX 50, na architekturze Blackwell oraz na DGX Spark, a środowiskowo na systemach Windows, Linux, WSL i macOS (dane projektu). Im większy model chcesz trenować, tym więcej pamięci GPU potrzebujesz - a to, ile jej realnie zjada dany model, zależy od jego rozmiaru i kwantyzacji. Zależność między wielkością modelu a wymaganą pamięcią rozkładam na czynniki w tekście o rozmiarach modeli a zużyciu VRAM.

  1. Wybierz model bazowy - np. wariant Llama, Mistral, Qwen czy Gemma w wersji 4-bit, dopasowany do pamięci Twojej karty.
  2. Przygotuj dane w formacie instrukcja i odpowiedź (albo format czatu). Tu jakość bije ilość - kilkaset dobrych, spójnych przykładów daje więcej niż tysiące bałaganu.
  3. Uruchom trening LoRA - to główny krok, w którym powstają adaptery.
  4. Zapisz adaptery i przetestuj model na własnych zapytaniach.

Pojęciowo w kodzie Pythona wygląda to mniej więcej tak (dokładne API i parametry sprawdź w aktualnej dokumentacji projektu, bo bywają aktualizowane):

# instalacja
pip install unsloth

# w notebooku:
from unsloth import FastLanguageModel

# 1. wczytaj model bazowy w 4-bit
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "wybrany-model-4bit",
    load_in_4bit = True,
)

# 2. dodaj adaptery LoRA
model = FastLanguageModel.get_peft_model(model)

# 3. trener na Twoich danych (instrukcja + odpowiedz)
#    -> uruchom trening, zapisz adaptery

Pro tip: zanim rzucisz do treningu duży zbiór, przepuść przez cały pipeline kilkanaście przykładów. Jeśli format danych jest zły, dowiesz się o tym w minutę zamiast po godzinie. Najczęstsze problemy początkujących nie biorą się z modelu, tylko z niechlujnie przygotowanych danych.

Eksport modelu - GGUF do Ollama i serwowanie przez vLLM

To jest moment, w którym trening zamienia się w działające narzędzie - i najważniejsza część układanki dla kogoś, kto pracuje lokalnie. Sam dotrenowany model jest bezużyteczny, dopóki go nie uruchomisz.

Po treningu Unsloth eksportuje model do formatu GGUF (obok Safetensors). GGUF to format, którego oczekują lokalne silniki uruchomieniowe - i tu domyka się pętla. Wyeksportowany plik GGUF podłączysz przez Modelfile i uruchomisz go lokalnie w Ollama.

Najważniejsze: dzięki temu zamykasz cały cykl w jednym miejscu - dotrenuj w Unsloth, uruchom w Ollama, serwuj przez vLLM, wszystko na własnej infrastrukturze i bez abonamentu. Jeśli interesuje Cię polska specyfika, tą samą drogą uruchomisz polski model Bielik.

Ograniczenia i pułapki

Unsloth to świetne narzędzie, ale nie rozwiązuje wszystkiego i ma swoje granice. Warto je znać, zanim się rozczarujesz.

  • Darmowy tier to jedno GPU. Trening na wielu kartach naraz i część bardziej zaawansowanych funkcji bywa zarezerwowana dla wersji rozszerzonej. Jej cennik sprawdź bezpośrednio na stronie projektu.
  • Fine-tuning nie "dokłada wiedzy" niezawodnie. Nie licz na to, że dotrenowaniem wgrasz modelowi bazę faktów, którą będzie bezbłędnie recytował. Do faktów i aktualnej wiedzy służy RAG, nie fine-tuning.
  • Ryzyko overfittingu. Na małym, jednorodnym zbiorze model łatwo "przeuczysz" - zacznie kopiować dane treningowe zamiast generalizować. Trzymaj różnorodność przykładów.
  • Limit czasu sesji na Colabie. Darmowe środowisko potrafi zostać odłączone po pewnym czasie. Zapisuj checkpointy, żeby nie stracić długiego treningu.
  • Format danych to najczęstsze źródło błędów. Więcej treningów kończy się porażką przez źle sformatowany zbiór niż przez cokolwiek innego.

Większy trening - kiedy przydaje się własny serwer GPU

Powiem wprost: do nauki, prototypów i pierwszych eksperymentów darmowy Colab w zupełności wystarcza. Nie potrzebujesz do tego płatnego sprzętu i nie daj sobie wmówić inaczej.

Własny serwer z GPU zaczyna mieć sens dopiero wtedy, gdy wchodzisz w realne, powtarzalne treningi: duże modele, które nie mieszczą się na Colabowej T4, długie sesje liczone w godzinach, dane na tyle wrażliwe, że nie mogą opuścić Twojej infrastruktury, albo potrzeba dotrenowywania cyklicznie, w kółko. Wtedy limity darmowego środowiska - czas sesji, jedna karta, brak kontroli - zaczynają realnie przeszkadzać.

Na tym etapie sprawdza się wynajem maszyny z prawdziwym GPU - i tu ważne zastrzeżenie: klasyczny hosting współdzielony ani zwykły VPS nie mają kart graficznych, więc do treningu się nie nadają. Potrzebujesz dostawcy chmury GPU rozliczanego za godzinę pracy karty, na przykład RunPod, Vast.ai, Lambda albo Google Colab Pro. Odpalisz na nim trening bez limitów czasu i z pełną kontrolą nad danymi. Traktuj to jako opcję na później, nie warunek startu - do nauki wystarcza darmowy Colab.

Gdy już nie tylko trenujesz, ale chcesz też serwować gotowe modele i spinać je z automatyzacjami, przyda się osobny serwer pod inference - jak dobrać hosting pod LLM i automatyzacje, rozkładam w osobnym zestawieniu.

Czy Unsloth jest darmowy?

Tak, Unsloth to projekt open-source, a jego rdzeń jest darmowy - łącznie z gotowymi notebookami do treningu na Google Colab. Dla większej skali, treningu na wielu kartach naraz i bardziej zaawansowanych funkcji dostępna jest wersja rozszerzona. Jej aktualny cennik sprawdź bezpośrednio na stronie projektu.

Czy mogę dotrenować model na darmowym GPU?

Tak, i to jest największy atut Unsloth. Darmowy Google Colab z kartą T4 o pamięci 16 GB w zupełności wystarcza, żeby dotrenować mniejsze modele techniką QLoRA. Nie musisz niczego instalować ani kupować sprzętu - cały trening przeprowadzasz w notebooku uruchomionym w przeglądarce.

Czym różni się fine-tuning od RAG?

Fine-tuning uczy model stałego zachowania: stylu, formatu odpowiedzi, żargonu i języka - czyli tego, jak model ma mówić. RAG podaje modelowi fakty z zewnętrznej bazy w momencie pytania, czyli to, co ma wiedzieć. Do zmiennej wiedzy lepszy jest RAG, do trwałego stylu fine-tuning. Często stosuje się oba naraz.

Jak uruchomić dotrenowany model lokalnie?

Po treningu eksportujesz model z Unsloth do formatu GGUF. Ten plik podłączasz do lokalnego silnika: najprościej uruchomisz go w Ollama przez Modelfile na własnym komputerze, a jeśli potrzebujesz wydajnego serwowania wielu zapytań, użyjesz vLLM. Cały cykl - trening i uruchomienie - odbywa się na Twojej infrastrukturze.

Jakie modele wspiera Unsloth?

Unsloth wspiera popularne rodziny otwartych modeli językowych, między innymi Llama, Mistral, Qwen, Gemma i Phi, korzystając z ekosystemu Hugging Face. Projekt deklaruje wsparcie dla ponad 500 modeli. Konkretną, aktualną listę obsługiwanych modeli i wariantów sprawdzisz w oficjalnej dokumentacji Unsloth.

Źródła

  • Unsloth - strona projektu: unsloth.ai
  • Unsloth - repozytorium: github.com/unslothai/unsloth
  • Unsloth AI na Hugging Face: huggingface.co/unsloth