Sona от Yandex: одна генеративная модель вместо всей каскада рекомендаций

Большинство промышленных рекомендательных систем — это каскады: генераторы кандидатов передают результат пре-ранкеру, тот — тяжёлому ранкеру на сотнях сконструированных вручную признаков. Yandex описала в техническом отчёте Sona иную схему: одна генеративная модель объединяет генерацию кандидатов и ранжирование, заменяя несколько стадий рекомендательного конвейера. Модель проверили в семидневном живом эксперименте на умных колонках: в онлайн A/B-тесте она заменила более 15 генераторов кандидатов, этап пре-ранжирования и этап ранжирования одним обслуживаемым трансформером.

Зачем понадобилась замена каскада

Каскад дробит одно решение между отдельно обученными моделями. Каждая стадия оптимизирует собственную цель, а ранкер видит только то, что пропустили предыдущие ступени. Прежний стек Yandex на поверхности Yandex Music использовал сотни признаков, включая сигналы Argus — более раннего рекомендательного трансформера компании.

Sona строит генерацию кандидатов и ранжирование вокруг одного общего представления пользователя. Энкодер один раз за запрос читает историю слушателя, декодер порождает кандидатов, а модуль ранжирования оценивает их по тем же состояниям энкодера. Ни один компонент не использует признаки, сконструированные вручную: на вход идут только логируемые поля событий (идентификатор трека, идентификатор исполнителя, длительность, лайки, время прослушивания, флаги поверхности) и выученные Semantic ID.

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

Как устроена архитектура Sona

Семантический токенизатор

Каждый трек превращается в кортеж из трёх дискретных кодов — по формуле Semantic ID из работы Rajput и соавторов. Замороженная мультимодальная LLM читает мел-спектрограмму первых 90 секунд вместе с названием, исполнителями и тегами и работает в режиме только префилла. Затем 4-слойный уточняющий трансформер выравнивает эти признаки с поведением слушателей, используя InfoNCE на коллаборативных парах треков. Остаточный K-means квантует результат в три кодовые книги по 32 000 записей каждая. Это обошло аудиобейзлайн CLMR: Recall@1000 вырос с 0,8111 до 0,8524.

Энкодер со сжатием истории

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

Декодер и модуль ранжирования

2-слойный декодер выдаёт кортежи Semantic ID через ограниченный лучевой поиск шириной 1024. Каталожное префиксное дерево (trie) отсекает недопустимые префиксы. Каждый кортеж разворачивается во все треки, которые его разделяют. Затем модуль ранжирования из четырёх слоёв кросс-внимания оценивает эти треки по общей памяти энкодера.

Обучение: учитель, который не идёт в продакшен

Модуль ранжирования учится у замороженного учителя — Teacher Ranker. Это трансформер на 0,6 млрд параметров, тоже без сконструированных вручную признаков. Его обучают на годе событий вовлечённости в два этапа: сначала предобучение на предсказание следующего элемента, затем тонкая настройка многоголового ранжирования. Отказ от предобучения снизил взвешенную точность по парам с 0,6215 до 0,6153.

Свой метод дистилляции команда называет Rollout Distillation. Во время обучения текущий декодер порождает кандидатов лучевым поиском, учитель оценивает их вместе с залогированными показами, а модуль ранжирования регрессирует на эти оценки по средней абсолютной ошибке. Совместная функция потерь — L = L_NTP + L_rollout + L_impression, обе части обновляют общий энкодер. В момент обслуживания учитель убирается.

Обучение идёт онлайн. События собираются в сессии в 15-минутном окне, попадают на GPU-тренер, и новые веса доходят до обслуживания каждые 10 минут. Сквозная задержка составляет 45 минут по медиане и 60 минут на p99. Обслуживание работает на NVIDIA Triton Inference Server с CUDA graphs и достигает 41% утилизации модельных FLOPs.

Результаты онлайн A/B-теста

Финальный эксперимент шёл 7 дней на 15% случайно выбранных пользователей в каждой группе. Все изменения ниже статистически значимы и приведены относительно продакшен-контроля:

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

Эти приросты накладываются на улучшения, сохранённые от предыдущих развёртываний. По активным пользователям прирост Sona в 2,35 раза превышает +1,93%, которые ранее дал Argus на этой поверхности.

Sona, OneRec и HSTU: чем отличаются

Sona не первый end-to-end генеративный рекомендатель в продакшене. OneRec от Kuaishou уже обслуживает единую модель энкодер-декодер. HSTU Generative Recommenders от Meta в 2024 году переосмыслила рекомендации как последовательную трансдукцию по действиям пользователя. Sona сочетает полную замену каскада, отсутствие сконструированных вручную признаков и дистиллированный ранкер, подтверждённые онлайн.

