Перейти к основному содержимому

Дообучение моделей на конкретные задачи 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 на каждый tokenBIO-метки
Seq2seqEncoder-decoder (T5, BART)Генерация target
Extractive QASpan start/end logitsДва индекса в контексте
Multiple choiceScore для каждого варианта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Низкоранговые матрицы в attentionLLM, мало VRAM
QLoRALoRA + 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
Epochs2–5; следить за переобучением на val
Max lengthУсечение под задачу; длинные документы — sliding window
Class imbalanceWeighted 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.


Дальше