- BrainTools - https://www.braintools.ru -

LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало

Каждый раз после созвона происходит одно и то же самое: кто-то открывает чат и пишет «итак, что мы решили?». Дальше — пятнадцать минут на то, чтобы восстановить то, что только что обсуждали час.

Я ML-инженер, и эта боль [1] мне была знакома лично. Когда появилась идея автоматизировать протоколирование встреч, казалось, что задача решаемая: берешь Whisper для распознавания речи, хорошую LLM для суммаризации — и готово.

Реальность оказалась другой. Готовых русскоязычных решений нужного качества не было. Mistral 7B — одна из лучших открытых моделей на тот момент — на русском ошибался в склонениях, плохо следовал русскоязычным промптам и терял смысл в длинных диалогах. Стало понятно: придётся дообучать самим.

LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало - 1

Евгений Гутин

Основатель стартапа AiGenda, ML-инженер и выпускник AI Talent Hub

Меня зовут Евгений Гутин, дальше расскажу как мы с командой «AiGenda» строили архитектуру, почему первый подход с LoRA не сработал и что в итоге дало BertScore 0.93 на суммаризации диалогов.

Что внутри задачи

Превратить видеовстречу с несколькими участниками в понятный протокол — это не одна задача, а четыре последовательных:

  1. Распознавание речи. В качестве базовой модели выбрали Whisper.

  2. Идентификация говорящего. Модель pyannote/speaker-segmentation и ResNet34 на VoxCeleb — для кластеризации отрезков речи и выделения финальных отрезков активности спикеров.

  3. Разделение диалога на темы. Техника детекции смены темы на основе расстояния между эмбедингами предложений.

  4. Обработка текста. Мультиязычная модель до 7 млрд параметров с контекстным окном не менее 8 тысяч токенов. Остановились на Mistral 7B: оптимальный баланс качества, скорости и потребляемых ресурсов.

Архитектура

При проектировании сформулировали четыре базовых требования:

  • Лёгкое масштабирование сервиса.

  • Безопасность для конечного пользователя.

  • Удобство быстрого изменения и доработки функционала.

  • Отказоустойчивость.

Основная цепочка: Backend получает запросы от интерфейса и направляет их в ML, который обрабатывает и возвращает ответ через Backend на клиентскую часть. Прямого взаимодействия пользователя с моделью нет — это важно при непредсказуемом поведении [2] нейросети.

Для оптимизации обмена данными между Backend и ML добавили очередь на RabbitMQ. Это позволяет обрабатывать запросы пакетно и снижать время ожидания при высокой нагрузке.

Для управления множеством ML-моделей добавили сервис-оркестратор — ML Controller. Он маршрутизирует запросы между моделями, ускоряет обработку и даёт гибкость при замене или добавлении новых моделей.

LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало - 2

ML Controller взаимодействует с векторной базой данных, где хранятся эмбединги спикеров и текста. Основная база с пользовательскими данными изолирована — доступ только через Backend. Туда же вынесено управление S3-хранилищем.

В итоговую архитектуру включили дополнительный сервис записи видеоконференций через Meeting Controller: он динамически выделяет ресурсы через OpenStack API, минимизируя затраты. Логирование — в Grafana, отслеживание ошибок — в Sentry.

Подходы к проектированию ML-систем брал из курсов магистратуры — и применил напрямую.

Архитектура решения AIGenda

Архитектура решения AIGenda

Почему LoRA не сработала

Несмотря на хорошие результаты Mistral 7B на большинстве бенчмарков, модель в основном обучена на англоязычных данных. На практике это давало два класса проблем:

  • Ошибки [3] в склонении прилагательных, существительных и имён собственных.

  • Низкое качество следования русскоязычным промптам.

Первая гипотеза была очевидной — LoRA-тюнинг для быстрой адаптации весов. Результат разочаровал: подход сгладил неточности, но не решил проблему. Модель стала лучше выражаться на русском, но логика [4] предложений оставалась слабой. Это ожидаемо: LoRA не может полностью интегрировать языковую информацию, которой изначально не было в обучающей выборке. Вывод был неприятным, но очевидным: нужно дообучать все веса.

Как мы дообучили модель с нуля

Для полноценного дообучения нужен большой корпус. Мы собрали русскоязычный датасет из 5 млрд 350 млн токенов — тексты, диалоги и инструкции из открытых источников, часть — машинный перевод с других языков.

Обучение [5] запустили через библиотеку 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.

Благодаря связке оптимизаций уложились в две видеокарты — без этого задача была бы значительно дороже.

LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало - 4
LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало - 5

