Обучение моделей
23 просмотра
PEFT
Parameter-Efficient Fine-Tuning
PEFT (Parameter-Efficient Fine-Tuning) — семейство методов дообучения, обновляющих лишь малую часть параметров модели (0.01-1%), что драматически снижает требования к VRAM и позволяет fine-tuning на consumer GPU.
Что такое PEFT
PEFT — общий термин для методов дообучения, которые замораживают основные веса модели и обучают только небольшие добавленные параметры.
Методы PEFT
| Метод | Подход | Обучаемые параметры |
|---|---|---|
| LoRA | Низкоранговые адаптеры | 0.1-1% |
| QLoRA | LoRA + квантизация | 0.1-1% |
| Prefix Tuning | Обучаемые виртуальные токены | < 0.1% |
| Prompt Tuning | Soft prompts | < 0.01% |
| IA3 | Learned rescaling | < 0.01% |
| AdaLoRA | Адаптивный ранг LoRA | 0.1-0.5% |
Сравнение с Full Fine-Tuning
| Параметр | Full FT | LoRA | QLoRA |
|---|---|---|---|
| VRAM (7B) | 120 GB | 16 GB | 6 GB |
| VRAM (70B) | 1+ TB | 160 GB | 48 GB |
| Скорость | 1× | 1.5× | 0.8× |
| Качество | Лучшее | ~Full FT | ~LoRA |
| GPU | 8× A100 | 1× A100 | 1× RTX 4090 |
Библиотека HuggingFace PEFT
from peft import get_peft_model, LoraConfig, TaskType
config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)
model = get_peft_model(base_model, config)
# Обучение как обычно — optimizer обновляет только адаптеры
Когда использовать PEFT
- Всегда, если у вас нет кластера из 8+ GPU уровня A100
- Для специализации модели под домен (медицина, право, код)
- Для мульти-тенантности — база одна, адаптеры для каждого клиента
- Для итераций — быстрый эксперимент за часы, а не дни