Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#961

Что такое Parameter-Efficient Fine-Tuning (PEFT)? Назовите 3 метода, которые не масштабируются на большие модели (кроме LoRA).

Краткий тезис

Parameter-Efficient Fine-Tuning (PEFT) — это семейство техник дообучения LLM, при которых замораживается основная масса параметров предобученной модели, а обучается лишь небольшое подмножество (обычно <1–5% от общего числа). PEFT решает проблему катастрофического забывания и снижает требования к памяти и времени обучения. Классические методы PEFT, масштабируемые на большие модели, включают LoRA, Q-LoRA, DoRA и VeRA. Однако существуют три метода, которые теоретически масштабируются, но на практике не конкурируют с LoRA по эффективности и популярности: BitFit, Adapter и Prefix-tuning. Все они применимы к большим моделям, но уступают LoRA по качеству, гибкости или удобству развертывания.

2. Adapter (Бутылочные слои)

2.1 Суть метода

Adapter — техника, при которой в каждый слой трансформера добавляется небольшой нейронный модуль с бутылочной архитектурой (bottleneck). После нормализации (LayerNorm) или после attention/FFN вставляется два последовательных полносвязных слоя: down-projection (сжимает размерность в d_bottleneck ≈ d_model/16) и up-projection (восстанавливает исходную размерность).

2.2 Архитектура адаптера

x → LayerNorm → Down(d_model → d_bottleneck) → NonLin → Up(d_bottleneck → d_model) → Residual → out

Параметры: ≈ (d_model × d_bottleneck) × 2 × число слоёв. Для LLaMA-7B (d_model=4096, 32 слоя) это ~0.5–1% от общего числа параметров.

2.3 Масштабируемость и ограничения

  • Масштабируемость: Adapter можно вставить в модель любого размера, но на практике не масштабируется на сверхбольшие модели (100B+) из-за роста latency: каждый адаптер добавляет два дополнительных линейных преобразования на слой, что увеличивает инференсное время на 10–20% (в отличие от LoRA, где инференс — просто слияние весов).
  • Почему не побеждает LoRA:
    • Инференсная latency: LoRA после обучения сливается с весами модели и не добавляет шагов. Адаптер же требует последовательного вызова дополнительных слоёв, что критично для серверных нагрузок.
    • Качество: Адаптер часто уступает LoRA на генеративных задачах из-за меньшей expressivity (bottleneck не так хорошо аппроксимирует обновление весов, как низкоранговая матрица).
    • Совместимость: Адаптер сложнее комбинировать с техниками квантизации (QLoRA), так как адаптеры — полноценные слои с плавающей точкой, а LoRA легко накатывается на 4-битные веса.
  • Практический вердикт: Используется в NLP для средних моделей (BERT, T5), но для современных LLM (LLaMA, Mistral) LoRA — стандарт.

3. Prefix-tuning (Soft Prompts)

3.1 Суть метода

Prefix-tuning — техника, при которой к входной последовательности каждого слоя (или только к ключам/значениям attention) добавляются обучаемые виртуальные токены (soft prompts). В отличие от “prompt engineering” — это векторы, которые обучаются градиентным спуском.

3.2 Формализация

Для внимания в слое:

K = LN(h) · W_K + K_prefix
V = LN(h) · W_V + V_prefix

Где K_prefix и V_prefix — матрицы размером (len_prefix × d_k), заполненные обучаемыми параметрами. В классической реализации (Li & Liang, 2021) добавляется ~0.1–0.5% обучаемых параметров.

