Přejít na hlavní obsah
Sleva 50% všechny plány, omezený čas. Od $2.48/mo
15 min left
AI a strojové učení

LoRA vs. QLoRA vs. Full Fine-Tuning: Kterou metodu použít?

B Autor: Brian 15 min čtení
LoRA vs QLoRA vs full fine-tuning compared by VRAM use, quality, and when each method wins

Rozhodli jste se fine-tunovat model 7B na svých vlastních datech. Pak narazíte na první skutečnou rozcestí: tři názvy metod, každý s jinou odpovědí. Dokumentace Unsloth říká začít s QLoRA. Axolotl říká, že to závisí na vašem hardwaru. Polovina blogových příspěvků, které jste prolétli, říká „použijte LoRA pro většinu případů“ a jde dál. Mezitím civíte na jednu GPU a nejste si jistí, jestli na ní vůbec jedna z těch metod poběží.

Toto je rozhodnutí, které předchází všemu ostatnímu. Zvolená metoda určuje váš rozpočet VRAM, rozpočet VRAM určuje váš hardware a hardware určuje vaše náklady. Zvolíte-li špatnou metodu, buď vyhodíte peníze za paměť GPU, kterou jste nepotřebovali, nebo strávíte víkend honěním pádů kvůli nedostatku paměti na kartě, která na tu práci nikdy nestačila.

Tak to vyřešme. Tady je, co skutečně odlišuje LoRA, QLoRA a full fine-tuning, kolik vás každá z nich stojí v paměti a kvalitě, a pravidlo, jak zařadit váš vlastní případ k jedné z nich.

Zkrácená verze

  • Výchozí volbou je QLoRA. Pro většinu fine-tuningů na jedné GPU začněte s QLoRA. Tabulka Axolotl uvádí, že běh QLoRA na 7-8B modelu zabere zhruba 10-14 GB VRAM, za předpokladu krátkého kontextu a malých micro-batchů. To se vejde na mnoho spotřebitelských nebo prosumer karet s 12-24 GB, ale ne na každou kartu s nízkou VRAM. Sáhněte po běžné LoRA, když máte paměti nazbyt a chcete rychlejší kroky; full fine-tuning si nechte na vzácné případy, které ho skutečně potřebují.
  • Rozdíl ve VRAM je velký. Fine-tuning modelu 7B zabere přibližně 60-80 GB pro full fine-tuning, 16-24 GB pro LoRA a 10-14 GB pro QLoRA, podle zveřejněných údajů Axolotl. Tento rozdíl je celým důvodem, proč parametricky efektivní metody vůbec existují.
  • Ztráta kvality závisí na úloze, není konstantní. U většiny úloh sledování instrukcí a strukturovaného výstupu se LoRA a QLoRA pohybují v rozsahu několika procent od plného fine-tuningu. Rozdíl se zvětšuje u složitého uvažování, jako je matematika. Právě tam si plný fine-tuning svou cenu stále zaslouží.
  • Plný fine-tuning je výjimka, ne výchozí základ. Sáhnete po něm při velkých posunech distribuce, změnách v měřítku pre-trainingu nebo u úloh kritických pro uvažování, kde benchmarky ukazují rozdíl, ne jako bezpečnou výchozí volbu.

Co tento průvodce nepokrývá

Toto je průvodce výběrem metody, nikoli návod k implementaci. Několik věcí je záměrně mimo rozsah:

  • Varianty LoRA (DoRA, VeRA, LoRA+). Tři základní metody jsou rozhodnutí, které je důležité učinit nejdřív; varianty jsou vylepšení, ke kterým se sáhne později.
  • Kód krok za krokem. Zde nejsou žádné instalační příkazy ani trénovací skripty. To je samostatný praktický návod, který zde nepokrýváme.
  • Trénování na více GPU (FSDP, DeepSpeed ZeRO) a příprava datové sady: obojí jsou samy o sobě rozsáhlá témata.
  • RLHF, DPO a optimalizace preferencí. Jde o jinou třídu cílových funkcí než supervised fine-tuning.
  • Zda byste měli fine-tuning dělat vůbec. Pokud si nejste jisti, zda je fine-tuning správným nástrojem oproti retrievalu, toto srovnání si zaslouží vlastní odpověď dřív, než si zde vyberete metodu.

