Каждый раз после созвона происходит одно и то же самое: кто-то открывает чат и пишет «итак, что мы решили?». Дальше — пятнадцать минут на то, чтобы восстановить то, что только что обсуждали час.
Я ML-инженер, и эта боль мне была знакома лично. Когда появилась идея автоматизировать протоколирование встреч, казалось, что задача решаемая: берешь Whisper для распознавания речи, хорошую LLM для суммаризации — и готово.
Реальность оказалась другой. Готовых русскоязычных решений нужного качества не было. Mistral 7B — одна из лучших открытых моделей на тот момент — на русском ошибался в склонениях, плохо следовал русскоязычным промптам и терял смысл в длинных диалогах. Стало понятно: придётся дообучать самим.
Евгений Гутин
Основатель стартапа AiGenda, ML-инженер и выпускник AI Talent Hub
Меня зовут Евгений Гутин, дальше расскажу как мы с командой «AiGenda» строили архитектуру, почему первый подход с LoRA не сработал и что в итоге дало BertScore 0.93 на суммаризации диалогов.
Что внутри задачи
Превратить видеовстречу с несколькими участниками в понятный протокол — это не одна задача, а четыре последовательных:
-
Распознавание речи. В качестве базовой модели выбрали Whisper.
-
Идентификация говорящего. Модель pyannote/speaker-segmentation и ResNet34 на VoxCeleb — для кластеризации отрезков речи и выделения финальных отрезков активности спикеров.
-
Разделение диалога на темы. Техника детекции смены темы на основе расстояния между эмбедингами предложений.
-
Обработка текста. Мультиязычная модель до 7 млрд параметров с контекстным окном не менее 8 тысяч токенов. Остановились на Mistral 7B: оптимальный баланс качества, скорости и потребляемых ресурсов.
Архитектура
При проектировании сформулировали четыре базовых требования:
-
Лёгкое масштабирование сервиса.
-
Безопасность для конечного пользователя.
-
Удобство быстрого изменения и доработки функционала.
-
Отказоустойчивость.
Основная цепочка: Backend получает запросы от интерфейса и направляет их в ML, который обрабатывает и возвращает ответ через Backend на клиентскую часть. Прямого взаимодействия пользователя с моделью нет — это важно при непредсказуемом поведении нейросети.
Для оптимизации обмена данными между Backend и ML добавили очередь на RabbitMQ. Это позволяет обрабатывать запросы пакетно и снижать время ожидания при высокой нагрузке.
Для управления множеством ML-моделей добавили сервис-оркестратор — ML Controller. Он маршрутизирует запросы между моделями, ускоряет обработку и даёт гибкость при замене или добавлении новых моделей.

ML Controller взаимодействует с векторной базой данных, где хранятся эмбединги спикеров и текста. Основная база с пользовательскими данными изолирована — доступ только через Backend. Туда же вынесено управление S3-хранилищем.
В итоговую архитектуру включили дополнительный сервис записи видеоконференций через Meeting Controller: он динамически выделяет ресурсы через OpenStack API, минимизируя затраты. Логирование — в Grafana, отслеживание ошибок — в Sentry.
Подходы к проектированию ML-систем брал из курсов магистратуры — и применил напрямую.
Почему LoRA не сработала
Несмотря на хорошие результаты Mistral 7B на большинстве бенчмарков, модель в основном обучена на англоязычных данных. На практике это давало два класса проблем:
-
Ошибки в склонении прилагательных, существительных и имён собственных.
-
Низкое качество следования русскоязычным промптам.
Первая гипотеза была очевидной — LoRA-тюнинг для быстрой адаптации весов. Результат разочаровал: подход сгладил неточности, но не решил проблему. Модель стала лучше выражаться на русском, но логика предложений оставалась слабой. Это ожидаемо: LoRA не может полностью интегрировать языковую информацию, которой изначально не было в обучающей выборке. Вывод был неприятным, но очевидным: нужно дообучать все веса.
Как мы дообучили модель с нуля
Для полноценного дообучения нужен большой корпус. Мы собрали русскоязычный датасет из 5 млрд 350 млн токенов — тексты, диалоги и инструкции из открытых источников, часть — машинный перевод с других языков.
Обучение запустили через библиотеку transformers от Hugging Face с пакетом оптимизаций для экономии ресурсов:
-
Mixed Precision и bfloat16.
-
padding-free семплер — ускорение обучения до 10 раз.
-
Flash Attention 2 — ускорение и уменьшение объёма видеопамяти.
-
ZeRO-2 оптимизация с выгрузкой на CPU и continuous gradients для минимизации потребления ресурсов.
Обучение проводилось на двух Nvidia RTX A6000 (48 GB каждая). Метрики и артефакты логировали в wandb.ai на бесплатном плане с хранением до 100 GB.
Благодаря связке оптимизаций уложились в две видеокарты — без этого задача была бы значительно дороже.


