QLoRA-доучування LLM: ефективна квантизація з LoRA для великих моделей

Велика модель упевнено відповідає в демо, але помиляється на ваших даних і не знає вашої термінології. Ми доучуємо моделі з квантизацією ваг і адаптерами під ключ: аудит даних, налаштування, оцінювання якості, передавання адаптерів і документації. Працюємо на обмеженому парку прискорювачів — терміни та якість прогнозовані.
Часті запитання

QLoRA: де ламається звичайне донавчання великої моделі

Повне донавчання великої моделі оновлює всі ваги одразу, а разом із ними тримає в пам’яті градієнти й стан оптимізатора. До обсягу самих ваг додаються проміжні активації, і сумарні витрати пам’яті в рази перевищують розмір моделі у файлі.

Запуск на одній карті закінчується переповненням пам’яті під час навчання: процес падає посеред епохи, чекпойнт не зберігається, робота попередніх годин втрачається.

Далі починається вибір із поганих варіантів. Зменшуємо розмір пакета — навчання відбувається з постійними перерахунками й розтягується, а шумні градієнти заважають збіжності.

Розкладаємо шари по кількох прискорювачах — платимо обміном між ними й усе одно впираємося зі зростанням довжини контексту. Обрізаємо контекст або чистимо вибірку — втрачаємо саме ту частину предметної області, заради якої затівалася адаптація моделі під власні дані.

Найнеприємніший наслідок — не падіння, а тиха деградація. Запуск проходить, втрати на навчальній вибірці знижуються, а на відкладеній виходять на плато, і модель починає відтворювати формулювання з інструкцій замість потрібної поведінки. Діагностика дорога: ресурси вже витрачено, а результат непридатний.

Корінь у тому, що повне донавчання переписує всю модель заради задачі, яка зазвичай потребує правки невеликої частини поведінки.

QLoRA вирішує це інакше: базові ваги зберігаються в низькорозрядному вигляді й заморожені, а навчаються компактні низькорангові адаптери LoRA — частки відсотка від загальної кількості параметрів. Розбираємо, як це влаштовано й де залишаються обмеження.

Що дає донавчання з квантуванням ваг: вимірюваний ефект

Квантування ваг переводить базову модель у низькорозрядне представлення, а донавчання з LoRA залишає адаптери в повній точності.

Градієнти й стани оптимізатора обчислюються лише для адаптерів — це частки відсотка параметрів, тому економія пам’яті під час навчання вимірюється в разах: конфігурація, якій раніше був потрібен вузол із кількох прискорювачів, запускається на одному. Звільнений запас іде на більший розмір батчу й довжину контексту.

Час донавчання моделі падає з двох причин: менше пристроїв — менше обміну градієнтами, а крок оптимізатора оновлює невелику частину тензорів. Прогін на корпусі в сотні тисяч прикладів укладається в години — гіпотези перевіряються за день.

Частка успішних запусків зростає: пікова пам’ять більше не впирається в межу прискорювача, і падіння через нестачу пам’яті переходять із регулярних в одиничні.

Якість відповідей моделі зберігається: базові ваги заморожені, а втрати від квантування вимірюються на відкладеній вибірці до випуску в продукт.

На доменних задачах — розбір звернень, вилучення полів, відповіді за базою знань — розбіжність із повним донавчанням залишається в межах похибки, якщо ранг адаптерів, цільові модулі та швидкість навчання підібрані під задачу.

Окремий ефект — відтворюваність: на стеку Hugging Face ми версіонуємо конфігурацію прогону й самі адаптери окремо від базових ваг. Оновлення моделі перетворюється на заміну адаптера, який на порядки легший за базову модель, а відкат до попередньої версії займає хвилини.

QLoRA та альтернативи: порівняння підходів і обмежень

Вибір методу донавчання моделі визначається трьома осями: доступною пам’яттю прискорювача, обсягом і однорідністю даних, вимогами до відтворюваності й відкату. Нижче — чотири варіанти адаптації, між якими реально обирають на проєктах.

Варіант Коли підходить Обмеження
Повне донавчання Новий домен або мова, багато даних, поведінка моделі змінюється глибоко Максимальні вимоги до пам’яті, під кожну задачу зберігається повний набір ваг
Адаптери LoRA Формат, стиль, вилучення сутностей; потрібні десятки версій під різні задачі Ранг адаптера обмежує обсяг нових знань, на сильно зсунутих даних якість просідає
Квантоване донавчання (QLoRA) Велика модель, а пам’ять обмежена; адаптер навчається поверх ваг у 4-бітному представленні Крок навчання повільніший, результат чутливий до налаштування квантування
Навчання підказок Класифікація та вузькі задачі, мало розмічених прикладів Нові знання засвоює слабко, чутливе до формулювання входу

Різниця між QLoRA і класичними адаптерами в тому, що базові ваги заморожуються в 4-бітному представленні NF4, а навчаються лише низькорангові матриці: вимоги до пам’яті падають, якість залишається близькою до повного донавчання.