Co skutečně odlišuje LoRA, QLoRA a plný fine-tuning?

Three ways to adapt a model, each with a different training footprint: full fine-tuning updates all weights with the highest training footprint, LoRA freezes the base model and trains small adapter matrices, and QLoRA trains adapters on a quantized 4-bit frozen base for the lowest VRAM use

Plný fine-tuning aktualizuje každý parametr modelu. LoRA zmrazí základní model a místo toho trénuje malé matice adapterů s nízkým rankem (zhruba 0,1-2 % počtu parametrů). QLoRA k tomu navíc přidává jeden krok oproti LoRA: kvantizuje zmrazený základní model na 4bitovou přesnost (pomocí datového typu nazvaného NF4, NormalFloat), takže základní model zabírá při trénování adapterů mnohem méně paměti.

Nejjasnější způsob, jak si ty tři udržet v hlavě, je jako žebřík, kde každý stupeň odstraňuje jednu nákladovou položku toho pod ním.

Plné fine-tuning je nejnižší stupeň, a nejnáročnější. Každá váha je trénovatelná, takže optimizér musí u každého parametru modelu sledovat gradient a stav optimizéru. Právě tam mizí paměť, a k matematice se dostaneme v další části.

LoRA (Low-Rank Adaptation) zamrazí původní váhy a do vrstev modelu vloží malé trénovatelné matice. Učí se jen tyto matice; základní model jede jen jako pasažér. Podle článku o LoRA to snižuje trénovatelné parametry až o 10 000x u modelu s 175B parametry a při tomto rozsahu zhruba 3x snižuje paměť GPU, přičemž dosahuje výkonu "na úrovni fine-tuningu nebo lepšího z hlediska kvality modelu" na modelech, které autoři testovali. Protože se mění tak málo parametrů, natrénovaný výsledek je drobný. Blog blog PEFT uvádí dva užitečné referenční body: úplný checkpoint o velikosti 40 GB pro bigscience/mt0-xxl, a samostatný příklad LoRA, kde uložený adaptér má jen 19 MB. Smysl je stejný: checkpointy PEFT jsou obvykle drobné ve srovnání s úplnými checkpointy modelu.

QLoRA vezme LoRA a zmenší tu část, kterou LoRA nechala nedotčenou: zamrzlý základ. Kvantizace těchto vah na 4bitový NF4 znamená, že základní model zabírá jen zlomek paměti, kterou by zabíral při 16 bitech, zatímco adaptéry nad ním se stále trénují s plnou přesností. Článek o QLoRA popisuje NF4 jako "informačně teoreticky optimální pro normálně rozdělené váhy", což je přesný způsob, jak řeknout, že 4bitová reprezentace je zvolena tak, aby odpovídala tomu, jak jsou váhy modelu skutečně rozděleny, takže ztratíte méně, než by stálo naivní 4bitové zaokrouhlování.

To je celý koncepční zásobník: plné fine-tuning trénuje vše, LoRA zamrazí základ a trénuje adaptéry, QLoRA komprimuje zamrzlý základ a trénuje adaptéry. Vše ostatní (VRAM, kvalita, kdy použít co) vyplývá z těchto tří rozhodnutí.

Kolik VRAM potřebuje každá metoda?

VRAM needed by fine-tuning method and model size: full fine-tuning needs 24-32 GB for 1-3B models, 60-80 GB for 7-8B models, and 4-8x 80 GB for 70B+ models, versus much lower requirements for LoRA and QLoRA, with QLoRA fine-tuning a 65B model on a single 48 GB GPU

U modelu 7B se hrubé hodnoty pohybují kolem 60-80 GB pro full fine-tuning, 16-24 GB pro LoRA a 10-14 GB pro QLoRA, podle zveřejněná tabulka Axolotl. Praktický důsledek: QLoRA se běžně vejde na řadu jednotlivých spotřebitelských nebo prosumer GPU s 12-24 GB při nastavení s krátkým kontextem a malou dávkou, zatímco full fine-tuning modelu 7B potřebuje paměť datacentra nebo konfiguraci s více GPU.

