PEFT дообучение LLM: LoRA, QLoRA, AdaLoRA

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

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1439
  • 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 и предложим детальный план дообучения. Закажите консультацию, чтобы получить индивидуальный план.