Что такое 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 стал стандартом
| Критерий | BitFit | Adapter | Prefix-tuning | LoRA |
|---|---|---|---|---|
| Инференс без 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 для визуализации кривых обучения
Шаги:
- Загрузите модель
distilbert-base-uncasedи токенизируйте датасет IMDb (2,000 примеров). - Реализуйте BitFit: заморозьте
model.parameters(), разморозьтеparam.requires_grad = Trueдля всехbias. - Реализуйте Adapter: используйте
PEFTсAdapterConfig(бутылочная размерность 16). - Реализуйте Prefix-tuning: используйте
PrefixTuningConfig(длина prefix 20). - Реализуйте LoRA:
LoRAConfig(rank = 8, alpha = 16). - Обучите каждую конфигурацию в течение 3 эпох (batch_size=16, lr=1e-4).
- Замерьте: accuracy на test, время обучения (1 epoch), пиковое использование GPU-памяти.
- Постройте таблицу сравнения.
Ожидаемый результат:
- LoRA покажет лучший accuracy (93–94%) и минимальное время инференса.
- BitFit — accuracy ~90%, но обучение на 15% быстрее (меньше градиентов).
- Adapter ~91%, но инференс дольше на 10%.
- Prefix-tuning ~89%, пиковое потребление памяти выше на 20%.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 952 | LoRA — что это и как применяется |
| 954 | Adapter в контексте мультизадачности |
| 956 | Prompt-tuning и Prefix-tuning |
Навигация
- Предыдущий: 960
- Следующий: 962
- Индекс: 00. Индекс разборов