Как оценивали качество языковой модели

После обучения использовали открытый бенчмарк MERA — набор данных для оценки фундаментальных моделей на русском языке. Для отправки результатов на закрытый лидерборд использовали одноимённую библиотеку.

Конфигурация тестового сервера:

  • Операционная система: Ubuntu 20.04.6 LTS

  • Графический процессор: Nvidia RTX 4090 (24 GB VRAM)

  • Центральный процессор: 16 ядер Intel Ice Lake

  • Оперативная память [6]: 32 GB RAM

  • Накопитель: 64 GB SSD

LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало - 6

Сравнение AIGenda LLM на MERA

Наша модель существенно превзошла базовый Mistral 7B и показала лучшие результаты на нескольких наборах данных по сравнению с GigaChat и MTS Chat:

  • LCS

  • PARus

  • SimpleAR

  • RuHumanEval

  • ruHH

Помимо бенчмарков отметили два практических результата: значительное снижение ошибок при диалоговом общении и хорошая работа с извлечением информации в контексте 8192 токенов при низком уровне галлюцинаций.

Финальное дообучение под задачу

Общее улучшение русского языка — только половина работы. Для создания протоколов встреч, выделения заметок и задач по итогам обсуждений потребовалось финальное дообучение под конкретную задачу — уже с LoRA, но на правильных данных.

Собрали мультиязычный набор диалоговых данных с инструкциями. Аннотации получали двумя способами: ручная разметка и API GPT-4. Итоговый датасет покрывает три задачи:

  • Суммаризация.

  • Выделение action items (задач).

  • Выделение топиков.

LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало - 7

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

LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало - 8

Итоговые результаты

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

LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало - 9

Дообучение модели распознавания речи

Отдельно дообучали Whisper — базовая модель не оптимизирована под домен аудио встреч с низким качеством звука и посторонними шумами. Для этого собрали датасет из трёх типов источников:

  1. Лекции

  2. Конференции

  3. Интервью

Больше 50% — русскоязычный контент. Разметка через псевдолейблинг и полу-ручную правку транскрипций.

Для ускорения поиска ошибок использовали алгоритм сопоставления со словарём: если модель предсказывает «ЭТМО» вместо «ИТМО», этот фрагмент автоматически подсвечивается для ручной проверки. Это существенно сократило время на разметку.

После сбора данных провели чистку и отбор наиболее релевантной информации в необходимый для обучения формат.

Оценка качества модели распознавания речи

Результаты дообучения показали значительное снижение ошибок при распознавании русской речи.

LoRA не помогла: как мы дообучали Mistral 7B на русском и что в итоге сработало - 10

Что дальше

Модель — это не финальная точка, а постоянный процесс. В планах два направления: расширение контекстного окна до 128 тысяч токенов и эксперименты с более свежими базовыми архитектурами. Параллельно продолжаем собирать обратную связь от пользователей — качество модели напрямую зависит от того, насколько хорошо мы понимаем реальные сценарии использования. Если есть вопросы по архитектуре или обучению — отвечу в комментариях.

Напоследок про обучение

Еще несколько лет назад я бы и не подумал, что могу создать технический стартап. Во время обучения в магистратуре AI Talent Hub я участвовал во множестве проектов, например, разрабатывал систему детекции мошенничества на кассах самообслуживания магазинов, искал утопающих людей по камерам у бассейна, но основным проектом стал стартап AiGenda. Я смог погрузиться и  в хардовый LLM, и дисциплины по AI Project Management систематизировали мои знания по тому, как нужно выстраивать процессы в компании, взаимодействовать с людьми, делать из сырого кода реальный бизнес и при этом не разориться.

Если вы хотите прокачаться и технически, и продуктово, то обеими руками рекомендую свою магу: с нового учебного года там как раз появится отдельный новый трек с фокусировкой на подготовку специалистов по разработке решений с использование технологий больших языковых моделей.

В общем, находите новых друзей, слушайте умных экспертов и реализуйте полученные знания на практике. Если будут вопросы, задавайте — с удовольствием отвечу!

Автор: ai-talent

Источник [7]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/28067

URLs in this post:

[1] боль: http://www.braintools.ru/article/9901

[2] поведении: http://www.braintools.ru/article/9372

[3] Ошибки: http://www.braintools.ru/article/4192

[4] логика: http://www.braintools.ru/article/7640

[5] Обучение: http://www.braintools.ru/article/5125

[6] память: http://www.braintools.ru/article/4140

[7] Источник: https://habr.com/ru/articles/1017634/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1017634

www.BrainTools.ru

Rambler's Top100