LoRA i QLoRA do ekonomicznego dostrajania
Trenuj wyłącznie adaptery niskiego rzędu na skwantyzowanej bazie — dostrojenie modelu 70B mieści się na pojedynczym GPU.
LoRA i QLoRA do ekonomicznego dostrajania to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Dlaczego PEFT?
Pełne dostrajanie Llama 70B wymaga ponad 8 układów H100 i aktualizuje 70 miliardów parametrów. PEFT (dostrajanie efektywne parametrowo) aktualizuje mniej niż 1% parametrów przy podobnej jakości. Oznacza to ogromne oszczędności kosztów.
LoRA: adaptacja niskiego rzędu
LoRA (Hu i in. 2021) trenuje niewielkie macierze „adapterów” obok zamrożonych wag bazowych:
- Dodaje macierze A x B, gdzie A ma rozmiar dxr, B ma rozmiar rxd, a r jest małe (8, 16, 64)
- Przejście w przód: y = Wx + (BA)x
- Trenuje wyłącznie A i B — liczba parametrów jest o rzędy wielkości mniejsza
QLoRA: skwantyzowane LoRA
QLoRA (Dettmers i in. 2023) dodatkowo obniża koszty, kwantyzując model bazowy do 4 bitów podczas trenowania:
- Model bazowy w formacie NF4 (4-bitowym)
- Adaptery LoRA z większą precyzją
- Umożliwia dostrojenie modelu 70B na pojedynczym układzie A100/H100
Setup with peft + transformers
# pip install peft transformers bitsandbytes
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
'meta-llama/Llama-3.1-8B-Instruct',
load_in_4bit=True, # QLoRA
device_map='auto'
)
lora_config = LoraConfig(
r=16, # rank
lora_alpha=32,
target_modules=['q_proj', 'v_proj'],
lora_dropout=0.05,
bias='none'
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: ~0.5% of totalTraining Loop with TRL
from trl import SFTTrainer
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
tokenizer=tokenizer,
args=TrainingArguments(
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
num_train_epochs=3,
output_dir='./lora-out'
)
)
trainer.train()
model.save_pretrained('./adapter')Korzystanie z Unsloth
Unsloth to najszybsza biblioteka LoRA — działa 2 razy szybciej niż standardowa biblioteka peft. Oferuje interfejs typu drop-in:
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name='meta-llama/Llama-3.1-8B-Instruct',
load_in_4bit=True
)
model = FastLanguageModel.get_peft_model(
model,
r=16,
target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj', 'gate_proj', 'up_proj', 'down_proj']
)Szacowanie kosztów
QLoRA dla Llama 3.1 8B z 10 tys. przykładów:
- około 4 godziny na pojedynczym układzie H100
- około 5–10 USD kosztu chmurowego GPU
- plik adaptera: 100–300 MB
Wybór rangi r
- r = 8 — minimalna wartość, zmiany formatu lub stylu
- r = 16–32 — większość przypadków
- r = 64+ — znacząco nowe zachowanie i większa pojemność
Moduły docelowe
Domyślnie należy wybrać projekcje mechanizmu uwagi (q, v). Aby zwiększyć pojemność, należy uwzględnić wszystkie warstwy liniowe — zapewnia to lepszą jakość, ale zwiększa liczbę parametrów.
Najważniejsze hiperparametry
- Współczynnik uczenia — typowa wartość to 1e-4–5e-4
- Liczba epok — 2–5 dla SFT
- Rozmiar batcha — zależy od VRAM; aby symulować większy batch, należy użyć akumulacji gradientu
Scalanie adaptera z modelem bazowym
Na potrzeby inferencji można ponownie scalić LoRA z wagami bazowymi:
merged = model.merge_and_unload()
merged.save_pretrained('./full-model')Obsługa wielu LoRA
vLLM obsługuje dynamiczne przełączanie LoRA w czasie inferencji. Jest to przydatne w przypadku dostrojeń dla poszczególnych klientów korzystających ze wspólnego modelu bazowego:
llm = LLM(model='base', enable_lora=True, max_lora_rank=64)
response = llm.generate(prompt, lora_request=LoRARequest('customer-a', 1, './customer-a-adapter'))Ewaluacja adaptera
Zawsze należy uruchamiać WŁASNY zbiór ewaluacyjny na dostrojonym modelu. Czasami dostrojenie pogarsza wyniki w przypadkach brzegowych — należy uczciwie informować o regresjach.
Zaleta LoRA
Jaka jest główna praktyczna przewaga LoRA nad pełnym dostrajaniem?
Podsumowanie
LoRA + QLoRA oznaczają ekonomiczne dostrajanie. Unsloth zapewnia szybkość, a peft/TRL szerokie możliwości. W większości przypadków należy używać rangi 16–32. Ewaluację należy przeprowadzać względem referencyjnego zbioru danych.
Ucz się AI Agents dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 60
- Lekcje
- 239
Często zadawane pytania
Czy lekcja „LoRA i QLoRA do ekonomicznego dostrajania” jest bezpłatna?
Tak — pełny tekst „LoRA i QLoRA do ekonomicznego dostrajania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „LoRA i QLoRA do ekonomicznego dostrajania”?
Trenuj wyłącznie adaptery niskiego rzędu na skwantyzowanej bazie — dostrojenie modelu 70B mieści się na pojedynczym GPU. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „LoRA i QLoRA do ekonomicznego dostrajania”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Kiedy dostrajanie przewyższa promptowanie
- Zbieranie danych: trajektorie i odtwarzanie śladów
- LoRA i QLoRA do ekonomicznego dostrajania
- Ocena dostrojonych modeli względem bazowego