Как оценивали качество языковой модели
После обучения использовали открытый бенчмарк MERA — набор данных для оценки фундаментальных моделей на русском языке. Для отправки результатов на закрытый лидерборд использовали одноимённую библиотеку.
Конфигурация тестового сервера:
-
Операционная система: Ubuntu 20.04.6 LTS
-
Графический процессор: Nvidia RTX 4090 (24 GB VRAM)
-
Центральный процессор: 16 ядер Intel Ice Lake
-
Оперативная память: 32 GB RAM
-
Накопитель: 64 GB SSD

Сравнение AIGenda LLM на MERA
Наша модель существенно превзошла базовый Mistral 7B и показала лучшие результаты на нескольких наборах данных по сравнению с GigaChat и MTS Chat:
-
LCS
-
PARus
-
SimpleAR
-
RuHumanEval
-
ruHH
Помимо бенчмарков отметили два практических результата: значительное снижение ошибок при диалоговом общении и хорошая работа с извлечением информации в контексте 8192 токенов при низком уровне галлюцинаций.
Финальное дообучение под задачу
Общее улучшение русского языка — только половина работы. Для создания протоколов встреч, выделения заметок и задач по итогам обсуждений потребовалось финальное дообучение под конкретную задачу — уже с LoRA, но на правильных данных.
Собрали мультиязычный набор диалоговых данных с инструкциями. Аннотации получали двумя способами: ручная разметка и API GPT-4. Итоговый датасет покрывает три задачи:
-
Суммаризация.
-
Выделение action items (задач).
-
Выделение топиков.

Несмотря на эксперименты с разными параметрами обучения и конфигурациями LoRA, значительной разницы в результатах между вариантами мы не обнаружили.

Итоговые результаты
BertScore f1 для суммаризации диалоговых данных — 0.93. Модель успешно выделяет все три типа ответа (краткое содержание, задачи, топики) и возвращает их в фиксированном формате.

Дообучение модели распознавания речи
Отдельно дообучали Whisper — базовая модель не оптимизирована под домен аудио встреч с низким качеством звука и посторонними шумами. Для этого собрали датасет из трёх типов источников:
-
Лекции
-
Конференции
-
Интервью
Больше 50% — русскоязычный контент. Разметка через псевдолейблинг и полу-ручную правку транскрипций.
Для ускорения поиска ошибок использовали алгоритм сопоставления со словарём: если модель предсказывает «ЭТМО» вместо «ИТМО», этот фрагмент автоматически подсвечивается для ручной проверки. Это существенно сократило время на разметку.
После сбора данных провели чистку и отбор наиболее релевантной информации в необходимый для обучения формат.
Оценка качества модели распознавания речи
Результаты дообучения показали значительное снижение ошибок при распознавании русской речи.

Что дальше
Модель — это не финальная точка, а постоянный процесс. В планах два направления: расширение контекстного окна до 128 тысяч токенов и эксперименты с более свежими базовыми архитектурами. Параллельно продолжаем собирать обратную связь от пользователей — качество модели напрямую зависит от того, насколько хорошо мы понимаем реальные сценарии использования. Если есть вопросы по архитектуре или обучению — отвечу в комментариях.
Напоследок про обучение
Еще несколько лет назад я бы и не подумал, что могу создать технический стартап. Во время обучения в магистратуре AI Talent Hub я участвовал во множестве проектов, например, разрабатывал систему детекции мошенничества на кассах самообслуживания магазинов, искал утопающих людей по камерам у бассейна, но основным проектом стал стартап AiGenda. Я смог погрузиться и в хардовый LLM, и дисциплины по AI Project Management систематизировали мои знания по тому, как нужно выстраивать процессы в компании, взаимодействовать с людьми, делать из сырого кода реальный бизнес и при этом не разориться.
Если вы хотите прокачаться и технически, и продуктово, то обеими руками рекомендую свою магу: с нового учебного года там как раз появится отдельный новый трек с фокусировкой на подготовку специалистов по разработке решений с использование технологий больших языковых моделей.
В общем, находите новых друзей, слушайте умных экспертов и реализуйте полученные знания на практике. Если будут вопросы, задавайте — с удовольствием отвечу!
Автор: ai-talent


