fine-tuning
Дообучение предобученной модели на специализированном датасете для адаптации к задаче.
Что такое fine-tuning
Fine-tuning (дообучение) — процесс обновления весов предобученной модели на новом, обычно меньшем датасете для адаптации к конкретной задаче или домену. Отправная точка — мощная base-модель (Llama, Mistral, Qwen), накопившая знания при pretraining на огромных корпусах текста. Fine-tuning «настраивает» эти знания под нужный стиль, формат или специализацию.
В отличие от pretraining (недели на сотнях GPU), fine-tuning занимает часы или дни на 1–8 GPU.
Виды fine-tuning
Full fine-tuning — обновление всех весов модели. Максимальная гибкость, максимальные требования к VRAM. Для 7B в BF16 нужно ~80–100 ГБ VRAM (веса + градиенты + оптимизатор).
LoRA / QLoRA — обновление только адаптерных матриц малого ранга. 7B с QLoRA умещается на 8–16 ГБ VRAM. Стандарт для большинства задач.
Instruction tuning — fine-tuning на парах «инструкция → ответ» для придания модели chat-поведения.
SFT (Supervised Fine-Tuning) — общий термин для дообучения с учителем на примерах ввода-вывода.
RLHF / DPO — дообучение на основе предпочтений для выравнивания с ценностями.
Быстрый старт с Hugging Face
from transformers import AutoModelForCausalLM, AutoTokenizer
from trl import SFTTrainer, SFTConfig
from datasets import load_dataset
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
torch_dtype="bfloat16",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B")
dataset = load_dataset("your-dataset")
trainer = SFTTrainer(
model=model,
train_dataset=dataset["train"],
args=SFTConfig(
output_dir="./output",
num_train_epochs=3,
per_device_train_batch_size=2,
learning_rate=2e-5,
),
)
trainer.train()
Связанные термины
- pretraining — что происходит до fine-tuning
- LoRA и QLoRA — эффективные методы fine-tuning
- SFT, DPO, RLHF — конкретные подходы
- PEFT — библиотека для эффективного fine-tuning
- LoRA/QLoRA и практики fine-tuning
Готовы запустить GPU-задачу?
Запустить GPU-сервер