Опубликовано
Любовь - это русские придумали, чтобы денег не платить: добиваем бесплатных Бертов до платного Jev
Автор: Гусев Николай [портфолио]
Дата обновления не указана в исходнике.
Темы: fine-tuning, local-models
Сложность: высокая
В прошлой части laya уступала Jev в калибровке, и ответ был "плати за то, что сделали за тебя". Спойлер: не обязательно. Десять тысяч моих писем, ротатор бесплатных моделей, две тренировки на RTX 4060 за 82 секунды и 15.5 минуты - и необученный BERT даёт accuracy 0.959 с калибровкой, которой позавидует платный API. Плюс честная цена: специализация съедает универсальность.
Исходная точка
Laya-multilingual: 322M параметров, mmBERT-энкодер, лицензия Apache 2.0. Авторы честно пишут в карточке: базовые чекпоинты не умеют почти ничего, сила появляется после дообучения на своём домене. В прошлых частях я гонял её zero-shot на эвалах - теперь задача обратная: научить её делать мою работу бесплатно.
Датасет: три источника меток
Выгрузил через IMAP десять тысяч писем за год: тема плюс полторы тысячи знаков тела. Метки - из трёх источников по возрастанию цены.
Правила по доменам: GitHub-уведомления о падениях билдов - автоматика, промо-рассылки - шум, Госуслуги и платежи за серверы - важное. hh.ru хитрее: уведомление о вакансии - шум, приглашение работодателя - важное. Правила закрыли 3608 писем бесплатно.
Локальная модель yandexgpt-5-lite-8b в LM Studio - для остатка на первой тысяче: промпт с вопросом о действии, temperature 0, 45 секунд.
Ротатор бесплатных моделей через OpenRouter - для основного корпуса: deepseek-v4-flash основная, ling-3.0-flash и nex-mini на подхвате. При 429 или недоступности запрос автоматически переезжает на следующую модель в списке. Шесть с лишним тысяч писем за три часа; без метки осталось около трёх процентов корпуса.
Итоговый корпус: 9690 писем, из них 879 важных. Дисбаланс 12 к 1 - типичный для почты, он же ловушка для метрик: модель, говорящая всем не важно, получит accuracy 0.91 и не будет стоить ничего. Поэтому смотрим в скобки: F1 по важному классу - единственная честная метрика.
Тренировка: два прогона
Формат - классификация последовательности: энкодер mmBERT плюс свежая голова на два класса. Гиперпараметры без тюнинга: learning rate 2e-5, batch 16, три эпохи, линейный прогрев первых 10 процентов шагов, bf16. Из подводных камней: конфиг laya нестандартный, веса лежат в схеме с головами RL-агента - энкодер вынимается переименованием префикса в modernbert и выбрасыванием лишних голов. Три строчки кода, о которых стоило догадаться сразу.
`прогон 1: 1000 писем, 82 секунды
прогон 2: 9690 писем, 15.5 минуты
железо: RTX 4060, 8 ГБ VRAM, пиково 3.6 ГБ`
Базовая точка - свежесозданная голова без обучения - даёт accuracy 0.427. Это не способности laya, это случайная инициализация: все честные цифры начинаются после первой эпохи.
Результаты
Сплит 8000 на обучение, 1000 валидация, 690 тест, который модель не видела ни разу:
` 1000 писем 10 000 писем
accuracy 0.873 0.959
F1 важного класса 0.537 0.725
ECE 0.095 0.032
время тренировки 82 с 15.5 мин`
Десятикратный корпус поднял accuracy на 8.6 пункта, F1 важного класса - на 19. Дёшево не значит плохо. ECE 0.032 означает: когда модель называет уверенность 80 процентов, она права примерно в 80 случаях из ста. Для сравнения - сторонние замеры дают Jev ECE 0.246. Наборы разные, напрямую сравнивать нельзя, но порядок понятен: то, за что берут деньги, получилось дома бесплатно.
Цена специализации
Регрессия на сетах из прошлых частей показала обратную сторону. Фильтр инъекций: дообученная модель разделяет атаки и нормальные тексты хуже случайного угадывания - было 18 из 20 у zero-shot laya. Реранкер: 22 попарные победы из 36 - было 9 из 12. Голова заточена под вопрос важности письма, и универсальность обменялась на точность в домене. Бесплатный BERT - не один вездесущий солдат, а целый штат узких специалистов, каждый из которых надо ещё и обучить. Дешёвая модель не бесплатна - она стоит твоего вечера. Но вечер стоит дешевле подписки.
Пайплайн из нескольких специализаций
Описанный протокол повторяем для любой задачи: раз разметил - раз обучил. Естественное продолжение - не одна модель, а несколько, каждая на своём месте обработки потока. Пришло письмо: первая модель проверяет на инъекции, вторая сортирует на важное и шум, третья для важных оценивает срочность, спорное уходит человеку. Микросервисы, только вместо контейнеров - энкодеры по 300 мегапараметров.
Математика памяти для RTX 4060 с 8 гигабайтами:
`одна mmBERT (307.5M весов)
bf16 0.57 ГБ
int8 0.29 ГБ
int4 0.14 ГБ
10 моделей одновременно
bf16 5.7 ГБ - влезает впритык
int8 2.9 ГБ - свободно
на CPU 32 ГБ RAM - хоть двадцать`
Латентность каждой - 20-40 миллисекунд на суждение, поэтому цепочка из пяти моделей по конвейеру быстрее одного вызова локальной 8B. Прокачка квантования - отдельная минута работы: каждая модель жмётся до int8 почти без потери качества, и десятимодельный пайплайн живёт в трёх гигабайтах.
Два подводных камня. Первый - данные: N моделей означают N датасетов, и это основная работа, но конвейер разметки из этой части (правила доменов плюс ротатор бесплатных моделей плюс выборочная ручная проверка) одинаково годится для любой головы. Второй - эксплуатация: проще держать N независимых копий (упала одна - перекатываешь одну), чем общий энкодер с N головами, хотя второй вариант экономнее по памяти. Начинать с копий.
Jev при такой архитектуре меняет роль: не основа пайплайна, а генератор учителей для разметки и инструмент холодного старта нового звена.
Что это даёт
Итог для тех, кто хочет платить меньше. Платный API остаётся в двух местах: cold start на новом домене, где своих меток ещё нет, и лень собрать свои - тогда калиброванные вердикты из коробки за копейки. Но если поток текстов есть, а видеокарта не совсем игрушка - бесплатный BERT добивается до уровня, где вопрос 'зачем платить' уже не риторический. Платный сервис из обязательной зависимости становится инструментом первой примерки.
И сноска для тех, кто дочитал: всё это - про любовь к инженерным экспериментам. Полный конвейер - выгрузка писем, ротатор разметки, тренировка - выложен в репозиторий: отдайте этот текст своему агенту, и он повторит его на вашем ящике за вечер.
Ссылки
|
|
|