В конце прошлого года аудиомодальность GigaChat впервые была публично продемонстрирована на нашей конференции. Теперь аудиомодальность GigaChat доступна всем — в веб-интерфейсе giga.chat и Telegram-боте!
Сегодня мы расскажем, почему ушли от классической схемы ASR (Automatic Speech Recognition) + LLM и построили end-to-end-модель, которая понимает речь; как устроена наша новая модель; на каких данных мы её обучали; и что из этого получилось.
Ранее речевые сценарии реализовывались связкой SaluteSpeech ASR и GigaChat Max. Несмотря на фундаментальные модели под капотом SaluteSpeech и регулярную адаптацию сервиса к запросам различной тематики, такой подход имел ряд ограничений:
Потеря информации: ошибки ASR неизбежно влияли на точность дальнейшей обработки текста. Например, запрос «чем Tensor Parallelism отличается от Sequence Parallelism» не распознавался корректно и приводил к неудовлетворительному ответу модели.
Разрыв модальностей: GigaChat не получал дополнительной информации об эмоциях, интонациях и окружающем контексте, содержащейся в голосе.
Ограничение на длинные аудио: при распознавании длинных аудиозаписей речь нарезается на небольшие фрагменты, что приводит к потере аудиоконтекста.
Ограниченные мультиязычные возможности: использование модели распознавания речи снижает возможность работы с языками, которые знает GigaChat, но не поддерживает SaluteSpeech ASR.
Эти проблемы подтолкнули нас к решению обучить модель, воспринимающую речь напрямую.
Рис. 1. Архитектура аудиомодели
Наша аудиомодель построена на основе следующей архитектуры (Рис. 1):
Подробно про Pretrain, SFT и DPO базовой модели мы рассказывали в предыдущей статье «GigaChat 2.0 в API», а здесь сосредоточимся на обучении акустических модулей и совместном обучении GigaChat Audio.
Мы провели обучение в несколько этапов:
Теперь, когда мы разобрались с архитектурой и стадиями обучения, давайте посмотрим, на каких данных обучали и как мы их подготавливали. Основную ценность представляют данные для последнего этапа обучения — Audio Supervised Fine-tuning. Здесь мы подробнее расскажем про их подготовку.
Мы подготовили корпус данных объёмом порядка 10 тысяч часов на русском, английском и других языках. При его формировании мы стремились охватить максимально широкий спектр речевых и аудиозадач: от классического распознавания речи до сложных мультимодальных сценариев.
В состав корпуса вошли:
Поэтому мы оставили на этапе Supervised Fine-Tuning только небольшое количество качественных текстов:
После этих модификаций смещение в сторону задачи распознавания снизилось в десятки раз, а распознанный текст стал гораздо приятнее для восприятия пользователя:
Кроме того, в процессе обучения мы использовали внутренние размеченные датасеты для задач определения пола и возраста, распознавания эмоций, определения шёпота и других production-классификаторов.
Отдельно отметим использование синтетических данных: мы адаптировали текстовые датасеты, заменяя текстовые реплики на голосовые с помощью технологий синтеза речи SaluteSpeech. Это позволило существенно расширить количество обучающих примеров для специфических сценариев без лишних расходов на озвучивание текстов людьми и разметку данных.
Одна из важных возможностей для Audio conditioned LLM — поддержка длинного аудиоконтекста: суммаризация длинных записей, ответы на вопросы. Изначально большинство датасетов в Audio SFT содержали небольшие фрагменты речи (до нескольких минут). Такое распределение в длительности приводило к плохому качеству суммаризации на часовых аудиозаписях, несмотря на текстовые возможности базовой модели на длинных контекстах.
У этой проблемы может быть несколько причин:
Вторая причина не проявляется в нашем случае, поскольку мы используем Chunk-wise Attention в Conformer Encoder, что ограничивает его receptive field и позволяет обобщаться на длинные контексты. Мы также дополнительно выяснили, что при нарезке входного аудиосигнала на небольшие фрагменты (что позволяет энкодеру работать в том распределении длительностей записей, которое встречалось в обучении) качество суммаризации на длительных аудиозаписях оставалось неудовлетворительным.
Поэтому мы пошли по пути Audio SFT на длинных аудиозаписях. Для этого потребовалось поработать над архитектурой энкодера и режимом обучения.
Дело в том, что в классической архитектуре Conformer первым модулем используется Convolution Subsampling, который сжимает длину последовательности в несколько раз с помощью двумерных свёрток. При обучении на записях длительностью в несколько часов этот модуль становился узким местом: размер промежуточных активаций на первых слоях занимал всю GPU-память, что не позволяло производить обучение. Подобно архитектуре FastConformer мы пошли по пути облегчения Convolution Subsampling, заменив свёрточные операции с двумерных на одномерные. Это позволило сократить расход памяти примерно в 10 раз и запустить обучение на записях длительностью несколько часов.
Для обучения GigaChat 2 Max Audio на последовательностях небольшой длительности мы использовали Tensor Parallelism (TP), однако его увеличение не позволяло масштабироваться на длинные контексты. Здесь мы дополнительно добавили Sequence Parallelism (SP). Production-модель обучалась в режиме tp=2, sp=4. Таким образом, параметры слоя Self-Attention распределялись по двум видеокартам, а длина последовательности разбивалась на 4 блока. Такое разбиение позволило реализовать вычисления слоя внутри одного узла: синхронизация выполняется с помощью NVLink, нет накладных расходов на операции all-gather и reduce-scatter между разными вычислительными узлами (как в случае tp × sp > 8).
Поскольку в эксплуатации уже находился сценарий голосового взаимодействия с помощью SaluteSpeech ASR, первым делом мы провели Side-by-Side (SBS) сравнение end-to-end модели GigaChat Audio и модульной системы SaluteSpeech ASR + GigaChat.
Для этого мы собрали тестовый датасет из multi-turn диалогов: пользователи могли свободно общаться с моделью на интересные им темы и сценарии. В результате мы получили префиксы диалогов, которые можем обрабатывать разными моделями и сравнивать последние реплики.
Всего в датасет вошло 1200 диалогов. Каждый диалог оценивается тремя AI-тренерами. Помимо сравнения реплик двух моделей AI-тренер пишет комментарий, в котором обосновывает своё решение. Пример интерфейса с результатом оценки приведен на рисунке 2.
Рис. 2. Интерфейс, с помощью которого проводилось side-by-side-сравнение.
На рисунке 3 представлено SBS-сравнение GigaChat Audio и SaluteSpeech ASR + GigaChat. Видно, что с большим отрывом выигрывает наша новая end-to-end-модель. Мы тщательно проанализировали результаты разметки и выделили причины такого результата:
Рис. 3. Side-by-side сравнение GigaChat Audio (0.68) и SaluteSpeech ASR + GigaChat (0.32).
Помимо SBS-сравнения мы разработали DLAP-оценку (Dialog LLM Answer Property Evaluation) по следующим срезам:
Такой подход позволяет сравнивать модели по отдельным показателям, а также находить точки роста. На рисунке 4 представлен интерфейс разметки для одного из заданий.
Рис. 4. Пример DLAP-оценки диалога одного из AI-тренеров
Мы проводили DLAP-сравнение на том же наборе диалогов, что и SBS. Результаты показаны на рисунке 5. Для сравнения мы добавили open-source-модель Qwen2-Audio-Instruct и проприетарные модели Gemini Flash, Gemini Pro, GPT-4o. Из проведённого сравнения видно, что GigaChat 2 Max Audio превосходит или достигает метрик Gemini Flash и GPT-4o.
Рис. 5. Сравнение диалоговых свойств (DLAP) среди моделей
В предыдущем разделе мы говорили об оценке аудиовозможностей, но перед нами стояла ещё одна важная цель: сохранить фундаментальные базовые свойства модели. Метрики на текстовых запросах не должны значительно деградировать при переходе с GigaChat на GigaChat Audio. Для этого мы проводим сравнение на десятках мировых и внутренних бенчмарков (часть из них показаны в предыдущей статье «GigaChat 2.0 в API»), а здесь для простоты указываем одни из самых известных в сообществе бенчмарков (таблица 1).
Таблица 1:
Benchmark | GigaChat 2 Max | GigaChat 2 Max Audio |
---|---|---|
IFEval En (0-Shot) | 89,63 | 86,88 (-3%) |
IFEval Ru (0-Shot) | 83,03 | 80,52 (-3%) |
MMLU En (5-shot) | 86,33 | 85,71 (-0.7%) |
MMLU Ru (5-shot) | 79,94 | 80,24 (+0.3%) |
Помимо автоматических метрик мы также проанализировали изменение метрик LLM-as-a-judge (Таблица 2). Изменения от добавления аудиовозможностей составили 3–5 %.
Таблица 2:
Benchmark | Model | Score | 95% CI |
---|---|---|---|
Arena-Hard-Ru | GigaChat 2 Max | 83,5 | (-1,3; 1,5) |
Arena-Hard-Ru | GigaChat 2 Max Audio | 79,5 | (-1,0; 0,9) |
RuLLMArena | GigaChat 2 Max | 82,5 | (-2,4; 2,1) |
RuLLMArena | GigaChat 2 Max Audio | 79,9 | (-1,8; 1,4) |
Как видно из приведённых выше автоматических и judge-метрик, LoRA-адаптеры, добавленные на этапе Audio SFT, не приводят к существенному искажению весов модели и деградации её базовых возможностей.
В предыдущем разделе мы обсудили наш подход к оценке качества и показали, что аудиомодальность GigaChat значительно превосходит модульный подход с ASR. Но гораздо показательнее будет взглянуть на конкретные возможности модели.
Ранее мы рассказывали о возможностях GigaChat Vision, а здесь описали подход, который позволил добавить нативное понимание аудио в GigaChat. Каждая из модальностей отлично справляется со своим типом запросов, но у изолированных модальностей есть существенный недостаток: отсутствие мультимодального контекста. Так, пользователь не может отправить изображение и задать к нему уточняющие вопросы голосом — для этого нужна единая модель, которая принимает на вход как изображения, так и аудиофайлы.
Чтобы ещё сильнее приблизить опыт общения с GigaChat к естественному взаимодействию, мы обучили GigaChat Audio + Vision. Как мы видели из анализа текстовых метрик, Audio-адаптеры незначительно влияют на свойства базовой модели. Более того, в сценарии мультимодального общения мы можем активировать Audio-адаптеры только на тех диалогах, которые содержат аудиозаписи. Таким образом, качество работы на диалогах, которые содержат только текст и изображения, останется неизменным.
На рисунке 6 показана схема дообучения GigaChat Vision для добавления аудиовозможностей: в ходе Audio SFT все также обучались только акустические модули и LoRA-адаптеры.
Рис. 6 Дообучение GigaChat Vision для добавления аудиовозможностей.
Мы обучали модальности последовательно, то есть в процессе обучения модель «видела» в контексте либо токены изображений, либо токены аудиозаписей. Несмотря на это, на инференсе заработал мультимодальный контекст:
Для оценки аудиовозможностей мы провели SBS-сравнение (рисунок 7). Результат 48 : 52 говорит о том, что понимание аудио не ухудшается при обучении с GigaChat Vision декодером.
Рис. 7. Side-by-side сравнение GigaChat Audio+Vision (0.52) и GigaChat Audio (0.48).
Дополнительно мы оценили изменение Vision-метрик (таблица 3) и текстовых возможностей (таблица 4).
Таблица 3:
Benchmark | GigaChat 2 Max Vision | GigaChat 2 Max Vision + Audio |
---|---|---|
MMMU-val | 58,778 | 59,33 |
MMT Bench | 63,991 | 61,94 |
MTVQA | 23,842 | 23,21 |
MTVQA Ru | 17,136 | 15,21 |
Таблица 4:
Benchmark | GigaChat 2 Max | GigaChat 2 Max Vision | GigaChat 2 Max Vision + Audio |
---|---|---|---|
IFEval En (0-Shot) | 89.63 | 85.97 | 85.80 |
IFEval Ru (0-Shot) | 83.03 | 79.97 | 78.89 |
MMLU En (5-shot) | 86.33 | 86.33 | 86.30 |
MMLU Ru (5-shot) | 79.94 | 80.43 | 81.05 |
Таким образом, нам удалось создать мультимодальную модель практически без деградации Audio- и Vision-модальностей.
За год нам удалось перейти от классической схемы ASR + LLM к нативной аудиомодальности в GigaChat. End-to-end-подход победил со счётом 68:32 в SBS-оценке и добавил принципиально новые возможности. На аудиозапросах наших пользователей модель вышла на уровень GPT-4o по DLAP при сохранении текстовых метрик.
GigaChat Audio стал возможен благодаря усилиям исследователей, инженеров, аналитиков и команды продукта. Отдельное спасибо командам GigaAM, GigaChat, SaluteSpeech и платформы за вклад в архитектуру, обучение, инфраструктуру и тестирование. Спасибо всем, кто помогал создать модель, которая не только слушает, но и понимает.
Мы продолжаем совершенствовать модель, планируя:
Следите за нашими новостями в канале GigaDev! Внедряйте технологию в повседневные дела с помощью giga.chat и телеграм-бота!