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ší a praktickejší fine-tuning.
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.
Prečo low-rank: zmena správania sa dá často vystihnúť „menšou“ úpravou než plnou maticou váh.
Kde sa s tým stretneš: pri prispôsobovaní open-source modelov alebo pri generovaní obrázkov/štýlov, kde sa LoRA používa ako „balíček štýlu“.
2. Ako to funguje
Zmrazenie základného modelu: pôvodné váhy sa nemenia, čo znižuje riziko, že „rozbiješ“ všeobecné schopnosti.
Pridanie adaptérov: do vybraných vrstiev sa vložia malé trénovateľné matrice.
Tréning len adaptérov: učíš menej parametrov, takže:
Rýchlejšie trénuješ,
potrebuješ menej pamäte,
vieš spraviť viac variantov.
Použitie v inferencii: LoRA môže byť:
Pripojená dynamicky (zapnúť/vypnúť podľa potreby),
alebo zliata do váh (podľa implementácie a použitia).
Praktický detail: kvalita závisí od toho, kam adaptér vložíš a akú „kapacitu“ (rank) mu dáš.
3. 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 (support, interné odpovede),
doménu (práca s internými dokumentmi, technická terminológia),
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.
Experimentovanie: vieš rýchlo porovnať, ktorý adaptér funguje lepšie, bez pretrénovania všetkého.
4. Výhody a obmedzenia
| Prístup | Výhoda | Kedy zlyháva |
|---|---|---|
| LoRA | Lacný fine-tuning, malé súbory, rýchle iterácie | Keď potrebuješ hlbokú zmenu správania naprieč celým modelom |
| Plný fine-tuning | Maximálna flexibilita | Drahý, riziko „zabudnutia“ (catastrophic forgetting) |
| Len promptovanie | Nula tréningu, rýchle nasadenie | Keď chceš stabilný štýl a prompt je príliš krehký |
Obmedzená kapacita: malý adaptér nemusí stačiť na komplexnú doménu.
Konflikty medzi adaptérmi: viac LoRA naraz môže viesť k nečakanému miešaniu štýlov.
Kvalita dát: LoRA ti neodpustí zlé príklady — ak trénuješ na chaotických dátach, dostaneš chaotické správanie.
5. 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),
doménové frázy (produktové názvy, interné skratky).
Tipy, ktoré šetria nervy:
Verzionovanie: označ si, na akých dátach a s akými nastaveniami LoRA vznikla.
Test set: maj sadu 30–100 otázok, na ktorých vždy porovnáš starú a novú verziu.
Jasné ciele: trénuj na jednu vec (štýl, doména, formát) — miešanie cieľov bez kontroly sa rýchlo pokazí.
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 znalostí) než LoRA.
6. Matematika v jednej rovnici (a v kóde)
LoRA aproximuje zmenu váhovej matice ΔW ako súčin dvoch malých matíc nízkeho ranku r:
W_eff = W_frozen + (B · A) · (alpha / r)
\______/ \_____/
zamrznuté trénované (A: r×d, B: d×r) — zlomok parametrov
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í.
7. Súvislosti
- Transfer learning: LoRA je úsporná forma fine-tuningu (parameter-efficient).
- Gradient Descent: trénujú sa len adaptéry — nízky learning rate je kľúčový.
- Overfitting: pri malom datasete LoRA ľahko „prestrelí".
- Diffusion models: v generovaní obrázkov sú LoRA „balíčky štýlu".
Zhrnutie
- LoRA umožní doladiť model tým, že trénuješ malé adaptéry namiesto celých váh.
- Výhoda je nízka cena, rýchlosť a modularita — vieš mať viac špecializovaných variantov a len ich prepínať.
- Limity sú kapacita adaptéra, možné konflikty a veľká závislosť od kvality tréningových dát.
- V praxi je to ideálne na štýl, formát a doménové doladenie bez extrémnych nákladov; keď chýbajú znalosti (nie štýl), často viac pomôže RAG.