PEFT донавчання LLM: LoRA, QLoRA, AdaLoRA

Проблема: LLM не підходить під ваше завдання?

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

Часті запитання

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    997
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1264
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1002

Проблема: LLM не підходить під ваше завдання?

Ви навчили Llama 3.1 8B на загальних даних, але вона неякісно відповідає на питання по вашій юридичній документації. Повний fine-tuning потребує 80 ГБ VRAM і кількох A100 — ресурси є не в усіх. Parameter-Efficient Fine-Tuning (PEFT) вирішує цю проблему: донавчаються лише 0.1–5% параметрів, а базова модель залишається замороженою. Ми використовуємо PEFT, щоб адаптувати будь-яку LLM (від LLaMA до Mistral) під ваше завдання — класифікацію, генерацію, RAG — без додаткових GPU.

Наш досвід у донавчанні LLM — 5+ років, сотні проєктів для клієнтів із FinTech та LegalTech. Гарантуємо стабільну точність та оптимізацію інференсу.

Які проблеми вирішує PEFT?

  • Нестача GPU-пам'яті. Повний fine-tuning моделі 7B потребує ~56 ГБ VRAM з Adam. LoRA з рангом 16 скорочує до ~18 ГБ, QLoRA (4-bit) — до 9 ГБ. Одна карта A100 замість кластера.
  • Довге навчання. Повний fine-tuning Llama 3.1 8B — 8 годин на 4×A100. LoRA r=16 — 55 хвилин на 1×A100. Різниця в 8–10 разів.
  • Погіршення узагальнювальної здатності. Повний fine-tuning часто викликає катастрофічне забування. PEFT зберігає базові знання, донавчаючи лише адаптацію.

Який метод PEFT обрати для вашого завдання?

Вибір залежить від обсягу даних, ресурсів та вимог до латентності. Зведена таблиця:

Метод Навчальні параметри Overhead інференсу Коли використовувати
LoRA 0.1–5% Немає (після merge) Генерація, класифікація, будь-який обсяг даних від 500 прикладів
QLoRA 0.1–5% Немає (після merge) Те саме, але при дефіциті VRAM (4-bit база)
DoRA 0.1–5% Немає (після merge) Покращена LoRA з ваговою декомпозицією
AdaLoRA 0.1–3% Немає (після merge) Автоматичний підбір рангу, невідома важливість шарів
Prefix Tuning <0.1% Так (віртуальні токени) Мало даних (50–200 прикладів), NLU-задачі
Prompt Tuning <0.01% Так Мінімум даних, промпт-інжиніринг
IA³ <0.01% Немає (масштабування) Few-shot адаптація при екстремальному дефіциті даних

Зазначимо: як зазначено в офіційній документації, PEFT дозволяє скоротити ресурси на 90% (Hugging Face PEFT docs).

LoRA: золотий стандарт PEFT

LoRA (Low-Rank Adaptation) додає в шари attention матриці низького рангу (r=8–16). Після навчання вони зливаються з базовими вагами — затримка інференсу не збільшується. Приклад конфігурації:

from peft import LoraConfig, get_peft_model config = LoraConfig( r=16, lora_alpha=32, target_modules=["q_proj", "v_proj"], task_type="CAUSAL_LM", ) model = get_peft_model(model, config) 

На задачі класифікації тональності фінансових новин (1200 прикладів, модель Llama 3.1 8B) LoRA r=16 досягла accuracy 0.91 проти 0.74 у 5-shot без донавчання. Повний fine-tuning дав 0.93, але зайняв у 8 разів більше часу.

AdaLoRA: адаптивний ранг для складних випадків

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

from peft import AdaLoraConfig, get_peft_model config = AdaLoraConfig( init_r=12, target_r=8, beta1=0.85, beta2=0.85, deltaT=10, lora_alpha=32, target_modules=["q_proj", "v_proj", "k_proj", "o_proj"], task_type="CAUSAL_LM", ) model = get_peft_model(model, config) 

Prefix Tuning та IA³: коли даних дуже мало

Prefix Tuning додає навчальні віртуальні токени (20–100), IA³ — масштабувальні вектори. Обидва методи потребують <0.1% параметрів і працюють від 50–200 прикладів. LoRA при 500+ прикладах перевершує їх у 2–3 рази за точністю.

Приклад коду для Prefix Tuning
from peft import PrefixTuningConfig config = PrefixTuningConfig( task_type="CAUSAL_LM", num_virtual_tokens=20, prefix_projection=True, ) model = get_peft_model(model, config) 

Як ми донавчали Llama 3.1 для аналізу тональності фінансових новин?

Задача: класифікація тональності (Positive/Negative/Neutral) за 1200 текстами. Базова модель — Llama 3.1 8B Instruct.

Метод Параметри VRAM (A100) Accuracy Час навчання
5-shot (без FT) 0 16 GB 0.74
IA³ ~0.01% 16 GB 0.81 15 хв
Prefix Tuning (20 tokens) ~0.05% 16 GB 0.83 25 хв
LoRA r=8 ~0.2% 18 GB 0.89 45 хв
LoRA r=16 ~0.4% 19 GB 0.91 55 хв
QLoRA r=16 (4-bit base) ~0.4% 9 GB 0.90 70 хв
Full FT 100% 4×A100 0.93 8 год

Підсумок: LoRA r=16 — оптимальний вибір за співвідношенням точність/ресурси. QLoRA дає порівнянну точність при вдвічі меншому VRAM.

Керування кількома адаптерами через PEFT

Бібліотека PEFT дозволяє завантажувати та перемикати адаптери в одній базовій моделі:

from peft import PeftModel base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Meta-Llama-3.1-8B-Instruct") model = PeftModel.from_pretrained(base_model, "./adapter-legal", adapter_name="legal") model.load_adapter("./adapter-finance", adapter_name="finance") model.load_adapter("./adapter-medical", adapter_name="medical") model.set_adapter("legal") output_legal = model.generate(...) 

Це архітектурний патерн «один базовий інстанс — кілька спеціалізацій», який знижує витрати пам'яті в 5 разів.

Що входить у роботу

  • Аналіз вашого завдання та підбір методу PEFT.
  • Підготовка та розмітка датасету (при необхідності).
  • Навчання з моніторингом метрик (loss, accuracy, F1).
  • Тестування на відкладеній вибірці, порівняння з бейзлайном.
  • Інтеграція адаптера у ваш пайплайн (Hugging Face, SageMaker, Triton).
  • Документація та навчання команди.
  • Пост-навчальна підтримка та доналаштування при зміні даних.

Строки

  • Вибір методу PEFT та експерименти: 3–7 днів.
  • Підготовка даних: 2–4 тижні.
  • Навчання та порівняння методів: 1–2 тижні.
  • Разом: 3–6 тижнів. На етапі консультації уточнимо строки під ваш проєкт.

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