Признак Sona (Yandex) OneRec (Kuaishou) HSTU GR (Meta)
Домен Музыкальный стриминг Короткие видео Крупная интернет-платформа, несколько поверхностей
Одна обслуживаемая модель вместо каскада Да, в A/B-тесте Да, около 25% общего QPS Нет, заявлена как новая архитектура рекомендательных моделей
Пользовательские входы Только логируемые поля событий, без ручных признаков Пути «многомасштабного конструирования признаков», включая uid, возраст, пол Последовательности действий пользователя (последовательная трансдукция)
Выход по элементам 3-уровневые Semantic ID, 3 × 32 000 3-уровневые Semantic ID через RQ-Kmeans Item ID
Сигнал ранжирования От замороженного Teacher Ranker на 0,6 млрд параметров Обучение с подкреплением с reward-моделью P-Score (ECPO) Модель ранжирования HSTU
Обучение с подкреплением Нет, полностью обучение с учителем Да (ECPO) Не сообщается
Заявленный масштаб История на 8192 события, учитель на 0,6 млрд параметров В 10 раз больше FLOPs, чем у прежней модели ранжирования 1,5 трлн параметров
Онлайн-прирост +4,53% активных пользователей, +6,30% времени прослушивания, +11,42% лайков +0,54% и +1,24% времени в приложении +12,4% в онлайн A/B-тестах
Открытый код или веса Нет В отчёте нет Да, на GitHub

Онлайн-приросты получены на разных платформах и метриках, поэтому напрямую их сравнивать нельзя.

Что это значит для практики

Главный вывод отчёта: каскад из десятков моделей можно заменить одним обслуживаемым трансформером, если дать ему общее представление пользователя и обойтись без ручных признаков. Учитель нужен только на этапе обучения — в обслуживании он не участвует, а веса обновляются каждые 10 минут при сквозной задержке 45–60 минут. Развёртывание опирается на NVIDIA Triton Inference Server с CUDA graphs.

Внешним командам повторить схему пока не на чем: ни кода, ни весов Yandex не опубликовала, и модель не выведена на весь трафик — эксперимент шёл на 15% пользователей в каждой группе.

Тем, кто строит рекомендательные системы, отчёт полезен как разбор компромиссов: неравномерная глубина внимания для длинной истории, ограниченный лучевой поиск с каталожным trie и дистилляция ранкера от замороженного учителя. Близкие по духу материалы по ИИ-инструментам и агентам — постоянные агенты OpenAI dots на GPT-6 Astra и открытый бенчмарк поиска NEEDLE, который обновляет запросы каждый час.

Частые вопросы

Что такое Yandex Sona?

Sona — генеративная модель, которая объединяет генерацию кандидатов и ранжирование в одной системе. Yandex проверила её в семидневном живом эксперименте на умных колонках, где для тестовой группы она заменила прежний многостадийный рекомендательный конвейер.

Кого касается эта новость?

Команд, которые строят или эксплуатируют рекомендательные системы и оценивают переход от каскадов к end-to-end моделям. Пользователи умных колонок Yandex могли попасть в тестовую группу, но публичных инструкций по включению или отключению Sona нет.

Сколько моделей заменила Sona?

Более 15 генераторов кандидатов, этап пре-ранжирования и этап ранжирования — всё это заменил один обслуживаемый трансформер.

Какие признаки использует модель?

Только логируемые поля событий — идентификатор трека, идентификатор исполнителя, длительность, лайки, время прослушивания, флаги поверхности — и выученные Semantic ID. Сконструированных вручную признаков нет ни в одном компоненте.

Какой прирост показал A/B-тест?

Основная метрика, активные пользователи, выросла на 4,53%. Время прослушивания прибавило 6,30%, лайки — 11,42%, команды «Repeat» — 17,99%, глубоко вовлечённые пользователи — 7,37%. Эксперимент шёл 7 дней на 15% случайно выбранных пользователей в каждой группе.

Что такое Rollout Distillation?

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

Можно ли развернуть Sona у себя?

Нет. Yandex не опубликовала ни код, ни веса, и модель не выведена на весь трафик — эксперимент охватывал 15% пользователей в каждой группе.

Чем Sona отличается от OneRec?

OneRec использует сконструированные пути пользовательских признаков и обучение с подкреплением с reward-моделью. Sona обходится только логируемыми полями событий и дистиллирует ранжирование от замороженного учителя, без обучения с подкреплением.

На каком оборудовании работает обслуживание?

Обслуживание идёт на NVIDIA Triton Inference Server с CUDA graphs и достигает 41% утилизации модельных FLOPs. Обучение остаётся онлайн: события собираются в 15-минутные сессии, новые веса доходят до обслуживания каждые 10 минут.

Источник: marktechpost.com