Інструментарій рівня Hugging Face PEFT дає змогу перемикати варіанти на одній кодовій базі, тому метод оборотний: починаємо з адаптерів і переходимо до повного донавчання лише за доведеного дефіциту якості.

Порядок робіт: від аудиту даних до передачі моделі

До першої ітерації фіксуємо, що вважаємо результатом: тип задачі, формат відповіді моделі та метрику приймання. Без цього підбір параметрів перетворюється на перебір наосліп. Далі йдемо кроками, і кожен завершується артефактом, який можна перевірити.

  1. Аудит даних і постановка задачі. Дивимося, що вже є: логи, документи, таблиці. Рахуємо обсяг за класами, шукаємо дублі, пропуски та витоки цільової змінної — ознака, що опосередковано містить відповідь, обнуляє метрику на прийманні.

  2. Схема навчання. Ділимо вибірку на навчальну та відкладену так, щоб вони не перетиналися за клієнтами або за часом. Заздалегідь домовляємося, яка відповідь вважається правильною, а яка — небезпечною помилкою.

  3. Підготовка набору даних і розмітка прикладів. Приводимо тексти до єдиного вигляду, формуємо пари «запит — еталонна відповідь». Спірні випадки розмічаємо за письмовою інструкцією та заміряємо згоду розмітників.

  4. Налаштування конфігурації QLoRA. Обираємо базову модель, ранг адаптера, цільові шари та довжину контексту. Перевіряємо збіжність на малому зрізі, перш ніж запускати повний прогін.

  5. Навчання та перевірка якості моделі. Ведемо прогін із проміжним оцінюванням на відкладеній вибірці, щоб упіймати перенавчання до фіналу. Окремо рахуємо метрики на рідкісних і критичних випадках та порівнюємо з вихідною моделлю.

  6. Передача моделі замовнику. Віддаємо ваги, файли конфігурації, скрипт запуску й документацію. Проводимо передачу команді: як оновлювати дані, на що дивитися у звітах, за яких сигналів перенавчати.

Що залишається у замовника: адаптери, ваги, документація

Навчання не закінчується на моменті, коли метрика на контрольній вибірці вийшла на цільовий рівень. Цінність у тому, що залишається після: артефакти, за якими ваша команда сама перенавчить модель на нових даних, перевірить якість і відкотить версію без нас.

  • Збережені адаптери — ваги QLoRA-донавчання окремо від базової моделі: прив’язка до версії базових ваг, контрольна сума та позначка, на яких даних їх отримано.
  • Конфігурація навчання — ранг і масштаб адаптера, цільові модулі, схема квантування, швидкість навчання, планувальник і кількість епох: за цим файлом запуск повторюється на іншому стенді.
  • Схема навчання моделі — як зібрано й очищено датасет, як розділено на навчання й контроль, як токенізовано приклади та чим відстежувалося перенавчання.
  • Звіт про метрики — динаміка за епохами, порівняння базової та донавченої моделі на контрольному наборі, розбір помилок за типами запитів і приклади відповідей до і після.
  • Набір регресійних перевірок — фіксовані запити, з якими нова версія звіряється перед викладкою.
  • Інструкція із запуску — підключення адаптера до базової моделі, режими виведення, робота з довгим контекстом і обмеженнями щодо пам’яті.
  • Регламент роботи моделі — коли ініціювати перенавчання, які дані додавати, як версіонувати адаптери та як відкочуватися до попередньої версії.

Усе лежить в одному репозиторії з описом структури: донавчання залишається відтворюваним, а модель — на вашій інфраструктурі.

Кейс: донавчання моделі на обмеженому парку прискорювачів

Замовник прийшов із задачею: модель на 13 мільярдів параметрів має впевнено тримати галузеву термінологію та видавати відповідь строго заданим форматом, а в наявності — чотири прискорювачі в закритому контурі.

Повне донавчання на такому парку не запускалося взагалі: стани оптимізатора й градієнти не вміщалися в пам’ять, процес падав на першому ж кроці.

Перевели навчання на квантований режим: базова модель завантажується в 4-бітному представленні, навчаються лише низькорангові адаптери, а стани оптимізатора обчислюються для невеликої частки параметрів.

Навчальний обсяг скоротився на порядки, і якість відповідей почала визначатися даними, а не запасом заліза.

Метрики до і після: було — нуль успішних запусків на наявному парку; стало — навчання йде на двох прискорювачах, ще два залишаються під виведення моделі та паралельні експерименти.

Частка коректних відповідей на галузевому наборі питань зросла з 61% до 88%, дотримання формату — з 70% до 96%. Одна епоха навчання займає втричі менше часу, ніж спроба повного донавчання на орендованому кластері.

Терміни та передача

