Training

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()

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

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

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