Въведение

За да направиш fine-tuning (дообучаване) на AI модел по работещ начин, ти трябват три неща: (1) ясно дефинирана задача и метрика за успех, (2) качествени обучаващи примери в правилния формат и (3) подходящ метод (пълен fine-tuning или PEFT като LoRA/QLoRA), който пасва на бюджета и инфраструктурата ти.

Fine-tuning почти никога не „спасява“ лоши или противоречиви данни. Ако данните не отразяват реалните ти случаи и очаквания, резултатът ще е непредвидим, независимо от модела.

В това how-to ще минем през стъпките от избора на базов модел и подготовката на dataset, през тренировка и оценка, до деплой и мониторинг.

Стъпка 1: Дефинирай задачата и критерия за успех

Преди да пипаш training, изясни какво точно искаш моделът да прави „по-добре“ от базовия вариант. Fine-tuning е инструмент за специфични поведения, не магия за общо „по-умен“ модел.

Направи кратък документ (1 страница) с:

  • Вход: какъв е input-ът (текст, изображение, таблични данни, аудио).
  • Изход: какво трябва да върне моделът (клас, извлечени полета, отговор, резюме, код).
  • Ограничения: стил, тон, забранени теми, PII, регулаторни изисквания.
  • Метрики: accuracy/F1 за класификация, BLEU/ROUGE (внимателно) за генериране, или човешка оценка с рубрика.
  • Базова линия: резултатите на „нула“ (prompt-only или текущ модел).

Най-скъпият fine-tuning е този, който оптимизира грешната метрика. Ако мериш нещо, което не е важно за бизнеса, ще „подобриш“ числа без реална полза.

Стъпка 2: Избери базов модел и подход (full fine-tuning vs PEFT)

Има два големи пътя:

  1. Пълен fine-tuning (full fine-tuning)
  • Дообучаваш всички (или повечето) параметри.
  • Обикновено дава най-висок таван за качество.
  • Изисква повече GPU/VRAM и по-внимателна регуляризация, за да не „забрави“ общи умения.
  1. Parameter-Efficient Fine-Tuning (PEFT) като LoRA/QLoRA
  • „Замразяваш“ базовия модел и обучаваш малки допълнителни матрици (адаптери).
  • Значително по-евтино и по-бързо, често с малка загуба (или дори без) спрямо full fine-tuning при много задачи.
  • Подходящо, ако имаш ограничен хардуер или искаш бързи итерации.

LoRA е най-разпространеният PEFT подход: вместо да променяш директно големите weight-ове, добавяш нискорангови матрици, които се учат върху твоите данни. QLoRA комбинира LoRA с по-агресивна квантизация, за да се побере тренировка на по-големи модели в по-малко VRAM.

Практична препоръка за 2026:

  • Ако тренираш на собствен хардуер и целта е домейн-адаптация, започни с LoRA/QLoRA.
  • Ако имаш голям, чист dataset и силна нужда от максимално качество, обмисли full fine-tuning.
  • Ако просто искаш по-добър „тон“ или формат, често ще стигнеш до същия резултат с по-добри инструкции (prompt), RAG и пост-обработка.

Стъпка 3: Подготви dataset (това е 70% от резултата)

3.1. Събиране на примери

Събери реални примери от:

  • Истински разговори/тикети (след анонимизация).
  • Вътрешни документи и FAQ (ако целиш Q&A), като внимателно отделиш „истина“ от „мнение“.
  • Експертни ръчни примери (ако домейнът е тесен и данните са малко).

Важно: не тренирай върху „идеализирани“ примери, ако в продукция входът е шумен. Моделът трябва да види реалността.

3.2. Формат

За LLM задачи най-често ти трябват примери като:

  • Инструкция (какво да направи).
  • Контекст (ако има).
  • Очакван отговор.

Дръж формата консистентна. Ако целиш JSON изход, всеки пример трябва да е валиден JSON и да следва една и съща схема.

3.3. Почистване и филтри

Минимални филтри:

  • Премахни дубликати.
  • Премахни примери с очевидни грешки.
  • Уеднакви правопис и терминология.
  • Маркирай чувствителни данни (PII) и ги замени (псевдонимизирай) или изключи.

Един силен „golden set“ за оценка е по-важен от още 10 000 посредствени примера за training.

3.4. Разделяне train/validation/test

  • Train: 80-90%
  • Validation: 5-10% (за early stopping и избор на хиперпараметри)
  • Test: 5-10% (само за финално сравнение)

Не допускай leakage: ако имаш подобни примери (вариации на един и същи казус), те трябва да са в един и същи split.

Стъпка 4: Избери инструментариум (локално или managed)

Има два реалистични сценария.

Сценарий A: Локално/облачно обучение с open-source стек

Най-популярният стек за NLP/LLM през 2025-2026 е около Hugging Face (Transformers) и PEFT (за LoRA). За RLHF/преференции се използват библиотеки като TRL.

