Low-Rank Adaptation (LoRA) (SV)

From Systems analysis Wiki
Jump to navigation Jump to search

Low-Rank Adaptation (LoRA) — är en metod för parametereffektiv finjustering (PEFT) som gör det möjligt att anpassa stora språkmodeller (LLM) till nya uppgifter med minimala beräkningskostnader. Tekniken presenterades för första gången i en artikel av Edward Hu och hans kollegor år 2021[1].

Fullständig finjustering (full fine-tuning) av stora modeller, såsom LLaMA eller GPT, kräver enorma resurser, vilket gör det oåtkomligt för de flesta forskare och utvecklare. LoRA löser detta problem genom att möjliggöra finjustering av endast en liten del av modellens parametrar, samtidigt som hög kvalitet och prestanda bibehålls, jämförbar med fullständig finjustering[2].

Arbetsprincip

Grundidén med LoRA är att inte förändra de ursprungliga vikterna i den förtränade modellen, utan att lägga till en liten "korrigerande" matris till dem. Istället för att direkt träna en enorm viktmatris `W`, representerar LoRA dess förändring som produkten av två små matriser med lågt rang.

Formellt, om den ursprungliga viktmatrisen för lagret `W_0` har storleken `d × k`, representeras dess uppdatering som `ΔW = BA`, där `B` är en matris med dimensionen `d × r` och `A` är en matris med dimensionen `r × k`. Rangen `r` är en hyperparameter och är avsevärt mindre (`r << d, k`). Under finjusteringsprocessen fryses de ursprungliga vikterna `W_0`, och endast matriserna `A` och `B` tränas. Den slutliga viktmatrisen beräknas som `W = W_0 + BA`.

Detta gör det möjligt att minska antalet träningsbara parametrar tusentals gånger. Till exempel, vid finjustering av GPT-3 (175 miljarder parametrar) minskar LoRA antalet träningsbara parametrar 10 000 gånger och sänker kraven på GPU-minne tre gånger[1].

Viktiga fördelar

  • Resursbesparing: Antalet träningsbara parametrar minskas drastiskt (upp till 90 % och mer), vilket avsevärt reducerar förbrukningen av videominne (VRAM) och påskyndar träningsprocessen.
  • Ingen latens vid inferens (inference): Efter träning kan matriserna `B` och `A` "slås samman" med huvudmatrisen `W_0` genom att beräkna `W = W_0 + BA`. På så sätt tillkommer inga extra beräkningar eller fördröjningar under användning av modellen[1].
  • Modularitet och snabbt byte av uppgifter: Tränade LoRA-adaptrar utgörs av små filer (några megabyte). Detta gör det enkelt att lagra dussintals adaptrar för olika uppgifter och snabbt växla mellan dem utan att ändra grundmodellen[3].

Begränsningar och modifieringar

Även om LoRA är mycket effektiv kan dess lågrangsnatur vara en begränsning för uppgifter som kräver inlärning av stora mängder ny information. För att lösa detta och andra problem har olika modifieringar föreslagits.

QLoRA

QLoRA (Quantized Low-Rank Adaptation) — är en av de mest populära modifieringarna, föreslagen år 2023. Den kombinerar LoRA med 4-bitars kvantiering av grundmodellen[4]. Detta gör det möjligt att ytterligare minska minneskraven och möjliggör finjustering av modeller med tiotals miljarder parametrar (t.ex. 65B-modeller) på ett enda konsument-GPU. Baserat på QLoRA skapades bland annat modellen Guanaco, som visade resultat jämförbara med ChatGPT.

Andra modifieringar

  • MoRA (High-Rank Updating): Föreslagen för uppgifter där LoRA visar otillräcklig prestanda på grund av rangbegränsningen. MoRA använder metoder som möjliggör uppdatering av vikter med högt rang, samtidigt som parametereffektiviteten bibehålls[5].

Implementering och tillämpning

LoRA-tekniken har fått bred spridning tack vare sin effektivitet och enkla integration. Biblioteket PEFT (Parameter-Efficient Fine-Tuning) från företaget Hugging Face har spelat en nyckelroll i dess popularisering. PEFT tillhandahåller ett enhetligt gränssnitt för att tillämpa LoRA och andra PEFT-metoder på modeller i Transformers-ekosystemet[6].

LoRA används aktivt för:

  • Anpassning av chatbottar och dialogsystem (t.ex. finjustering av LLaMA, Mistral).
  • Skapande av modeller för klassificering och textgenerering inom specialiserade områden.
  • Personalisering av modeller för ett specifikt stil- eller dataformat.

Länkar

  • Officiell dokumentation för PEFT-biblioteket från Hugging Face

Litteratur

  • Hu, E.J. et al. (2021). LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685.
  • Dettmers, T. et al. (2023). QLoRA: Efficient Finetuning of Quantized LLMs. arXiv:2305.14314.
  • Zhang, Q. et al. (2023). AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning. arXiv:2303.10512.
  • Chen, Y. et al. (2023). LongLoRA: Efficient Fine-Tuning of Long-Context Large Language Models. arXiv:2309.12307.
  • Mao, K. et al. (2024). A Survey on LoRA of Large Language Models. arXiv:2407.11046.
  • Jiang, T. et al. (2024). MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning. arXiv:2405.12130.
  • Liu, Z. et al. (2024). ALoRA: Allocating Low-Rank Adaptation for Fine-Tuning Large Language Models. arXiv:2403.16187.
  • Liu, J. et al. (2025). RoRA: Efficient Fine-Tuning of LLM with Reliability Optimization for Rank Adaptation. arXiv:2501.04315.
  • Albert, P. et al. (2025). RandLoRA: Full-Rank Parameter-Efficient Fine-Tuning of Large Models. arXiv:2502.00987.
  • Tastan, N. et al. (2025). LoFT: Low-Rank Adaptation That Behaves Like Full Fine-Tuning. arXiv:2505.21289.

Noter

  1. 1.0 1.1 1.2 Hu, E.J., et al. «LoRA: Low-Rank Adaptation of Large Language Models». arXiv:2106.09685. [1]
  2. Mao, K., et al. «A Survey on LoRA of Large Language Models». arXiv:2407.11046. [2]
  3. Noble, Joshua. «What is LoRA (Low-Rank Adaption)?». IBM Technology. [3]
  4. Dettmers, T., et al. «QLoRA: Efficient Finetuning of Quantized LLMs». arXiv:2305.14314. [4]
  5. Jiang, Z., et al. «MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning». arXiv:2405.12130. [5]
  6. «LoRA (Low-Rank Adaptation)». Hugging Face LLM Course. [6]