Proč je full fine-tuning tak náročný? Krátký výpočet. Když trénujete každý parametr, GPU uchovává tři věci na parametr: samotnou váhu, její gradient a stav optimizeru (optimizery typu Adam uchovávají dvě další hodnoty na váhu). Proto je paměťová bilance několikanásobkem samotné velikosti modelu. LoRA zamrazí základ, takže tuto daň za gradient a optimizer platí jen u malých adaptérových matic. QLoRA navíc ukládá zamrazený základ ve 4-bit místo 16-bit, čímž snižuje největší zbývající náklad.

Takto si tyto tři metody stojí v porovnání napříč velikostmi modelů, na základě dokumentace Axolotl a článku o QLoRA pro čísla velkých modelů:

MetodaModel 1-3BModel 7-8BModel 70B+
Full fine-tuning (bf16 + AdamW)24-32 GB60-80 GB4-8x 80 GB
LoRA (bf16)8-12 GB16-24 GB2x 80 GB
QLoRA (4-bit NF4)6-8 GB10-14 GB40-48 GB

Zdroje: dokumentace Axolotl pro všechny tři metody napříč velikostmi modelů; článek o QLoRA nezávisle uvádí fine-tuning modelu 65B na jediném 48GB GPU "při zachování plného výkonu úlohy jako u 16bitového finetuningu," což se shoduje s údajem 70B pro QLoRA. Blog Hugging Face o blog o 4bitové kvantizaci samostatně ukazuje model 13B trénovaný na jediné 16GB T4 a model 33B na 24GB GPU pomocí QLoRA. To jsou užitečné orientační body, pokud se váš cíl nachází mezi řádky tabulky.

Jediné číslo, které stojí za zapamatování: model 65B na jedné 48GB kartě. To je hlavní výsledek QLoRA a překresluje to, co znamená "mám jen jedno GPU".

Shrnutí sekce: hierarchie VRAM je full >> LoRA > QLoRA, a skok z full na QLoRA je dost velký na to, aby přesunul úlohu z racku s více GPU na jedinou kartu.

Stojí vás LoRA nebo QLoRA skutečně kvalitu?

U většiny úloh zaměřených na dodržování instrukcí a strukturovaný výstup se LoRA a QLoRA dostávají na pouhých několik procent od plného fine-tuningu. Rozdíl se zvětšuje u složitého uvažování (zejména matematiky), kde má plný fine-tuning stále jasně navrch. Odpověď tedy není "téměř rovnocenné" ani "horší". Záleží na úloze a typ úlohy vám řekne, na které straně této hranice se nacházíte.

Nejjasnější důkazy podle typu úlohy pocházejí ze studie Anyscale z září 2023 na studie Anyscale na Llama 2. Na ViGGO, úloze strukturované funkční reprezentace, LoRA dosáhla přibližně 95 % přesnosti plného fine-tuningu na modelech 7B a 13B: rozdíl 2 %, který autoři považovali za přijatelný kompromis. Při generování SQL se LoRA téměř vyrovnala plnému fine-tuningu, a model LoRA 13B dokonce porazil plně dolaďovaný model 7B. Na GSM8k, benchmarku matematického uvažování, LoRA soustavně podávala horší výkon než plný fine-tuning na 7B a 13B, přičemž rozdíl se zmenšil jen u 70B. Tým Anyscale se domnívá, že nízkohodnostní aproximace LoRA nemusí zachytit tak složitou dovednost jako víceúkrokovou matematiku.

Jedna výhrada k těmto číslům: tato studie probíhala na Llama 2 v září 2023. Vzorec podle typu úlohy (strukturovaný výstup blízko, složité uvažování dále) je trvalý závěr, který se v podstatě od té doby udržel. Ale přesná procenta se mohou lišit u novějšího základního modelu jako Llama 3 nebo Mistral, takže berte čísla jako tvar kompromisu, ne záruku pro váš model.

Příběh kvality QLoRA je jeho vlastní. Článek o QLoRA uvádí, že Guanaco, jeho model 65B trénovaný s QLoRA, dosáhl 99,3 % výkonu ChatGPT na benchmarku Vicuna. Silné, ale vázané na ten konkrétní benchmark a to srovnání z roku 2023, ne obecné tvrzení "QLoRA se rovná ChatGPT". Ve srovnání s běžnou LoRA charakterizuje Axolotl QLoRA jako nesoucí "mírnou degradaci způsobenou kvantizačním šumem": 4bitový základ zavádí malé chyby, které základ LoRA s plnou přesností nemá. Pro většinu práce je to nepozorovatelné; pro úlohu citlivou na malé posuny přesnosti je to věc, kterou stojí za to zkontrolovat, ne předpokládat.

