Як розмітка даних впливає на fine-tuning LLM

Якість відповідей вашої LLM після донавчання залишає бажати кращого? Часто причина криється не в архітектурі, а в даних. Ми розробляємо та реалізуємо проєкти з розмітки даних для fine-tuning під ключ, забезпечуючи високу якість анотацій і подальшу підтримку.
Часті запитання

Ви запустили fine-tuning своєї LLM, а якість відповідей виявилася нижчою, ніж очікувалося. Найчастіше причина не в архітектурі, а в даних. 70% проблем з fine-tuning пов'язані з якістю розмітки, а не з вибором моделі чи гіперпараметрами. Неправильно зібраний датасет призводить до падіння метрик на 20-30% порівняно з добре розміченим. Розмітка для дообучення принципово відрізняється від класичної ML-розмітки: тут не присвоюється мітка, а створюється ідеальна відповідь моделі. Якість анотацій безпосередньо визначає якість навченої моделі. Ми реалізували понад 50 проєктів — від підтримки клієнтів до багатокрокових агентів, і гарантуємо професійний підхід до кожного.

Типи анотації

Вибір способу залежить від обсягу, бюджету та необхідної якості. Нижче — порівняння основних підходів.

Тип анотації Швидкість Якість Вартість Ризики
Direct annotation 5-10 пар/год Дуже висока Висока Втома анотатора
Edit-based 15-30 пар/год Висока Середня Прийняття поганої відповіді
Ranking/Preference 20-40 пар/год Середня Низька Неузгодженість критеріїв
AI-assisted 30-50 пар/год Висока Низька Залежність від базової моделі

Direct annotation — розмітник створює пару (інструкція, ідеальна відповідь) з нуля. Найвища якість, найвищий cost. Використовуємо для критичних до якості доменів (юриспруденція, медицина).

Edit-based annotation — розмітник покращує відповідь базової моделі. У 2-3 рази швидше, ніж з нуля. Ризик: розмітник приймає погану відповідь з мінорними правками. Щоб цього уникнути, включаємо обов'язкове поле «обґрунтування змін».

Ranking/Preference annotation — розмітник ранжує кілька відповідей моделі (використовується для RLHF та DPO). Простіше, ніж створення з нуля, але потребує чіткого розуміння критеріїв якості. Без них kappa між анотаторами рідко перевищує 0.4.

AI-assisted annotation — сильна модель (GPT-4) генерує відповіді, люди перевіряють та коригують. Оптимальний баланс якості та швидкості для більшості задач. На практиці дає 90% якості direct при 30% вартості.

Як вибрати тип анотації?

Якщо ваша задача — навчити модель відповідати на типові питання (підтримка, FAQ), обирайте AI-assisted з фінальною вичиткою. Для творчих задач (генерація коду, креатив) — direct annotation. Для задач з ранжуванням (рекомендаційні системи) — ranking/Preference. Якщо бюджет обмежений, можна комбінувати: 20% direct для навчання анотаторів та 80% edit-based для основного обсягу. Отримайте консультацію з підбору типу анотації для вашого проєкту — ми допоможемо з вибором.

Керівництво з анотації (Annotation Guidelines)

Ключовий документ, без якого анотатори будуть давати неузгоджені результати. Включаємо в нього:

  • критерії якості (точність, повнота, тон, довжина, структура);
  • приклади хорошої відповіді з розбором;
  • приклади поганої відповіді з поясненням помилок;
  • список заборонених фраз («Я просто мовна модель…», «Я не можу…»);
  • правила обробки неоднозначних запитів.

Ми розробляємо guidelines під кожен проєкт і проводимо calibration сесії перед стартом. Приклад guidelines для Customer Support Assistant:

## Руководство по аннотации: Customer Support Assistant

### Критерии качества хорошего ответа:
1. Точность: Ответ соответствует политикам компании и фактически верен
2. Полнота: Решает проблему пользователя, не оставляя открытых вопросов
3. Тон: Профессиональный, эмпатичный, без извинений за несуществующие проблемы
4. Длина: Достаточная, но не избыточная (100-300 слов оптимально)
5. Структура: Абзацы, без списков для простых ответов

