Метрики та інструменти для пайплайну очищення даних при fine-tuning LLM
Уявіть: ви зібрали 100 000 прикладів для донавчання LLaMA 3, але модель видає беззмістовні відповіді та галюцинує на кожному третьому запиті. Причина — зашумлені дані з низьким signal-to-noise ratio: 40% дублікатів, 15% містять персональні дані, ще 10% — токсичний вміст. Без якісного очищення fine-tuning не дасть потрібного результату. Вартість пайплайну починається від $3000.
Ми розробили пайплайн, який за 10–14 днів перетворює сирий датасет на чистий, готовий до навчання. MinHash LSH для дедуплікації працює в 10 разів швидше за попарне порівняння при пошуку near-duplicates на датасетах з 50 000 прикладів. А фільтрація токсичності через Detoxify знижує ймовірність небажаних відповідей моделі на 25% порівняно з простим регулярним виразом. Економія часу на очищенні даних складає до $5000 на проекті. Точність MinHash LSH на 5% вища, ніж у SimHash.
Як очищення даних впливає на якість моделі?
Тексти для fine-tuning містять специфічні артефакти: HTML-теги (якщо збирали з вебу), Unicode-варіації, мета-коментарі моделей на кшталт «As an AI language model...». Просте видалення знаків пунктуації не вирішує проблему. Потрібна багатошарова фільтрація з урахуванням контексту. Наприклад, PII-детекція вимагає не лише регекспів, а й NER-моделі (spaCy), щоб знайти «Джон Доу, вул. Леніна» — це не менш важливо, ніж номери карток. Важливо контролювати data leakage між тренувальним та тестовим наборами. Перед запуском пайплайну рекомендується ознайомитися з best practices з документації Hugging Face Datasets.
Які методи дедуплікації обрати?
- Крок 1. Визначте пороги фільтрації. Для токсичності використовуйте threshold 0.7 — це дає баланс між видаленням поганого контенту та збереженням корисного. Для дублів встановіть схожість 0.8.
- Крок 2. Виберіть алгоритм дедуплікації. Для точних дублів — exact matching, для near-duplicates — MinHash LSH. SimHash підходить для потокової обробки, але дає більше хибних спрацьовувань. MinHash LSH швидший за інші методи у 10 разів при пошуку near-duplicates.
- Крок 3. Запустіть тестовий прогін на 1000 прикладах. Перевірте метрики: кількість видалених, тип-токен-раціо, залишкову токсичність та perplexity. Якщо все в нормі — запускайте повний датасет.
Деталі алгоритму дедуплікації
Для точних дублів використовуємо хешування, для near-duplicates — MinHash LSH. Поріг схожості 0.8 відсікає майже ідентичні приклади, але зберігає варіативність.
from datasketch import MinHash, MinHashLSH def find_near_duplicates(texts: list[str], threshold: float = 0.8) -> list[tuple]: """MinHash LSH для ефективного пошуку near-duplicates O(n log n)""" lsh = MinHashLSH(threshold=threshold, num_perm=128) minhashes = {} for i, text in enumerate(texts): m = MinHash(num_perm=128) for word in text.lower().split(): m.update(word.encode('utf8')) lsh.insert(f"doc_{i}", m) minhashes[f"doc_{i}"] = m duplicates = [] for i, text in enumerate(texts): key = f"doc_{i}" result = lsh.query(minhashes[key]) result.remove(key) if result: duplicates.append((i, [int(r.split('_')[1]) for r in result])) return duplicates Порівняння методів дедуплікації
| Метод | Швидкість | Точність | Застосування |
|---|---|---|---|
| Exact matching | O(n) | 100% | Точні дублі |
| MinHash LSH | O(n log n) | ~95% | Near-duplicates |
| SimHash | O(n) | ~90% | Швидка оцінка |
Які показники після очищення?
Після пайплайну обов'язково перевіряємо метрики:
| Метрика | Норма | Навіщо |
|---|---|---|
| Видалено прикладів | 15–30% | Контроль агресивності очищення |
| Тип токенів | >5 млн | Достатньо для fine-tuning |
| Type-token ratio | >0.5 | Достатня різноманітність |
| Покриття задач | >90% | Усі потрібні сценарії |
| Токсичність | <1% | Безпека моделі |
| Perplexity | <50 | Складність тексту |
Типовий результат: з 50 000 сирих прикладів після очищення залишається 35 000–42 000 високоякісних. Зниження обсягу на 15–30% — норма, і підсумкова якість моделі від цього лише покращується. Порівняно з грубим очищенням (тільки регекспи), точність fine-tuning зростає на 15–20%. Часта проблема — незбалансованість класів: якщо в датасеті 90% прикладів з позитивним тоном, модель не навчиться відповідати на негативні запити. Тому важливо балансування класів: ми застосовуємо стратифіковану вибірку та аугментацію рідкісних класів. Також важливо видаляти стоп-слова, характерні для LLM: 'As a language model', 'I cannot', 'I think'. Це знижує шум на 5–10%. Для підвищення різноманітності тексту ми використовуємо перплексію та експоненційне згладжування. fine-tuning дані мають бути високої якості, тому на етапі попередньої обробки датасету ми виконуємо токенізацію LLM з використанням токенайзера моделі та перевірку якості датасету. Процес LLM навчання стабільніший після очищення.
Що входить у роботу
Ми готуємо повний пайплайн очищення під ваш датасет:
- Аналіз сирих даних (розподіл довжин, мова, токсичність)
- Налаштування фільтрів під ваше завдання (RAG, генерація, класифікація)
- Дедуплікація та видалення PII
- Нормалізація тексту та токенізація
- Звіт з метриками та візуалізаціями
- Документація пайплайну та конфігурація
- Навчання вашої команди
Терміни — від 10 до 14 робочих днів залежно від обсягу. Зв'яжіться з нами для оцінки вашого проекту — ми гарантуємо конфіденційність та якість результату. Наш досвід: понад 5 років у NLP, понад 20 проектів з fine-tuning моделей різного розміру. Отримайте консультацію з очищення датасету — ми підготуємо індивідуальний пайплайн.