Tip

Nejčastější kvalitativní překvapení není QLoRA versus LoRA. Je to fine-tuned model, který vyjde hůř než základní model, ze kterého jste vycházeli. Obvykle to znamená, že trénink udělal něco nezamýšleného: příliš agresivní na úzkém datasetu, nebo hodnocený jen na nové úloze, zatímco obecná schopnost tiše regredovala. Vždy testujte fine-tuned model na několika promptech mimo vaši trénovací distribuci, než mu budete důvěřovat. Regrese tam je signál k ustoupení, ne k odeslání.

Shrnutí sekce: parita kvality závisí na úloze. Strukturovaný výstup a dodržování instrukcí jsou bezpečné pro LoRA/QLoRA; komplexní uvažování je tam, kde plný fine-tuning stále ospravedlňuje své náklady.

Kdy Byste Měli Zvolit Každou Metodu?

Decision tree for picking a fine-tuning method: check available VRAM first, then task type and quality requirement, then speed needs, routing to QLoRA as the default, LoRA as the speed and headroom upgrade, or full fine-tuning as the maximum-performance choice

Začněte s QLoRA pro většinu fine-tuningů na jednom GPU. Přejděte na běžnou LoRA, když máte prostor VRAM navíc a chcete rychlejší kroky nebo o něco vyšší strop kvality. Vyhraďte plný fine-tuning pro případy, které to skutečně potřebují: velké posuny distribuce, změny v měřítku předtrénování, nebo úlohy kritické na uvažování, kde je rozdíl v benchmarku reálný. Řiďte se třemi vstupy, v tomto pořadí: dostupná VRAM, typ úlohy a požadavek na kvalitu, poté rychlost.

Zde je směrování ve formě "udělejte toto, ne to":

1. Nejprve zkontrolujte svou VRAM. Pokud máte jednu kartu s 24 GB nebo méně (většina spotřebitelských a prosumer GPU), QLoRA je vaše výchozí metoda, protože je jediná ze tří, která spolehlivě vejde model 7B do tohoto limitu. Nesahejte po full fine-tuningu na jedné spotřebitelské kartě; tabulka výše vám už říká, že úloha 7B se nevejde, a strávíte víkend tím, že se to naučíte tvrdým způsobem.

2. Poté zkontrolujte svůj úkol a požadovanou úroveň kvality. Pokud je vaším úkolem následování instrukcí, strukturovaný výstup, SQL nebo obecná adaptace na domain, důkazy od Anyscale říkají, že LoRA a QLoRA vám dají kvalitu blízkou plné. Zůstaňte u výchozí volby. Pokud je váš úkol náročný na uvažování (vícekrokové matematické úlohy, složité logické řetězce) a kvalita není předmětem kompromisu, je to váš první skutečný důvod uvažovat o přechodu na full fine-tuning, protože je to jediný typ úkolu, kde benchmarky ukazují konzistentní rozdíl.

3. Poté zvažte rychlost. QLoRA obětuje část rychlosti na krok ve prospěch úspory paměti: 4bitová základna musí být dekvantizována na běžícím systému. Pokud máte VRAM na spuštění běžné LoRA (16-24 GB pro model 7B), získáte rychlejší kroky a vyhnete se šumu z kvantizace, což dělá z LoRA lepší volbu, když paměť není omezujícím faktorem a hodně iterujete.

Kdy is je full fine-tuning správná odpověď? Doporučení Axolotlu je přímé: je vyžadován pro pre-training a je to volba "když máte dostatek GPU paměti nebo konfiguraci s více GPU a potřebujete maximální výkon." Mimo tyto podmínky (a pro velkou většinu praktického fine-tuningu, což je přizpůsobení existujícího modelu konkrétnímu chování nebo doméně) vám parametrově efektivní metody poskytnou většinu kvality za zlomek hardwaru.

