LoRA (Low-Rank Adaptation)
LoRA (Low-Rank Adaptation) je technika, ako doladiť veľký model na konkrétnu úlohu tak, že necháš pôvodné váhy „zamrznuté" a učíš len malé doplnkové vrstvy — výsledkom je lacnejší, praktickejší a modulárny fine-tuning. Od svojho vzniku v roku 2021 sa LoRA stala štandardom v komunite a v roku 2026 je základným nástrojom každého, kto pracuje s open-source modelmi.
1. Čo to je (definícia + analógia)
Jadro: namiesto úpravy miliónov/miliárd parametrov trénuješ malé „adaptéry", ktoré modelu jemne zmenia správanie.
Analógia s okuliarmi: oči (základný model) necháš rovnaké, ale pridáš šošovky (LoRA), ktoré zmenia, ako vidíš detail pre konkrétnu situáciu. Môžeš mať viac párov šošoviek — na čítanie, šport, noc — a vymieňaš ich podľa kontextu.
Prečo low-rank: zmena správania sa dá často vystihnúť „menšou" úpravou než plnou maticou váh. Väčšina úloh nevyžaduje modifikáciu každého parametra — stačí zachytiť niekoľko kľúčových dimenzií.
Kde sa s tým stretneš: pri prispôsobovaní open-source modelov (Llama, Mistral, Gemma, Qwen), pri generovaní obrázkov/štýlov (Stable Diffusion, Flux), aj pri doménových jazykových modeloch pre firmy.
Pôvod: metóda pochádza z papiera „LoRA: Low-Rank Adaptation of Large Language Models" (Hu et al., 2021, Microsoft Research), dnes citovaného státisíckrát.
2. Ako to funguje
Zmrazenie základného modelu: pôvodné váhy sa nemenia, čo znižuje riziko, že „rozbiješ" všeobecné schopnosti modelu (catastrophic forgetting je tu výrazne tlmený).
Pridanie adaptérov: do vybraných vrstiev (typicky attention projekcie —
q_proj,k_proj,v_proj,o_proj) sa vložia malé trénovateľné matrice nízkého ranku.Tréning len adaptérov: učíš radovo menej parametrov, takže:
- Rýchlejšie trénuješ (desatiny až stovky hodín GPU namiesto tisícov),
- potrebuješ menej pamäte (LoRA adaptér pre 7B model môže mať len 50–200 MB),
- vieš spraviť viac variantov naraz bez replikovania základného modelu.
Použitie v inferencii: LoRA môže byť:
- Pripojená dynamicky (zapnúť/vypnúť podľa potreby, jeden base model, N adaptérov),
- alebo zliata do váh pred deploymentom (merge + unload), čím sa elimínuje overhead pri inferencii.
Praktický detail: kvalita závisí od toho, kam adaptér vložíš (ktoré vrstvy a projekcie), akú „kapacitu" (rank
r) mu dáš a aký pomeralpha/rpoužiješ na škálovanie gradientov.
3. Matematika v jednej rovnici (a v kóde)
LoRA aproximuje zmenu váhovej matice ΔW ako súčin dvoch malých matíc nízkého ranku r:
W_eff = W_frozen + (B · A) · (alpha / r)
\______/ \_____/
zamrznuté trénované (A: r×d_in, B: d_out×r) — zlomok parametrov
Ak má pôvodná matica rozmer d_out × d_in, LoRA ukladá len r × (d_in + d_out) parametrov. Pri r=8 a typickej attention projekcii so d=4096 to znamená úsporu ~99 %.
class LoRALinear(nn.Module):
def __init__(self, base, r=8, alpha=16):
super().__init__()
self.base = base # zamrznuté pôvodné váhy
self.A = nn.Parameter(torch.randn(r, base.in_features) * 0.01)
self.B = nn.Parameter(torch.zeros(base.out_features, r))
self.scale = alpha / r
def forward(self, x):
return self.base(x) + (x @ self.A.T @ self.B.T) * self.scale
B sa inicializuje na nulu, takže na začiatku sa model správa presne ako pôvodný a postupne sa doladí. A sa inicializuje náhodne (Gaussian), aby gradient cez B nebol nulový od začiatku.
4. Varianty a rozšírenia (stav 2026)
LoRA odštartovala celú rodinu metód, ktoré riešia jej slabé miesta:
| Variant | Čo pridáva oproti LoRA | Kedy použiť |
|---|---|---|
| QLoRA | Základný model kvantizovaný na 4-bit (NF4), adaptér v plnej presnosti | Tréning na spotrebiteľskom GPU (RTX 4090, 24 GB VRAM) |
| DoRA | Dekomponuje váhy na smer + magnitúdu, trénuje obe | Lepšia stabilita trénovania, blíži sa plnému fine-tuningu |
| LoRA+ | Rôzne learning rates pre matice A a B | Rýchlejšia konvergencia bez zmeny architektúry |
| VeRA | Zdieľané zamrznuté matrice A a B naprieč vrstvami, trénujú sa len škálovacie vektory | Extrémne malé adaptéry (tisícnásobne menej parametrov) |
| MoLoRA | Mixture-of-experts nad LoRA adaptérmi | Viac úloh v jednom adaptéri bez konfliktov |
| LongLoRA | Rozšírenie kontextového okna bez plného fine-tuningu | Modely s dlhým kontextom (32k–128k tokenov) |
| LoRA-FA | Zamrazí aj maticu A, trénuje len B | Minimálne požiadavky na pamäť pri zachovaní kvality |
V roku 2026 je QLoRA de facto štandardom pre experimentovanie na bežnom hardvéri. Frameworky ako Unsloth kombinujú QLoRA s optimalizovanými CUDA kernelmi a dosahujú 2–5× rýchlejší tréning oproti naivnej implementácii.
5. Hyperparametre: ako ich vybrať
Výber správnych nastavení je pri LoRA rovnako dôležitý ako kvalita dát. Zlý rank alebo nesprávne cieľové moduly môžu eliminovať akýkoľvek prínos.
Rank (r):
r=4–8: postačí pre štýl, formát, jednoduchú doménu.r=16–32: vhodné pre komplexnejšie doménové doladenie s viacerými schopnosťami.r=64–128: blíži sa plnému fine-tuningu, používa sa na substantívne zmeny správania.- Zvyšovanie ranku nad praktický strop (závisí od datasetu) neprináša zisk — len predražuje tréning.
Alpha (alpha):
- Typicky
alpha = 2 × r(napr.r=16,alpha=32). - Pomer
alpha/rurčuje efektívne škálovanie — jeho zmena má podobný efekt ako zmena learning rate pre adaptér.
Cieľové moduly (target_modules):
- Minimum:
q_proj,v_proj(attention query a value). - Štandard: všetky attention projekcie vrátane
k_proj,o_proj. - Maximum: aj MLP vrstvy (
gate_proj,up_proj,down_proj) — lepšia kvalita, viac parametrov.
Dropout:
lora_dropout=0.05–0.1pomáha pri malých datasetoch (< 1 000 príkladov).- Pri väčších datasetoch môže byť 0.
6. Nástroje a ekosystém
V roku 2026 existuje zrelý ekosystém pre prácu s LoRA:
- HuggingFace PEFT — referenčná implementácia, podporuje LoRA, QLoRA, DoRA, AdaLoRA. Integrovaná s
transformersatrl. - Unsloth — optimalizovaný tréning (2–5× rýchlejší, 60 % menej pamäte), jednoduchý API, populárny pre experimenty na jednej GPU.
- Axolotl — konfigurovateľný YAML-driven framework, podporuje distribuovaný tréning, vhodný pre produkciu.
- LLaMA-Factory — webové UI + CLI, vhodné pre tímy bez hlbokých ML znalostí.
- torchtune — PyTorch-natívna alternatíva od Meta, dobre integrovaná s PyTorch 2.x.
- Civitai / HuggingFace Hub — distribučné platformy pre hotové LoRA adaptéry (obrazové modely, jazykové štýly).
Minimálny príklad s PEFT:
from peft import get_peft_model, LoraConfig, TaskType
config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
r=16,
lora_alpha=32,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
lora_dropout=0.05,
bias="none",
)
model = get_peft_model(base_model, config)
model.print_trainable_parameters()
# trainable params: 20,971,520 || all params: 7,241,732,096 || trainable%: 0.29
7. Prečo je to dôležité / kde sa to používa
Personalizácia bez obrovských nákladov: firmy aj jednotlivci vedia mať vlastné verzie modelu pre:
- špecifický štýl komunikácie (zákaznícky support, interné odpovede),
- doménu (práca s internými dokumentmi, technická terminológia, právne texty),
- formát (šablóny, JSON výstupy, konzistentné štruktúry).
Ekosystém „malých doplnkov": namiesto jedného monolitického modelu vzniká knižnica LoRA modulov — rôzne štýly, rôzne úlohy, rôzne jazyky. Jeden base model, desiatky špecializácií.
Výskum a experimentovanie: vieš rýchlo porovnať, ktorý adaptér funguje lepšie, bez pretrénovania celého modelu. Iteračný cyklus sa skracuje z dní na hodiny.
Obrazová generácia: v ekosystéme Stable Diffusion a Flux sú LoRA „balíčky štýlu" — jeden súbor 50–200 MB zachytáva umelecký štýl, tvár osoby, alebo vzhľad produktu.
8. Výhody a obmedzenia
| Prístup | Výhoda | Kedy zlyháva |
|---|---|---|
| LoRA | Lacný fine-tuning, malé súbory, rýchle iterácie, modularita | Keď potrebuješ hlbokú zmenu správania naprieč celým modelom |
| QLoRA | Tréning na spotrebiteľskom GPU, ešte menej pamäte | Mierne pomalší, drobná degradácia kvality vs. LoRA v plnej presnosti |
| Plný fine-tuning | Maximálna flexibilita, najvyššia strop kvality | Drahý, riziko catastrophic forgetting, veľké checkpointy |
| Len promptovanie | Nula tréningu, rýchle nasadenie | Keď chceš stabilný štýl a prompt je príliš krehký alebo dlhý |
| RAG | Pridáva znalosti bez trénovania | Keď problém je v správaní, nie v chýbajúcich faktoch |
Ďalšie obmedzenia:
- Obmedzená kapacita: malý adaptér nemusí stačiť na komplexnú doménu s mnohými sub-schopnosťami.
- Konflikty medzi adaptérmi: viac LoRA naraz môže viesť k nečakanému miešaniu štýlov — riešia to metódy ako LoRA merging (TIES, DARE) alebo MoLoRA.
- Kvalita dát je kritická: LoRA ti neodpustí zlé príklady — chaotické dáta = chaotické správanie, a s malým počtom parametrov sa to prejaví rýchlejšie než pri plnom fine-tuningu.
- Zameranie na existujúce schopnosti: LoRA doladí, čo model vie — nevloží mu znalosti, ktoré nikdy nevidel.
9. Praktické použitie
Pre bežného používateľa: ak používaš nástroje, ktoré ponúkajú „štýlové balíčky" alebo doménové doplnky, často ide práve o LoRA alebo podobný adaptér.
Pre tím, ktorý chce vlastný štýl: LoRA je dobrá voľba, keď chceš:
- konzistentný tón (napr. stručné odpovede, vždy s bodmi),
- dodržiavanie formátu (napr. JSON štruktúry, Markdown tabuľky),
- doménové frázy (produktové názvy, interné skratky, odborná terminológia).
Odporúčaný minimálny dataset:
- Štýl/formát: 200–500 kvalitných príkladov.
- Doménové znalosti: 1 000–5 000 príkladov (závisí od šírky domény).
- Komplexné správanie: 5 000–50 000 príkladov.
Tipy, ktoré šetria nervy:
- Verzionovanie: označ si, na akých dátach, s akým rankom a s akým base modelom LoRA vznikla.
- Test set: mal sadu 50–200 otázok, na ktorých vždy porovnáš starú a novú verziu pred deploymentom.
- Jasné ciele: trénuj na jednu vec (štýl, doména, formát) — miešanie cieľov bez kontroly sa rýchlo pokazí.
- Eval pred merge: vždy otestuj adaptér pripojený dynamicky pred tým, než ho zlúčiš do base modelu.
Kedy to nepoužiť: ak je problém skôr v chýbajúcich informáciách než v správaní, často viac pomôže RAG (pripojenie znalostnej bázy) než LoRA. LoRA mení, ako model odpovedá — nie čo vie.
10. Súvislosti
- Transfer learning: LoRA je parameter-efficient forma fine-tuningu — stavíš na to, čo model už vie.
- Gradient Descent: trénujú sa len adaptéry — nízky learning rate (1e-4 až 3e-4) je štandard.
- Overfitting: pri malom datasete LoRA ľahko „prestrelí" — dropout a early stopping sú kľúčové.
- Diffusion models: v generovaní obrázkov sú LoRA „balíčky štýlu", dnes na Civitai státisíce hotových adaptérov.
- Quantization: QLoRA kombinuje 4-bitovú kvantiizáciu so štandardnou LoRA — základ pre tréning na spotrebiteľskom hardvéri.
- RAG: komplementárna technika — keď chýbajú znalosti (nie štýl), RAG je správnejšia voľba.
Zhrnutie
- LoRA umožní doladiť model tým, že trénuješ malé nízkorehovodné adaptéry namiesto celých váh — typicky menej než 1 % parametrov.
- Výhody sú nízka cena, rýchlosť a modularita — jeden base model, desiatky špecializácií, každá ako malý súbor.
- V roku 2026 je ekosystém zrelý: QLoRA + Unsloth pre experimenty, Axolotl pre produkciu, PEFT ako referenčná implementácia.
- Limity sú kapacita adaptéra, možné konflikty pri kombinovaní a veľká závislosť od kvality tréningových dát.
- V praxi je ideálne na štýl, formát a doménové doladenie bez extrémnych nákladov; keď chýbajú znalosti (nie štýl), správnejšia voľba je RAG.