3.3 Масштабируемость и ограничения

  • Масштабируемость: Prefix-tuning теоретически применим к моделям любого размера, но не масштабируется на практические сценарии (сериализация, кэширование).
  • Почему не побеждает LoRA:
    • Потребление памяти: Prefix-векторы копируются для каждого training example (batch), тогда как LoRA хранит одну матрицу на весь датасет. На батчах 8–16 Prefix требует значительной дополнительной памяти (особенно при длинных префиксах).
    • Нестабильность обучения: Soft prompts чувствительны к инициализации и hyperparams (learning rate, длина префикса). LoRA более robust.
    • Инференс: Prefix-векторы не сливаются с весами — их нужно либо кэшировать в key-value cache, либо передавать как контекст, что увеличивает длину последовательности и время генерации. LoRA сливается — overhead нулевой.
    • Качество: На задачах, требующих точного запоминания фактов (например, domain адаптация), Prefix-tuning уступает LoRA на 3–7% метрик.
  • Практический вердикт: Используется только в исследовательских сценариях (напр., мультизадачность или мета-обучение), но не в production.

4. Все они масштабируются, но LoRA чаще побеждает

4.1 Почему LoRA стал стандартом

КритерийBitFitAdapterPrefix-tuningLoRA
Инференс без overheadДа (сливается)Нет (+слои)Нет (+токены)Да (сливается)
Качество на генеративных задачахСреднееСреднееНизкое-среднееВысокое
Совместимость с квантизациейДаУсловноДаДа (QLoRA)
Масштабируемость на 100B+ДаУсловно (latency)Условно (память)Да
Гибкость ранга адаптацииНет (фикс)Есть (d_bottleneck)Есть (len_prefix)Да (rank)

4.2 Когда всё же стоит рассмотреть альтернативы

  • BitFit: если модель <= 350M и нужен минимальный overhead при обучении (например, проверка гипотезы).
  • Adapter: если требуется обучать множество адаптеров параллельно (multi-task) без слияния весов (но тогда лучше LoRA с AdaLoRA).
  • Prefix-tuning: если задача — контролировать длину генерации (например, задать стиль ответа) без изменения весов (но Prompts + LoRA дают тот же эффект).

4.3 Итоговый вывод

Три классических метода PEFT — BitFit, Adapter и Prefix-tuning — действительно масштабируются на большие LLM (в том смысле, что число обучаемых параметров не растёт с размером модели), но проигрывают LoRA по совокупности факторов: простоте использования, качеству, скорости инференса и совместимости с квантизацией. В промышленной практике на 2024–2025 годы LoRA (и её улучшенные версии) — стандартный выбор.


5. Пет-проект для закрепления

Задача: Сравнить BitFit, Adapter, Prefix-tuning и LoRA на задаче классификации тональности отзывов. Используйте одну предобученную модель (например, distilbert-base-uncased) и один датасет (IMDb или SST-2).

Инструменты:

  • Python 3.10+, PyTorch 2.0+, Transformers 4.30+
  • PEFT library (для LoRA и Adapter)
  • Datasets library
  • Matplotlib для визуализации кривых обучения

Шаги:

  1. Загрузите модель distilbert-base-uncased и токенизируйте датасет IMDb (2,000 примеров).
  2. Реализуйте BitFit: заморозьте model.parameters(), разморозьте param.requires_grad = True для всех bias.
  3. Реализуйте Adapter: используйте PEFT с AdapterConfig (бутылочная размерность 16).
  4. Реализуйте Prefix-tuning: используйте PrefixTuningConfig (длина prefix 20).
  5. Реализуйте LoRA: LoRAConfig (rank = 8, alpha = 16).
  6. Обучите каждую конфигурацию в течение 3 эпох (batch_size=16, lr=1e-4).
  7. Замерьте: accuracy на test, время обучения (1 epoch), пиковое использование GPU-памяти.
  8. Постройте таблицу сравнения.

Ожидаемый результат:

  • LoRA покажет лучший accuracy (93–94%) и минимальное время инференса.
  • BitFit — accuracy ~90%, но обучение на 15% быстрее (меньше градиентов).
  • Adapter ~91%, но инференс дольше на 10%.
  • Prefix-tuning ~89%, пиковое потребление памяти выше на 20%.

Связь с другими вопросами

ВопросТема
952LoRA — что это и как применяется
954Adapter в контексте мультизадачности
956Prompt-tuning и Prefix-tuning

Навигация

  • Предыдущий: 960
  • Следующий: 962
  • Индекс: 00. Индекс разборов