Плюсове:

  • Пълен контрол върху данни и процес.
  • Възможност за PEFT и експерименти.

Минуси:

  • Трябват GPU и MLOps дисциплина.
  • Отговорността за сигурност/съответствие е при теб.

Сценарий B: Managed fine-tuning през API

Някои доставчици предлагат fine-tuning като услуга. Това е удобно, ако нямаш инфраструктура.

Към февруари 2026 (провери актуалната страница на доставчика преди бюджетиране) цените обикновено са на база токени: отделно за training и за inference на fine-tuned модел. Например при OpenAI има отделни тарифи за fine-tuning training и за input/output токени при използване на дообучен модел.

Плюсове:

  • По-малко инфраструктура.
  • По-бързо стартиране.

Минуси:

  • По-малък контрол.
  • Зависимост от доставчик и промени в цените.

Стъпка 5: Настрой хиперпараметри и режим на обучение

Тук често се печели или губи качеството.

За стартови стойности (LLM fine-tuning):

  • Learning rate: нисък (напр. 1e-5 до 2e-4 според PEFT/full)
  • Batch size: колкото позволява VRAM (ползвай gradient accumulation)
  • Epochs: 1-3 за големи dataset-и, 3-10 за малки (но следи overfitting)
  • Weight decay: умерен
  • Early stopping: по validation метрика

За LoRA:

  • r (rank): 8-64 (зависи от задачата)
  • alpha: често 16-128
  • target modules: типично attention/linear слоеве

Добра практика:

  • Започни с малък експеримент (например 2-5% от данните), за да валидираш формата.
  • После тренирай на пълния dataset.

Стъпка 6: Тренирай и следи правилните сигнали

По време на тренировка следи:

  • Train loss и validation loss
  • Основната бизнес метрика (ако е дефинирана)
  • Дрейф на стил/тон (ако е важно)
  • „Катастрофално забравяне“: дали моделът губи общи умения

Ако validation loss расте, спри и върни назад. По-добре е да имаш малко по-слаб модел, който е стабилен, отколкото „пренапаснат“ (overfit) модел, който се чупи на реални входове.

Стъпка 7: Оценка, безопасност и деплой

7.1. Офлайн оценка

Направи два типа тестове:

  • Автоматични: метрики върху test set.
  • Човешки: 50-200 реални казуса, оценени по рубрика.

7.2. Тестове за безопасност

Дори ако задачата е „безопасна“ (напр. класификация), провери:

  • Изтичане на чувствителни данни (моделът да не „повтаря“ PII от training).
  • Неочаквани токсични или дискриминационни отговори.
  • Уязвимост към prompt injection (ако моделът работи с контекст).

7.3. Деплой стратегия

  • Пусни A/B тест или canary release.
  • Логвай входове/изходи (с анонимизация) за последващ анализ.
  • Измервай latency и разход (токени, GPU време).

Fine-tuned модел без мониторинг в продукция е технически дълг, който расте всеки ден.

Съвети за по-добри резултати

  • Дръж етикетите и схемите стабилни. Ако сменяш формат, претренирай или направи миграция на данните.
  • Добавяй „трудни“ примери: гранични случаи, двусмислие, шум.
  • Пази отделен „продукционен“ набор за регресии, който никога не влиза в train.
  • Сравнявай срещу проста алтернатива: по-добър prompt, RAG, правилен post-processing.
  • Документирай какво точно си променил: dataset версия, хиперпараметри, код, дата.

Чести грешки, които да избягваш

  • Тренираш върху данни, които не приличат на реалните входове.
  • Смесваш стилове и инструкции в един dataset (моделът става непоследователен).
  • Нямаш отделен test set и мериш „успех“ върху training данните.
  • Гониш повече epochs вместо по-добро качество на примери.
  • Деплойваш без guardrails и без мониторинг.

Често задавани въпроси

Колко данни ми трябват за fine-tuning?

Няма универсално число. За тесни формати (например извличане на полета в JSON) често стигат стотици до няколко хиляди качествени примера. За стил и сложни поведения може да трябват десетки хиляди.

LoRA достатъчно ли е или ми трябва full fine-tuning?

Започни с LoRA/QLoRA. Ако не стигаш желаното качество и имаш достатъчно данни и хардуер, тогава тествай full fine-tuning.

Как да избегна model collapse или „забравяне“?

Ползвай по-нисък learning rate, early stopping и валидирай на набор, който покрива общите умения, които искаш да запазиш. Понякога помага и смесване с малка част „общи“ данни.

Как да оценя дали fine-tuning си струва?

Сравни срещу базов модел с добър prompt и/или RAG. Ако подобрението е малко, а разходът и рискът са големи, fine-tuning може да не е правилният избор.

Мога ли да fine-tune-вам модел с лични данни?

Технически е възможно, но е рисково и често юридически проблемно. Минимизирай данните, анонимизирай/псевдонимизирай и провери изискванията за съответствие (GDPR, договори, политики на доставчика), преди да продължиш.