Low-Rank Adaptation
forkortelse for LoRA
Low-Rank Adaptation (LoRA) er en parameter-effektiv finjusteringsteknik, hvor de oprindelige vægte i en forudtrænet model fryses, og der i stedet indsættes trænede, lavrangstillægsmatricer i modellens lag.
Kort fortalt
LoRA gør det muligt at finjustere store sprogmodeller ved kun at træne en lille mængde ekstra parametre i stedet for hele modellen.
- Kategori
- teknik
- Niveau
- øvet
Betydninger
1- 1
En parameter-effektiv finjusteringsteknik, der indsætter trænbare lavrangstillægsmatricer i et forudtrænet neurale netværks lag, så de oprindelige vægte forbliver uændrede.
- Ved at anvende LoRA på en 175-milliarders GPT-3-model reduceres antallet af trænbare parametre fra 175 milliarder til under 10 millioner. — LoRA: Low-Rank Adaptation of Large Language Models (2021)
- LoRA er blevet særligt udbredt til finjustering af Stable Diffusion-modeller, hvor det giver brugerne mulighed for at skabe specialiserede stilarter uden at gemme hele modellen. — PEFT: Parameter-Efficient Fine-Tuning (Hugging Face)
Hvornår bruges det
LoRA bruges primært til at finjustere store sprogmodeller (LLM'er) og diffusionsmodeller, når fuld finjustering er for ressourcekrævende. Det er særligt populært i open-source-fællesskabet, da det gør det muligt at dele og genbruge små adaptervægte.
Formel
For et forudtrænet vægtlag W ∈ ℝ^{d×k} tilføjes et lavrangsopdatering ΔW = BA, hvor B ∈ ℝ^{d×r}, A ∈ ℝ^{r×k} og r ≪ min(d,k). Den modificerede fremadgående beregning bliver h = Wx + BAx.Kodeeksempel
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("gpt2")
lora_config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["c_attn"],
lora_dropout=0.1
)
lora_model = get_peft_model(model, lora_config)
print(f"Trænbare parametre: {lora_model.num_parameters(only_trainable=True)}")Eksempel på hvordan man anvender LoRA på en GPT-2-model ved hjælp af Hugging Face PEFT-biblioteket. Kun opmærksomhedslagets projektionsmatrix er målrettet, og antallet af trænbare parametre reduceres drastisk.
Oprindelse
Termen 'Low-Rank Adaptation' stammer fra ideen om at parametreopdateringen under finjustering kan indfanges i lavrangmatricer, hvilket reducerer antallet af trænbare parametre markant.