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-модели:

  1. Base model (pretraining)
  2. SFT — научить следовать инструкциям
  3. Reward model / предпочтения — обучить на human preferences
  4. RLHF или DPO — выровнять по предпочтениям

Связанные термины

  • instruction tuning — частный случай SFT
  • DPO — следующий этап после SFT
  • RLHF — альтернатива DPO для выравнивания
  • fine-tuning — общий процесс

Готовы запустить GPU-задачу?

Запустить GPU-сервер