LoRA-vægte
forkortelse for Low-Rank Adaptation-vægte
LoRA-vægte er en lille mængde trænlige, lavrangsmatricer, der lægges til de frosne basisvægte i en stor sprogmodel for at opnå effektiv fintuning.
Kort fortalt
I stedet for at opdatere alle en models vægte under fintuning, lærer LoRA-vægte kun nogle få ekstra vægte, hvilket sparer tid og hukommelse.
- Kategori
- teknik
- Niveau
- øvet
- Udtale
- /ˈloːʁɑ ˈvɛɡdə/
Betydninger
1- 1
De lavrangstræningsmatricer (A og B), der lægges til en models eksisterende lineære lag for at tilpasse modellen til en ny opgave uden at ændre på de originale vægte.
- Under LoRA-fintuning opdateres kun LoRA-vægtene, mens de oprindelige vægte forbliver frosne. — Eget eksempel
- LoRA-vægtene kan flettes med basisvægtene efter træning for at eliminere inferensoverhead. — Eget eksempel
Hvornår bruges det
LoRA-vægte bruges især ved fintuning af store sprogmodeller (LLM'er) og diffusionsmodeller. Man anvender dem ved at indsætte lavrangsdekomponerede matricer i modelens lineære lag og kun træne disse under fintuning, mens de oprindelige vægte forbliver frosset.
Formel
For et lineært lag med vægte W ∈ ℝ^{d×k} repræsenteres opdateringen ΔW = BA, hvor B ∈ ℝ^{d×r}, A ∈ ℝ^{r×k}, og lille r (typisk 1-64) er rangen. De resulterende LoRA-vægte er B og A.Kodeeksempel
import torch
import torch.nn as nn
class LoRALayer(nn.Module):
def __init__(self, in_features, out_features, rank=4):
super().__init__()
self.A = nn.Parameter(torch.randn(in_features, rank) * 0.02)
self.B = nn.Parameter(torch.zeros(rank, out_features))
def forward(self, x):
return x @ (self.A @ self.B)En simpel PyTorch-implementering af et LoRA-lag, der repræsenterer de trænlige lavrangsmatricer A og B. Under træning opdateres A og B, mens det oprindelige lineære lags vægte forbliver frosne.
Oprindelse
LoRA er et akronym for Low-Rank Adaptation, introduceret af Hu et al. i 2021. Vægte henviser til de trænlige parametre i modellen.