### Что НЕ должно быть в ответе:
- "Я просто языковая модель..."
- "Я не могу..."
- Повторение вопроса пользователя
- Неуместные извинения
- Устаревшая информация о продукте

### Примеры ХОРОШЕГО ответа:
[примеры]

### Примеры ПЛОХОГО ответа:
[примеры с объяснением]

Платформи для анотації

Label Studio (open-source):

from label_studio_sdk import Client
ls = Client(url='http://localhost:8080', api_key='...')

# Создание проекта для LLM аннотации
project = ls.start_project(
    title='Customer Support Fine-tuning',
    label_config='''
<View>
    <Text name="instruction" value="$instruction"/>
    <TextArea name="response" toName="instruction" placeholder="Write ideal response..." rows="10" maxSubmissions="1"/>
    <Rating name="quality" toName="instruction" maxRating="5" icon="star" size="medium"/>
</View>
'''
)

# Загрузка задач
tasks = [{"instruction": ex.instruction, "input": ex.input} for ex in unannotated_examples]
project.import_tasks(tasks)

Scale AI / Appen — для великих обсягів з професійними анотаторами. Значно дорожче, але Quality Control включений. Використовуємо їх для проєктів з обсягом від 50 000 пар.

Як контролювати якість анотацій?

Основною метрикою є inter-annotator agreement (IAA) — узгодженість між анотаторами. Чим вищий, тим надійніші дані. Для контролю якості ми закладаємо перекриття 10-20% задач, які розмічаються двома спеціалістами незалежно. Обчислюємо Cohen's Kappa — міру згоди, що використовується в NLP.

Приклад розрахунку Cohen's Kappa
from sklearn.metrics import cohen_kappa_score

def compute_iaa(annotations_a: list, annotations_b: list) -> float:
    """Cohen's Kappa для узгодженості анотаторів"""
    # Для ranking задач (1-5 rating)
    kappa = cohen_kappa_score(annotations_a, annotations_b)
    print(f"Cohen's Kappa: {kappa:.3f}")
    # < 0.4: низька згода, перегляд guidelines
    # 0.6-0.8: хороша згода
    # > 0.8: відмінна згода
    return kappa

Низька узгодженість (< 0.4) — сигнал, що guidelines неоднозначні. Ми доопрацьовуємо документ, проводимо додаткову calibration сесію та повторно заміряємо IAA.

Calibration сесії перед стартом повноцінної анотації: спільна розмітка 20-50 прикладів всією командою, обговорення розбіжностей, уточнення guidelines. Це критично знижує варіанс між анотаторами. Без калібрування навіть досвідчені анотатори дають kappa < 0.5 на складних задачах. Після калібрування — стабільно 0.7+.

Чому важливі calibration сесії?

Тому що без них розкид між анотаторами може звести нанівець усі зусилля зі збору даних. Одна calibration сесія знижує кількість переробок на 40% і підвищує підсумкову точність моделі на 15-20%. Це економить до 30% бюджету проєкту. Оптимізація розмітки знижує витрати на 35-40% порівняно з традиційними методами. Замовте пілотне калібрування — ми покажемо ефект на ваших даних.

Що входить у нашу роботу з розмітки даних?

Нижче — основні етапи та їх тривалість.

Етап Тривалість Результат
Аналіз задачі та розробка guidelines 3-5 днів Документ annotation guidelines
Підбір типу анотації 1 день Рекомендація з обґрунтуванням
Calibration сесія та навчання 2-3 дні Навчені анотатори
Розмітка з контролем якості від 2 тижнів Датасет з перекриттям та IAA
Підсумковий датасет та документація 2 дні JSONL з метаданими, статистика IAA

Терміни залежать від обсягу та складності: від 2 тижнів для 1000 пар до 2-3 місяців для 50 000+. Вартість розраховується індивідуально. Ми працюємо як з разовими проєктами, так і з довгостроковим аутсорсингом анотації. Отримайте консультацію для оцінки вашого проєкту — оцінимо обсяг роботи, підберемо оптимальний метод анотації та розрахуємо терміни.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142