Дообучение моделей на конкретные задачи NLP
Предобучение трансформера на терабайтах текста — дорогое и редкое занятие для большинства команд. Практический NLP — дообучение (fine-tuning) готового чекпоинта под задачу — классификация тикетов, NER по договорам, тональность отзывов, доменный перевод.
Общая теория transfer learning и fine-tuning — статья про обучение на базе готовой модели. Здесь — специфика трансформеров и NLP.
Два этапа жизненного цикла
| Этап | Данные | Цель | Результат |
|---|---|---|---|
| Pre-training | Неразмеченный корпус | Language modeling (MLM / CLM) | Базовые языковые представления |
| Fine-tuning | Размеченные примеры задачи | Минимизировать loss задачи | Модель под продукт |
Иногда между ними — intermediate tuning (domain-adaptive pre-training на текстах отрасли без меток).
Типы "голов" под задачу
| Задача | Архитектура | Выход |
|---|---|---|
| Классификация текста | [CLS] или mean pooling + linear | Один label на документ |
| Token classification (NER) | Linear на каждый token | BIO-метки |
| Seq2seq | Encoder-decoder (T5, BART) | Генерация target |
| Extractive QA | Span start/end logits | Два индекса в контексте |
| Multiple choice | Score для каждого варианта | argmax |
Hugging Face AutoModelForSequenceClassification, AutoModelForTokenClassification, AutoModelForSeq2SeqLM подставляют нужную голову автоматически.
Стратегии обновления весов
Full fine-tuning
Обновляются все параметры модели. Нужны GPU с достаточной VRAM, малый learning rate ($10^-5$ … $10^-4$), часто warmup и weight decay.
Feature extraction (freeze backbone)
Замораживают transformer, обучают только classifier head. Быстро, мало данных — но потолок качества ниже.
Partial unfreezing
Сначала head, затем последние $k$ слоёв, затем весь стек с разными learning rate (discriminative fine-tuning).
Parameter-efficient fine-tuning (PEFT)
| Метод | Идея | Когда |
|---|---|---|
| LoRA | Низкоранговые матрицы в attention | LLM, мало VRAM |
| QLoRA | LoRA + 4-bit базовые веса | Fine-tune 7B+ на одной GPU |
| Adapters | Маленькие bottleneck-слои между блоками | Мультизадачность |
| Prefix / Prompt tuning | Обучаемые виртуальные токены | Очень мало данных |
Подробнее про LoRA в контексте LLM — Работа с ИИ-моделями.
Пример — классификация на Hugging Face Trainer
Код ITЗагрузка примера кода…
На inference тот же tokenizer + model(**inputs) → logits → softmax → класс.
Гиперпараметры и типичные ошибки
| Параметр | Рекомендация |
|---|---|
| Learning rate | $2×10^-5$ … $5×10^-5$ для BERT-scale; меньше для больших LLM |
| Batch size | Как можно больше при gradient accumulation |
| Epochs | 2–5; следить за переобучением на val |
| Max length | Усечение под задачу; длинные документы — sliding window |
| Class imbalance | Weighted loss, oversampling, focal loss |
Типичные ошибки
- другой tokenizer на train и prod;
- утечка test в подбор гиперпараметров;
- fine-tune на 10 примерах с full fine-tuning 12-layer BERT — переобучение;
- забытый
model.eval()иtorch.no_grad()на inference.
Операционный контур данных и eval — MLOps, слои 1–3.
Instruction tuning и RLHF (контекст)
Чат-модели после pre-training проходят instruction fine-tuning на парах "запрос — эталонный ответ" и иногда RLHF для предпочтений человека. Это тот же fine-tuning по смыслу, но другой масштаб данных и инфраструктуры — см. LLM.