Ви вирішили дофайнтюнити модель на 7B параметрів на власних даних. І тут натрапляєте на першу справжню розвилку: три назви методів, і кожна з власною відповіддю. Документація Unsloth каже почати з QLoRA. Axolotl каже, що все залежить від вашого апаратного забезпечення. Половина блог-постів, які ви побіжно проглянули, каже «використовуйте LoRA для більшості завдань» і йде далі. А тим часом ви дивитеся на одну-єдину GPU, не впевнені, що на ній запуститься хоч один із цих методів.
Це рішення, яке передує всьому іншому. Обраний метод визначає бюджет VRAM, бюджет VRAM обирає апаратне забезпечення, а апаратне забезпечення визначає вартість. Оберете метод неправильно — і або спалите гроші на пам'ять GPU, яка вам не була потрібна, або проведете вихідні, ганяючись за крашами через нехватку пам'яті на карті, яка від початку не підходила для цієї роботи.
Тож розберімося остаточно. Ось у чому справжня різниця між LoRA, QLoRA і повним файнтюнінгом, у скільки кожен з них обходиться за пам'яттю та якістю, і правило, як віднести свій випадок до одного з них.
Коротко
- Метод за замовчуванням — QLoRA. Для більшості файнтюнінгів на одній GPU починайте з QLoRA. За таблицею Axolotl, запуск QLoRA на моделі 7-8B потребує приблизно 10-14 ГБ VRAM за умови короткого контексту та невеликих мікро-батчів. Це вписується в бюджет багатьох споживчих або prosumer-карт на 12-24 ГБ, але не кожної карти з малим обсягом VRAM. Звичайний LoRA обирайте, коли пам'яті достатньо і потрібні швидші кроки; повний файнтюнінг залишайте для рідкісних випадків, що справді його потребують.
- Різниця у VRAM величезна. Файнтюнінг моделі 7B потребує приблизно 60-80 ГБ для повного файнтюнінгу, 16-24 ГБ для LoRA і 10-14 ГБ для QLoRA, за опублікованими даними Axolotl. Саме ця різниця є причиною існування параметрично ефективних методів.
- Втрата якості залежить від завдання, а не однакова для всіх. У більшості завдань на дотримання інструкцій і структурований вивід LoRA та QLoRA відстають від повного fine-tuning лише на кілька відсотків. Розрив збільшується на складних задачах міркування, наприклад у математиці — саме там повний fine-tuning усе ще оправдовує свою вартість.
- Повний fine-tuning — це виняток, а не базовий варіант. До нього переходять за значних зсувів розподілу, змін у масштабі попереднього навчання або завдань, критичних для міркування, де бенчмарки показують розрив, а не як безпечний варіант за замовчуванням.
Що цей посібник не охоплює
Це посібник із вибору методу, а не покрокова інструкція з реалізації. Деякі речі свідомо залишені поза межами:
- Варіанти LoRA (DoRA, VeRA, LoRA+). Три основні методи — це рішення, яке важливо ухвалити першим; варіанти — це вдосконалення, до яких звертаються пізніше.
- Покроковий код. Тут немає команд встановлення чи скриптів навчання. Це окремий практичний посібник, який тут не розглядається.
- Навчання на кількох GPU (FSDP, DeepSpeed ZeRO) і підготовка датасету: обидві теми самі по собі досить великі.
- RLHF, DPO та оптимізація уподобань. Це інший клас цільових функцій, відмінний від supervised fine-tuning.
- Чи варто взагалі робити fine-tuning. Якщо ви не впевнені, що fine-tuning, а не retrieval, є правильним інструментом, це порівняння заслуговує на окрему відповідь, перш ніж обирати метод тут.
Що насправді відрізняє LoRA, QLoRA і повний fine-tuning?
Full fine-tuning оновлює кожен параметр моделі. LoRA заморожує базову модель і замість цього навчає невеликі матриці адаптерів низького рангу (приблизно 0,1-2% від загальної кількості параметрів). QLoRA додає ще один крок понад LoRA: він квантує заморожену базову модель до 4-бітної точності (використовуючи тип даних NF4, NormalFloat), тож база займає набагато менше пам'яті, поки ви навчаєте адаптери.
Найпростіший спосіб утримати всі три в голові — уявити їх як драбину, де кожна сходинка знімає одну витрату з тієї, що нижче.
Повний файнтюнінг це найнижчий рівень і найважчий. Кожна вага доступна для навчання, тому оптимізатору потрібно відстежувати градієнт і стан оптимізатора для кожного параметра моделі. Саме туди йде пам'ять, а до математики ми перейдемо в наступному розділі.
LoRA (Low-Rank Adaptation) заморожує вихідні ваги і вбудовує невеликі навчальні матриці в шари моделі. Навчаються лише ці матриці; базова модель просто їде за компанію. У статті про LoRA повідомляється, що це скорочує кількість навчальних параметрів до 10 000x для моделі з 175B параметрами і знижує пам'ять GPU приблизно в 3 рази в такому масштабі, водночас показуючи результат «на рівні або кращий за файнтюнінг за якістю моделі» на моделях, які тестували автори. Оскільки змінюється так мало параметрів, навчений результат крихітний. Блог блог PEFT наводить дві корисні контрольні точки: повний чекпойнт на 40 GB для bigscience/mt0-xxl, і окремий приклад LoRA, де збережений адаптер має лише 19 MB. Суть залишається тією самою: чекпойнти PEFT зазвичай крихітні порівняно з повними чекпойнтами моделі.
QLoRA бере LoRA і зменшує ту частину, яку LoRA залишила недоторканою: заморожену базу. Квантування цих ваг до 4-бітного NF4 означає, що базова модель займає лише частку пам'яті, яку вона займала б при 16 бітах, тоді як адаптери зверху продовжують навчатися з повною точністю. У статті про QLoRA NF4 описується як «інформаційно-теоретично оптимальний для нормально розподілених ваг» — точний спосіб сказати, що 4-бітне представлення вибрано так, щоб відповідати реальному розподілу ваг моделі, тому втрати менші, ніж коштувало би наївне 4-бітне округлення.
Це весь концептуальний стек: повний файнтюнінг навчає все, LoRA заморожує базу і навчає адаптери, QLoRA стискає заморожену базу і навчає адаптери. Все інше (VRAM, якість, коли що використовувати) випливає з цих трьох рішень.
Скільки VRAM потрібно для кожного методу?
Для моделі 7B приблизні цифри становлять близько 60-80 GB для full fine-tuning, 16-24 GB для LoRA і 10-14 GB для QLoRA, згідно з опублікована таблиця Axolotl. Практичний наслідок: QLoRA зазвичай вміщується на багатьох одиничних споживчих або prosumer GPU з 12-24 GB за налаштувань короткого контексту та малого батчу, тоді як full fine-tuning моделі 7B потребує пам'яті рівня дата-центру або конфігурації з кількома GPU.
Чому full fine-tuning настільки важкий? Коротка математика. Коли ви навчаєте кожен параметр, GPU зберігає три речі на параметр: сам вага, його градієнт і стан оптимізатора (оптимізатори у стилі Adam зберігають два додаткові значення на вагу). Саме тому обсяг пам'яті у кілька разів перевищує розмір самої моделі. LoRA заморожує базу, тож сплачує цей податок на градієнт і оптимізатор лише для крихітних матриць адаптера. QLoRA додатково зберігає заморожену базу у 4-bit замість 16-bit, знижуючи найбільшу з решти витрат.
Ось як три методи порівнюються залежно від розміру моделі, на основі документації Axolotl та статті про QLoRA для показників великих моделей:
| Метод | Модель 1-3B | Модель 7-8B | Модель 70B+ |
|---|---|---|---|
| Full fine-tuning (bf16 + AdamW) | 24-32 GB | 60-80 GB | 4-8x 80 GB |
| LoRA (bf16) | 8-12 GB | 16-24 GB | 2x 80 GB |
| QLoRA (4-bit NF4) | 6-8 GB | 10-14 GB | 40-48 GB |
Джерела: документація Axolotl для всіх трьох методів залежно від розміру моделі; у статті про QLoRA незалежно повідомляється про файнтюнінг моделі 65B на одному GPU з 48 GB «зі збереженням повної продуктивності задачі, як у 16-бітному файнтюнінгу», що узгоджується з показником 70B для QLoRA. Блог Hugging Face про блог про 4-бітну квантизацію окремо показує модель 13B, навчену на одній T4 із 16 GB, і модель 33B на GPU із 24 GB за допомогою QLoRA. Це корисні орієнтири, якщо ваша ціль знаходиться між рядками таблиці.
Єдине число, яке варто запам'ятати: модель 65B на одній карті 48 GB. Це головний результат QLoRA, і він переосмислює те, що означає фраза «у мене лише один GPU».
Висновок розділу: ієрархія VRAM виглядає так: full >> LoRA > QLoRA, і різниця між full і QLoRA настільки велика, що завдання можна перенести зі стійки з кількома GPU на одну карту.
Чи справді LoRA або QLoRA знижують якість?
У більшості завдань на дотримання інструкцій і структурований вивід LoRA та QLoRA відстають від повного файнтюнінгу лише на кілька відсоткових пунктів. Розрив збільшується у складних завданнях на міркування (особливо в математиці), де повний файнтюнінг усе ще явно попереду. Тож відповідь не «майже рівноцінно» і не «гірше». Все залежить від завдання, і тип завдання підкаже, на якому боці цієї межі ви перебуваєте.
Найяскравіші докази за типом завдання походять із дослідження Anyscale за вересень 2023 року на дослідження Anyscale на Llama 2. На ViGGO, завданні структурованого функціонального представлення, LoRA досягла приблизно 95% точності повного fine-tuning на моделях 7B та 13B: розрив у 2%, який автори вважали прийнятним компромісом. У генерації SQL LoRA майже зрівнялася з повним fine-tuning, а модель LoRA 13B навіть перевершила повністю налаштовану 7B. На GSM8k, бенчмарку математичних міркувань, LoRA стабільно поступалася повному fine-tuning на 7B та 13B, і розрив скорочувався лише на 70B. Команда Anyscale вважає, що низькорангова апроксимація LoRA може не вловлювати таку складну навичку, як багатоетапна математика.
Одна застереження щодо цих цифр: те дослідження проводилося на Llama 2 у вересні 2023 року. Закономірність за типом завдання (структурований вивід близько, складне міркування далі) — це стійкий висновок, який в основному зберігся з того часу. Але точні відсотки можуть відрізнятися на новішій базовій моделі, як Llama 3 чи Mistral, тож сприймайте цифри як форму компромісу, а не гарантію для вашої моделі.
Історія якості QLoRA — своя власна. У статті про QLoRA повідомляється, що Guanaco, її модель на 65B, навчена з QLoRA, досягла 99,3% продуктивності ChatGPT на бенчмарку Vicuna. Потужно, але прив'язано до цього конкретного бенчмарку та порівняння 2023 року, а не загальне твердження «QLoRA дорівнює ChatGPT». Порівняно зі звичайною LoRA, Axolotl характеризує QLoRA як таку, що несе «незначну деградацію через шум квантування»: 4-бітна база вносить невеликі помилки, яких немає у базі LoRA з повною точністю. Для більшості роботи це непомітно; для завдання, чутливого до невеликих зсувів точності, це варто перевірити, а не припускати.
Порада: Найпоширеніший сюрприз щодо якості — не QLoRA проти LoRA. Це fine-tuned модель, яка виходить гіршою за базову модель, з якої ви почали. Зазвичай це означає, що навчання зробило щось незадумане: занадто агресивно на вузькому наборі даних, або оцінювалося лише на новому завданні, тоді як загальна здатність тихо регресувала. Завжди тестуйте fine-tuned модель на кількох запитах поза розподілом вашого навчання, перш ніж довіряти їй. Регрес там — сигнал відступити, а не випускати.
Висновок розділу: паритет якості залежить від завдання. Структурований вивід і дотримання інструкцій безпечні для LoRA/QLoRA; складне міркування — це те, де повний fine-tuning досі виправдовує свою вартість.
Коли Слід Обирати Кожен Метод?
Почніть із QLoRA для більшості fine-tuning на одному GPU. Переходьте на звичайну LoRA, коли у вас є запас VRAM і ви хочете швидші кроки або трохи вищу межу якості. Залиште повний fine-tuning для випадків, які цього справді потребують: великі зсуви розподілу, зміни масштабу передтренування, або завдання, критичні для міркування, де розрив у бенчмарку реальний. Орієнтуйтеся на три вхідні дані по порядку: доступна VRAM, тип завдання та вимога до якості, потім швидкість.
Ось маршрутизація у формі "робіть це, а не те":
1. Спочатку перевірте обсяг VRAM. Якщо у вас одна карта з 24 ГБ або менше (більшість споживчих і prosumer-GPU), QLoRA — ваш метод за замовчуванням, бо це єдиний з трьох методів, який надійно вміщає модель 7B у такий обсяг. Не беріться за full fine-tuning на одній споживчій карті: таблиця вище вже показує, що завдання 7B туди не влізе, і ви витратите вихідні, щоб переконатися в цьому на власному досвіді.
2. Потім оцініть своє завдання та вимоги до якості. Якщо ваше завдання — це виконання інструкцій, структурований вивід, SQL або загальна адаптація до домену, дані Anyscale показують, що LoRA і QLoRA дають якість, близьку до повної. Залишайтеся на варіанті за замовчуванням. Якщо ваше завдання вимагає інтенсивного міркування (багатоетапна математика, складні логічні ланцюжки) і якість не підлягає компромісу, це ваша перша справжня причина розглянути перехід до full fine-tuning, бо це єдиний тип завдань, де бенчмарки показують стійкий розрив.
3. Потім зважте швидкість. QLoRA жертвує частиною швидкості на крок заради економії пам'яті: 4-бітну базу потрібно деквантувати на ходу. Якщо у вас достатньо VRAM для звичайного LoRA (16-24 ГБ для моделі 7B), ви отримуєте швидші кроки і уникаєте шуму від квантування, що робить LoRA кращим вибором, коли пам'ять не є обмежуючим фактором і ви часто повторюєте ітерації.
Коли is full fine-tuning — правильна відповідь? Рекомендація Axolotl пряма: він потрібен для pre-training і є вибором «коли у вас достатньо пам'яті GPU або налаштована мульти-GPU конфігурація, і потрібна максимальна продуктивність». За межами цих умов (а це переважна більшість практичних випадків fine-tuning, де існуючу модель адаптують під конкретну поведінку чи домен) параметрично ефективні методи дають вам майже всю якість за малу частку обладнання.
Unsloth прямо формулює вибір за замовчуванням:
«Ми рекомендуємо починати з QLoRA, оскільки це один із найдоступніших і найефективніших методів навчання моделей».
Це правило. За замовчуванням QLoRA, переходьте на LoRA заради швидкості, якщо вистачає пам'яті, і переходьте на повне дообучення лише тоді, коли це вимагає завдання або масштаб.
Висновок розділу: QLoRA — варіант за замовчуванням, LoRA — перехід до швидкості й запасу, повне дообучення — виняток, який виправдовують зсувом розподілу, попереднім навчанням або тестом на міркування.
У чому люди найчастіше помиляються щодо методів fine-tuning?
Саме два помилкові уявлення спричиняють більшість втрачених вихідних. Перше — сприймати fine-tuning як спосіб навчити модель нових фактів, тоді як його основний ефект — формування поведінки. Друге — вважати, що якість можна «купити», просто покрутивши ручку: що вищий ранг LoRA або full fine-tuning замість QLoRA автоматично дають кращу модель. Обидва твердження наполовину правильні, і саме тому вони вводять в оману.
Чи навчає fine-tuning модель нових фактів?
Тут дійсно існує розбіжність серед експертів, тому варто правильно зрозуміти нюанс, а не обирати сторону. Кілька практичних посібників називають твердження «fine-tuning навчає нових фактів» помилковим уявленням номер один: їхня думка полягає в тому, що fine-tuning набагато краще формує те, як модель відповідає, ніж надійно впроваджує конкретні факти, яких вона ніколи не бачила під час попереднього навчання. Документація Unsloth прямо заперечує це, називаючи твердження про те, що fine-tuning не може навчити нових знань, «неправдивим», і описуючи fine-tuning як спосіб «впроваджувати та вивчати нову інформацію, специфічну для певної області».
Обидві сторони частково праві, і примирлива трактовка така: fine-tuning надійно формує поведінку та посилює знання, які вже приховано присутні в базовій моделі, і може кодувати паттерни, специфічні для певного домену. Ненадійний він у впровадженні окремих фактів, які були повністю відсутні під час попереднього навчання. Чим більше ваша мета схожа на «запам'ятати цей конкретний документ», тим ймовірніше, що ви обрали неправильний інструмент, і retrieval може прислужитися краще. Тож практична рекомендація переживає цю суперечку: покладайтеся на fine-tuning для поведінки та стилю, але залишайтеся скептичними щодо нього як механізму впровадження фактів.
Чи завжди вищий ранг LoRA підвищує якість?
Ні, і це найпростіша ручка, яку легко перекрутити. Інтуїція підказує, що вищий ранг дає адаптеру більшу ємність, тож більше має бути краще. Databricks перевірила це емпірично і виявила, що подвоєння рангу «нібито не призводить до жодного помітного підвищення якості виводу». Що дійсно вплинуло в їхніх експериментах — це те, які шари вони обирали цільовими (адаптація всіх лінійних шарів, а не лише блоків уваги), а не накручування числа рангу. Висновок, який варто зробити: витрачайте зусилля на налаштування цільових модулів і якість даних, перш ніж витрачати їх на роздування рангу.
Чи завжди якість LoRA дорівнює повному fine-tuning'у?
Не завжди, і нещодавня наукова стаття вказує на конкретний режим збою. "LoRA vs Full Fine-tuning: An Illusion of Equivalence" авторів Shuttleworth et al. показує, що навчання LoRA може вносити «вторгнуті вимірювання» (сингулярні вектори високого рангу, відсутні в повністю дообучених моделях), і пов'язує це із забуванням у сценаріях безперервного навчання, де одна й та ж модель дообучується неодноразово. Це конкретне застереження, а не повне заперечення: якщо ви робите один раунд fine-tuning для одного завдання, широкі докази паритету якості залишаються чинними. Якщо ви вибудовуєте ланцюжок fine-tuning'ів і дбаєте про збереження загальних здібностей базової моделі, саме цей режим збою варто відстежувати.
Часті запитання
Яка різниця між LoRA, QLoRA і повним fine-tuning'ом?
Повний fine-tuning оновлює кожен параметр моделі. LoRA заморожує базову модель і замість цього навчає невеликі матриці адаптерів низького рангу, приблизно 0,1-2% параметрів. QLoRA робить те саме, що й LoRA, а також квантизує заморожену базову модель до 4-бітної точності NF4, тож база займає значно менше пам'яті під час навчання адаптерів. Результат — чітка ієрархія за пам'яттю: повний fine-tuning найважчий, LoRA легший, QLoRA найлегший.
Скільки VRAM потрібно для fine-tuning моделі на 7B параметрів?
Для моделі на 7B параметрів дані Axolotl оцінюють повний fine-tuning приблизно у 60-80 ГБ, LoRA — у 16-24 ГБ, а QLoRA — у 10-14 ГБ. QLoRA — єдиний із трьох методів, який зазвичай вміщується в один споживчий або просюмерський GPU на 12-24 ГБ; повний fine-tuning моделі на 7B потребує пам'яті рівня дата-центру або кількох GPU.
Чи гірша якість QLoRA порівняно з LoRA або повним fine-tuning'ом?
Це залежить від завдання. Для більшості роботи з дотримання інструкцій та структурованого виводу QLoRA залишається в межах кількох відсотків від повного fine-tuning, і Axolotl описує лише "незначну деградацію через шум квантування" порівняно зі звичайною LoRA. Розрив зростає на складних завданнях міркування, таких як математика, де повний fine-tuning показав стійку перевагу в дослідженні Anyscale 2023 року на Llama 2.
Коли Повний Fine-Tuning Справді Вартий Того?
Повний fine-tuning виправдовує свою вартість для передтренування, великих зсувів розподілу та завдань, критичних для міркування, де бенчмарки показують справжній розрив у якості. Це також шлях, коли у вас достатньо пам'яті GPU або налаштування з кількома GPU і потрібна максимальна якість. Для звичайного випадку (адаптація існуючої моделі до конкретної поведінки чи домену) LoRA або QLoRA дає вам більшість якості за частку апаратних витрат.
Чи навчає fine-tuning модель нових фактів?
Частково. Fine-tuning надійний у формуванні поведінки та посиленні знань, уже латентних у базовій моделі, і може кодувати доменно-специфічні шаблони. Він ненадійний у впровадженні дискретних фактів, які повністю були відсутні в передтренуванні. Тут є справжня розбіжність експертів. Документація Unsloth стверджує, що fine-tuning може навчати нових знань, тоді як інші посібники називають це головним помилковим уявленням, і примирлива точка зору — використовувати fine-tuning для поведінки та стилю, а звертатися до retrieval, коли ціль — пригадування конкретних фактів.
До Чого Це Вас Приводить
Вибір методу зводиться до одного варіанту за умовчанням і двох шляхів відступу: почніть з QLoRA, переходьте на LoRA, коли пам'ять не є обмеженням і ви хочете швидші кроки, переходьте на повний fine-tuning лише коли це вимушує зсув розподілу, передтренування або бенчмарк міркування.
Коли метод визначено, наступне рішення — це апаратне забезпечення, яке він передбачає. Ваш вибір методу щойно підказав, чи шукаєте ви одну споживчу карту, чи пам'ять дата-центру. Якщо хочете порівняти конкретні карти для навантажень ШІ, наш H100 vs RTX 4090 тест продуктивності покриває цю тему. Підбір розміру GPU для вибраного методу та покроковий посібник із запуску самого тренувального завдання — це окремі посібники.