Unsloth vyjadřuje výchozí volbu naprosto jasně:

"Doporučujeme začít s QLoRA, protože je to jedna z nejdostupnějších a nejefektivnějších metod pro trénování modelů."

To je pravidlo. Ve výchozím stavu použijte QLoRA, přejděte na LoRA pro rychlost, pokud máte dostatek paměti, a k plnému fine-tuningu sáhněte jen tehdy, když to vyžaduje úloha nebo rozsah.

Shrnutí sekce: QLoRA je výchozí volba; LoRA je upgrade pro rychlost a rezervu; plný fine-tuning je výjimka, kterou zdůvodníte posunem distribuce, předtrénováním nebo benchmarkem na uvažování.

Co si lidé o metodách fine-tuningu nejčastěji pletou?

Za většinou zbytečně promarněných víkendů stojí dva mylné předpoklady. Prvním je považovat fine-tuning za způsob, jak model naučit nová fakta, přičemž jeho hlavním efektem je formování chování. Druhým je předpoklad, že kvalitu lze koupit pouhým otočením knoflíku: že vyšší LoRA rank nebo full fine-tuning namísto QLoRA automaticky zajistí lepší model. Obě tvrzení jsou napůl pravdivá, a právě proto zavádějí.

Naučí fine-tuning model nová fakta?

V tomto bodě existuje skutečný rozkol mezi odborníky, proto se vyplatí správně pochopit nuanci, než si vybírat stranu. Několik praktických příruček označuje tvrzení „fine-tuning učí nová fakta“ za mylnou představu číslo jedna: jejich argumentem je, že fine-tuning je mnohem lepší v formování toho, jak model odpovídá, než v spolehlivém vkládání konkrétních faktů, které model během pre-trainingu nikdy neviděl. Dokumentace Unsloth s tím přímo nesouhlasí a označuje tvrzení, že fine-tuning nemůže naučit nové znalosti, za „nepravdivé“, a popisuje fine-tuning jako způsob, jak „vložit a naučit se nové informace specifické pro danou oblast“.

Obě strany mají částečně pravdu, a smiřující výklad je tento: fine-tuning je spolehlivý při formování chování a posilování znalostí, které jsou v základním modelu již latentně přítomné, a může kódovat vzorce specifické pro danou oblast. Nespolehlivý je při zasazování jednotlivých faktů, které v pre-trainingu úplně chyběly. Čím více váš cíl vypadá jako „zapamatovat si tento konkrétní dokument“, tím pravděpodobnější je, že sáhnete po špatném nástroji, a retrieval vám může posloužit lépe. Praktické doporučení tak přežívá i tento spor: při formování chování a stylu se spolehněte na fine-tuning, ale zůstaňte skeptičtí k jeho použití jako mechanismu pro vkládání faktů.

Zvyšuje vyšší LoRA rank vždy kvalitu?

Ne, a je to knoflík, který se nejsnáze přetočí. Intuice říká, že vyšší rank dává adaptéru více kapacity, takže víc musí být lepší. Databricks to empiricky testoval a zjistil, že zdvojnásobení ranku "zřejmě nevede k žádnému postřehnutelnému zvýšení kvality výstupu". Co v jejich experimentech skutečně rozhodovalo, byly cílové vrstvy (adaptace všech lineárních vrstev, nikoli jen attention bloků), ne zvyšování čísla ranku. Poznatek, který si z toho vzít: věnujte úsilí při ladění cílovým modulům a kvalitě dat, než ho věnujete nafukování ranku.

Je kvalita LoRA vždy stejná jako u plného fine-tuningu?

Ne univerzálně, a nedávná výzkumná práce popisuje konkrétní režim selhání. "LoRA vs Full Fine-tuning: An Illusion of Equivalence" od Shuttleworth et al. zjišťuje, že trénování LoRA může vnést "vetřelecké dimenze" (vysoce hodnocené singulární vektory, které chybí v plně fine-tunovaných modelech), a spojuje je se zapomínáním v scénářích kontinuálního učení, kde je stejný model opakovaně fine-tunován. Jde o konkrétní výhradu, nikoli o celkové vyvrácení: pokud provádíte jedno kolo fine-tuningu pro jeden úkol, širší důkazy o rovnocenné kvalitě stále platí. Pokud fine-tuningy řetězíte za sebou a záleží vám na zachování obecné schopnosti základního modelu, je toto režim selhání, na který si dát pozor.

