Das Kernprinzip
LoRA basiert auf einer einfachen, aber leistungsstarken Erkenntnis: Die Gewichtsaktualisierungen während der Feinabstimmung haben einen niedrigen "intrinsischen Rang". Anstatt die vollständige Gewichtsmatrix W zu modifizieren, zerlegt LoRA die Aktualisierung in zwei kleinere Matrizen A und B, sodass die Aktualisierung ΔW = BA ist.
Mathematische Grundlage
Für eine vortrainierte Gewichtsmatrix W₀ ∈ ℝ^(d×k) beschränkt LoRA ihre Aktualisierung durch eine Low-Rank-Zerlegung:
W = W₀ + BA
Wobei B ∈ ℝ^(d×r) und A ∈ ℝ^(r×k), mit Rang r ≪ min(d,k)
Implementierungsschritte
- Basismodell einfrieren: Alle vortrainierten Gewichte W₀ während des Trainings eingefroren halten
- Low-Rank-Matrizen hinzufügen: Trainierbare Matrizen A und B in Zielschichten einfügen
- Aktualisierung skalieren: Skalierungsfaktor α/r anwenden, um die Anpassungsstärke auszugleichen
- Effizient trainieren: Nur die Low-Rank-Matrizen während der Feinabstimmung optimieren
- Gewichte zusammenführen: Optional LoRA-Gewichte für die Inferenz zurück ins Basismodell zusammenführen
Rangauswahlstrategie
Der Rang r ist ein entscheidender Hyperparameter, der Modellkapazität und Effizienz ausbalanciert. Forschungen zeigen, dass Ränge zwischen 4 und 16 für die meisten Anwendungen gut funktionieren, wobei höhere Ränge nur für hochspezialisierte Domänen benötigt werden.