Training
SFT (Supervised Fine-Tuning)
Дообучение LLM с учителем на парах ввод-вывод для придания нужного поведения.
Что такое SFT
Supervised Fine-Tuning (SFT) — этап fine-tuning, на котором языковая модель обучается подражать демонстрациям желаемого поведения. Это промежуточный шаг между pretraining (знания о языке) и выравниванием (RLHF/DPO): модель обучается следовать инструкциям по примерам.
SFT использует стандартную supervised loss (кросс-энтропия): модель предсказывает токены ответа, зная промпт. Никаких наград, критиков или моделей предпочтений.
Формат данных
// JSONL-формат для SFT
{"messages": [
{"role": "system", "content": "Ты помощник по анализу кода."},
{"role": "user", "content": "Что делает эта функция?"},
{"role": "assistant", "content": "Функция вычисляет факториал..."}
]}
Быстрый старт с TRL
from trl import SFTTrainer, SFTConfig
from datasets import load_dataset
dataset = load_dataset("json", data_files="train.jsonl")
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset["train"],
args=SFTConfig(
output_dir="./sft-output",
num_train_epochs=3,
per_device_train_batch_size=2,
gradient_accumulation_steps=8,
learning_rate=2e-5,
max_seq_length=2048,
),
)
trainer.train()
Сколько данных нужно
- Качественные 1K–10K примеров часто лучше, чем 1M шумных
- Diverse coverage важнее чистого объёма
- Минимальный порог для заметного улучшения: ~500–1000 примеров
SFT → RLHF/DPO pipeline
Стандартный пайплайн создания chat-модели:
- Base model (pretraining)
- SFT — научить следовать инструкциям
- Reward model / предпочтения — обучить на human preferences
- RLHF или DPO — выровнять по предпочтениям
Связанные термины
- instruction tuning — частный случай SFT
- DPO — следующий этап после SFT
- RLHF — альтернатива DPO для выравнивания
- fine-tuning — общий процесс
Готовы запустить GPU-задачу?
Запустить GPU-сервер