Časté dotazy

Jaký je rozdíl mezi LoRA, QLoRA a plným fine-tuningem?

Plný fine-tuning aktualizuje každý parametr v modelu. LoRA naopak zamrazí základní model a místo toho trénuje malé nízkoranžové (low-rank) matice adaptérů, zhruba 0,1-2 % parametrů. QLoRA dělá to, co LoRA, a navíc kvantizuje zamrazený základní model na 4bitovou přesnost NF4, takže základ zabírá při trénování adaptérů mnohem méně paměti. Výsledkem je jasný žebříček paměťové náročnosti: plný fine-tuning je nejnáročnější, LoRA lehčí, QLoRA nejlehčí.

Kolik VRAM potřebuji pro fine-tuning modelu s 7B parametry?

U 7B modelu udávají čísla Axolotl plný fine-tuning na zhruba 60-80 GB, LoRA na 16-24 GB a QLoRA na 10-14 GB. QLoRA je jediná ze tří metod, která se běžně vejde do jedné spotřebitelské nebo prosumer GPU s 12-24 GB; plný fine-tuning 7B modelu potřebuje paměť na úrovni datacentra nebo více GPU.

Je kvalita QLoRA horší než u LoRA nebo plného fine-tuningu?

Závisí to na úloze. Pro většinu práce s dodržováním instrukcí a strukturovaným výstupem se QLoRA dostává na pár procent plného fine-tuningu, a Axolotl popisuje jen "mírnou degradaci způsobenou kvantizačním šumem" oproti běžné LoRA. Rozdíl se zvětšuje u komplexních úloh na uvažování jako matematika, kde plný fine-tuning ukázal konzistentní výhodu ve studii Anyscale z roku 2023 na Llama 2.

Kdy Se Plný Fine-Tuning Skutečně Vyplatí?

Plný fine-tuning stojí za své náklady pro předtrénování, velké posuny distribuce a úlohy kritické na uvažování, kde benchmarky ukazují skutečný rozdíl v kvalitě. Je to také cesta, když máte hodně GPU paměti nebo konfiguraci s více GPU a potřebujete maximální kvalitu. Pro běžný případ (přizpůsobení existujícího modelu konkrétnímu chování nebo doméně) vám LoRA nebo QLoRA poskytne většinu kvality za zlomek hardwaru.

Naučí fine-tuning model nová fakta?

Částečně. Fine-tuning je spolehlivý při utváření chování a posilování znalostí, které jsou už latentní v základním modelu, a může kódovat vzory specifické pro danou oblast. Je nespolehlivý při implantaci diskrétních faktů, které v předtrénování zcela chyběly. Zde existuje skutečný spor mezi experty. Dokumentace Unsloth argumentuje, že fine-tuning může učit nové znalosti, zatímco jiné příručky to nazývají hlavním nedorozuměním, a smiřující pohled je používat fine-tuning pro chování a styl a sáhnout po retrievalu, když je cílem vybavit si konkrétní fakta.

Kde To Zůstáváte

Volba metody se scvrkává na jednu výchozí a dva únikové cesty: začněte s QLoRA, přejděte na LoRA, když paměť není omezením a chcete rychlejší kroky, přejděte na plný fine-tuning jen tehdy, když to vynutí posun distribuce, předtrénování, nebo benchmark uvažování.

Když je metoda vyřešena, dalším rozhodnutím je hardware, který implikuje. Vaše volba metody vám právě řekla, zda hledáte jedinou spotřebitelskou kartu nebo paměť datového centra. Pokud chcete porovnat konkrétní karty pro AI zátěže, náš H100 vs RTX 4090 benchmark to pokrývá. Určení velikosti GPU pro metodu, kterou jste vybrali, a podrobný návod pro spuštění samotné tréninkové úlohy jsou vlastní samostatné návody.

Share

Další z blogu

Pokračuj ve čtení.

Hotov k nasazení? Od 2,48 $/měs.

Nezávislý cloud od roku 2008. AMD EPYC, NVMe, 40 Gbps. Vrácení peněz do 14 dnů.