Обучение моделей
44 просмотра
Fine-tuning
Fine-tuning
Fine-tuning (дообучение) — процесс адаптации предобученной модели к конкретной задаче или домену путём дополнительного обучения на целевых данных. Значительно дешевле обучения с нуля.
Что такое Fine-tuning
Fine-tuning — дообучение предобученной модели на специфичных данных. Вместо обучения с нуля (pretraining) за миллионы долларов, берётся готовая модель и адаптируется к задаче за часы или дни.
Типы Fine-tuning
| Метод | Обучаемые параметры | VRAM | Время | Качество |
|---|---|---|---|---|
| Full Fine-tuning | Все 100% | Максимум | Дни | Лучшее |
| LoRA | 0.1-1% (адаптеры) | 3-5× меньше | Часы | Близко к full |
| QLoRA | 0.1-1% + квантизация | 10× меньше | Часы | Хорошее |
| Prefix Tuning | Виртуальные токены | Минимум | Быстро | Ограниченное |
Этапы Fine-tuning LLM
Предобученная модель (LLaMA 3 70B)
↓
[1] SFT (Supervised Fine-Tuning)
Обучение на парах instruction → response
↓
[2] DPO / RLHF (опционально)
Alignment: обучение на предпочтениях людей
↓
Финальная модель (адаптирована под задачу)
Когда нужен Fine-tuning
- Изменение стиля ответов: формальный, короткий, на определённом языке
- Доменная экспертиза: медицина, юриспруденция, код
- Новый формат: JSON-ответы, заполнение шаблонов
- Повышение точности: когда RAG недостаточно
Когда НЕ нужен
- Нужны актуальные данные → RAG
- Задача решается промптом → Prompt Engineering
- Мало данных (<100 примеров) → few-shot in-context learning
GPU-требования
| Модель | Full FT (VRAM) | LoRA (VRAM) | QLoRA (VRAM) |
|---|---|---|---|
| 7B | 60 GB | 16 GB | 8 GB |
| 13B | 120 GB | 32 GB | 12 GB |
| 70B | 600+ GB | 80 GB | 40 GB |
# LoRA fine-tuning с PEFT
from peft import LoraConfig, get_peft_model
config = LoraConfig(
r=16, # ранг адаптеров
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
)
model = get_peft_model(base_model, config)
print(f"Обучаемых параметров: {model.print_trainable_parameters()}")
# Обычно 0.1-0.5% от всех параметров