Яндекс Sona: одна модель вместо каскада рекомендаций и +6,3% времени прослушивания

Обложка: Яндекс Sona, одна модель вместо каскада рекомендаций, +6,30% времени прослушивания

1 октября 2026 Яндекс рассказал в своём блоге на Хабре о Sona, генеративной рекомендательной модели для Яндекс Музыки. В A/B-тесте на умных колонках с Алисой она одна заменила всю цепочку подбора треков: больше 15 алгоритмов поиска кандидатов, модель предранжирования и финальное ранжирование. Время прослушивания выросло на 6,30%, лайков стало больше на 11,42%. Подробности в техническом отчёте Sona на arXiv.

Цифра про время прослушивания из дайджестов совпадает с источниками, но главная метрика теста другая: число активных пользователей, +4,53%. И это пока эксперимент. Тест шёл семь дней на одном сценарии, на весь трафик Sona не выкатили. Сами авторы пишут, что сначала хотят проверить, держится ли эффект несколько месяцев.

Что заменила Sona: 15+ генераторов кандидатов, предранжирование и ранжирование

В действующей системе на Яндекс Станциях трек проходит несколько этапов. Сначала больше 15 алгоритмов достают из каталога подходящих кандидатов, потом модель предранжирования сокращает список, а финальная модель расставляет порядок. На входе сотни признаков, среди них сигналы трансформерной модели Argus.

Проблема такой схемы в том, что этапы учатся отдельно. Улучшили поиск кандидатов, а следующая модель всё равно отсеяла новые треки. Любую правку приходится проверять на всей цепочке. Sona делает и поиск, и ранжирование в одной модели. Ручных признаков в ней нет: только поля из логов событий и выученные представления треков.

Похожую задачу решают и другие. В посте упомянут OneRec от Kuaishou, который используется с 2025 года, но в его опубликованной архитектуре кандидатов предлагает одна модель, а лучшие выбирает другая.

A/B-тест на колонках: +4,53% активных, +6,30% времени, +11,42% лайков

Сценарий выбран показательный: на колонке человек включает музыку, не называя исполнителя, жанр или настроение, и всё решает рекомендательная система. В отчёте это поток My Vibe, один из крупнейших в Музыке по времени прослушивания. Пользователей случайно разделили на две группы по 15%, тест длился 7 дней. В контрольной группе работала текущая система, в тестовой Sona. Жёсткие бизнес-правила на выдачу сохранили.

Результат финального эксперимента против контроля:

  • активные пользователи, основная метрика: +4,53%;
  • общее время прослушивания: +6,30%;
  • лайки: +11,42%;
  • команды «Повтор»: +17,99%;
  • глубоко вовлечённые пользователи: +7,37%.

Все различия в отчёте значимы при p < 0,01. Прирост активных пользователей в 2,35 раза больше, чем дал Argus (+1,93%), сильнейшая модель на этом сценарии до Sona. На Хабре ту же цифру округлили до «в 2,4 раза». Эффект считается поверх улучшений от прошлых внедрений.

Последние две метрики, «Повтор» и глубоко вовлечённые пользователи, есть только в отчёте на arXiv. В посте на Хабре названы три: активные, время и лайки.

Как устроена: Semantic ID из трёх кодов и общий кодировщик истории

Каждому треку заранее присваивают Semantic ID: кортеж из трёх кодов, каждый из словаря на 32 000 значений. Код строится по первым 90 секундам аудио и метаданным (название, исполнители, теги), их прогоняют через замороженную Qwen2.5-Omni. Потом представление дообучают на парах треков со схожим поведением слушателей: тех, что попадают в одну выдачу или слушаются вместе. В итоге похожие по звучанию или по поведению слушателей треки получают общее начало кода.

Sona один раз прогоняет историю пользователя через кодировщик: прослушивания, пропуски, лайки, дизлайки. Дальше декодер по этому состоянию генерирует коды треков, уровень за уровнем, лучом шириной 1024. Коды раскрываются в треки каталога, одному коду может соответствовать несколько. Модуль ранжирования в той же модели оценивает кандидатов против той же истории и задаёт порядок.

История в финальной версии до 8192 событий. Глубоко обрабатываются только последние 2048, более старые проходят облегчённо. По отчёту это сохраняет большую часть качества полного трансформера примерно за половину стоимости инференса.

Учитель на годе логов и новая версия каждые 10 минут

Ранжированию Sona учится не напрямую на лайках, а у отдельной большой модели-учителя. Учителя обучили на годе действий слушателей, в нём около 0,6 млрд параметров, обновляют его раз в сутки. Sona подгоняет свои оценки под оценки учителя, в том числе на треках, которые сама же и нашла. В рабочем сервисе учителя нет, рекомендации выдаёт только Sona.

После запуска обучение не останавливается. Пока одна копия модели обслуживает запросы, другая учится на свежих событиях, и новая версия уходит в сервис каждые 10 минут. От действия слушателя до версии модели, которая его учла, проходит 45 минут по медиане и не больше 60 минут в 99% случаев. Больше всего времени съедает 15-минутное окно сборки сессии и сам 10-минутный цикл выкладки.

Чего пока нет: полного трафика, других сценариев и полного покрытия каталога

  • на весь трафик Sona не выкатили, нужен эксперимент на несколько месяцев;
  • проверена на одном сценарии, колонки и поток без запроса; другие сценарии Музыки впереди;
  • в отчёте отмечено, что покрытие каталога у Sona ниже, чем у текущей системы, причину ещё изучают; на Хабре этого нет;
  • обучение с подкреплением пока не использовали, весь рецепт без RL;
  • проверить подход хотят ещё в Яндекс Рекламе, это пока план.

Итог такой. Яндекс показал, что одна модель может заменить зрелый многоэтапный каскад и при этом поднять метрики на живом трафике, а не только офлайн. Цифра +6,3% времени прослушивания подтверждается, точнее +6,30%, но основной метрикой был прирост активных пользователей на 4,53%. Широко внедрять Sona будут, только если результат подтвердится в долгом тесте. Пока это сильный результат одного семидневного эксперимента.

Источники и ссылки


Комментарии загружаются…