Впровадження зайняло чотири тижні: збір і чистка датасету, підбір рангу адаптерів і кроку навчання, приймання на фіксованому наборі питань. Передача включала скрипти навчання, конфігурації адаптерів, збережені контрольні точки та інструкцію, як повторити запуск без нас.

QLoRA у цьому проєкті — не експеримент, а робочий режим: внутрішня команда перенавчає модель на нових даних сама, не чекаючи на нас і не розширюючи парк прискорювачів.

Чим QLoRA відрізняється від повного донавчання на практиці?

Повне донавчання змінює всі ваги моделі: для кожного параметра зберігаються градієнти й стани оптимізатора, а пам’ять під це в рази перевищує саму вагу моделі. Тому такі запуски впираються в кілька прискорювачів і розподілену синхронізацію, а не в обсяг даних. QLoRA залишає базові ваги замороженими й навчає лише низькорангові адаптери.

Базова модель зберігається у 4-бітному квантованому вигляді, а обчислення йдуть у вищій точності — виграш щодо пам’яті виходить кратним, а не відсотковим. Задача, яка раніше потребувала кількох вузлів, розв’язується на одній карті. Плата за це — розпакування квантованих блоків на кожному кроці.

За швидкістю один крок навчання в QLoRA повільніший: ваги доводиться розгортати на льоту. Зате весь цикл донавчання часто коротший — немає пересилання градієнтів між вузлами й очікування синхронізації. Після злиття адаптера з базовою моделлю швидкість відповіді не змінюється.

Точність адаптера передбачувана: на звуженні домену, стилю або формату відповіді низький ранг наздоганяє повне донавчання. Якщо потрібно вкласти в модель нові знання або змінити мову, повний варіант точніший — ранг обмежує обсяг того, що модель здатна дописати.

Змінюється й спосіб оновлення: повне донавчання дає новий знімок усієї моделі, який зберігається й версіонується цілком. QLoRA віддає компактний файл адаптера — його тримають поруч із базою, перемикають під різні задачі та відкочують без перезбирання моделі.

Технічні сумніви: розбираємо часті питання

Перед стартом замовники перевіряють ризики: чи не деградує модель після донавчання, чи вистачить власних даних і що із захистом корпоративної інформації. Відповіді на сумніви, які найчастіше виринають на етапі оцінювання, — нижче.

Чи не погіршиться якість на загальних задачах?

Базові ваги заморожені, навчаються лише низькорангові адаптери — загальні знання не перезаписуються. До викату проганяємо єдиний набір контрольних питань за вихідною та донавченою версією: є розбіжності — зменшуємо кількість епох або внесок адаптера.

У нас мало даних — навчання вистачить?

Для вузької задачі достатньо кількох сотень якісних пар «запит — відповідь», які доповнюємо синтетикою та розміткою реальних звернень. Якщо прикладів зовсім мало, звужуємо задачу до однієї операції — точність зростає замість розмивання по всьому домену.

Модель уже в продукті — донавчання її зламає?

Навчання йде в окремому контурі й не чіпає працюючий сервіс. Адаптер підключається до тієї ж базової моделі, тому перемикання — підміна одного файлу, а відкат — повернення попереднього, без простою та повторного впровадження.

Яке потрібне обладнання під QLoRA і як часто перенавчати?

Вистачає однієї карти професійного класу: квантування стискає ваги, кластер не потрібен. Дані не залишають ваш контур, а перенавчання запускаємо за метрикою — коли зростає частка відмов, а не за календарем.

Обговоримо задачу: з чого починається робота над моделлю

Починаємо не з навчання, а з розбору сценарію: що модель має робити краще за базову, які відповіді вважаємо неправильними й чим це вимірюється.

Так оцінка задачі донавчання спирається на метрику якості, а не на обсяг датасету, і рішення про QLoRA ухвалюється по суті, а не за замовчуванням.

Що робимо на вході:

  • розбираємо сценарій і формулюємо, який результат вважаємо покращенням щодо вихідної моделі;
  • перевіряємо дані: повнота, дублікати, якість розмітки, перетини між навчальною та перевірною вибірками;
  • пропонуємо схему навчання: які шари адаптуємо через LoRA, які ваги тримаємо в квантованому вигляді, якого розміру адаптера достатньо;
  • збираємо перевірний набір і набір метрик — частка коректних відповідей, відповідність формату, стійкість на рідкісних запитах;
  • запускаємо пробний прогін навчання на малому зрізі: він показує, чи збігається модель і який обсяг даних реально потрібен;
  • фіксуємо план робіт за етапами з точками контролю й зрозумілою умовою зупинки, якщо якість не зростає.

Пробний прогін — найдешевший спосіб зняти невизначеність: він займає години, а не тижні, і дає цифри, з якими можна ухвалювати рішення про старт проєкту. Далі йде повний цикл: донавчання, порівняння адаптера з базовою моделлю на відкладеній вибірці, пакування в робочий сервіс.

Опишіть задачу — повернемося з оцінкою, варіантами схеми та планом робіт.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142