Впечатления от первого дня RecSys 2025
В Праге проходит конференция RecSys 2025 — и мы по традиции ведём репортаж с мероприятия. Первыми впечатлениями с нашим каналом поделился Иван Романов из Яндекс Путешествий. Слово Ивану:
ML Underhood
В Праге проходит конференция RecSys 2025 — и мы по традиции ведём репортаж с мероприятия. Первыми впечатлениями с нашим каналом поделился Иван Романов из Яндекс Путешествий. Слово Ивану:
Прошёл первый день RecSys, посвящённый в основном воркшопам. Первые доклады разочаровали: много воды в духе «за хорошие рекомендации против плохих». Хотел уйти, но попасть на CARS (Context-Aware RecSys) было сложно, поэтому остался на вторую часть — и не зря: стало интереснее.
Несмотря на, как мне кажется, индустриальное название самого воркшопа, большинство статей было академическими, и некоторые — сильно оторваны от реальности.
Одному человеку пришлось перейти от задачи с персонализацией — sasrec/argus-like арх-рой — к choice modeling, и он долгое время аудитории объяснял, зачем использовал что-то вроде feature tokenize transformer для своей задачи. И правда, зачем? Думаю, чтобы самому было интереснее — на графиках от скейла трансформера метрика не росла: layers=1, head=1, dim=16 давал по сути топовый результат.
Был обзор статьи KP4POI: файнтюнят LLM, промптируют посещённые места и после спецтокена ожидают новые POI (points of interest). Ничего особенного, просто отметить что LLM-based RecSys набирает обороты. В тайтле статьи есть «on Large-scale Datasets», но на одном из слайдов было что-то вроде про 5–10 тыс. пользователей.
Многие работают над своими агентами для построения маршрутов путешествий с персонализацией. Показали две демки, и ни в одной не было Чехии, что странно — можно же было всем посетителям конференции попиарить приложение. А другая демка (CityRiddler) была только по Вене, где до конференции я провёл чудесный день. Маршрут по городу и нескольким музеям мне составил ChatGPT, вот и у спикеров напросился вопрос: «А не работает ли уже это out of the box в ChatGPT и нужен ли продукт в целом, если это только промпт?»
Если не агентами богаты и LLM не тюним, то тогда RAG. Здесь, несмотря на скепсис, был очень классный слайд от одного из спикеров: «LLM as a judge» (можно оценивать не только релевантность ответа запросу, но и, например, вопросом «were retrieved chunks actually relevant» считать что-то вроде Precision). Не знаю, насколько рабочая конфигурация и не будет ли 100% корреляции скоров «судьи» под каждую из задач (recall, precision, faithfulness, answer relevancy).
А ещё среди докладов обнаружил вот такую интересную идею — взяли Mixup из image augmentation и применяют над пользовательскими векторами. Эффект есть, но метрики были странные.
ML Underhood
🔥12❤4👍3
Александр Плошкин выступил на ACM RecSys 2025 с oral'ом о датасете Yambda! Рассказывали о нём в Рекомендательной. Поздравляем ребят!
ML Underhood
ML Underhood
❤27🔥13👍1
POV: вы пережили открытие RecSys 2025 и вернулись туда на следующий день
Продолжаем рассказывать, как проходит RecSys 2025 — девятая международная конференция о рекомендательных системах в Праге. В предыдущих сериях: TL;DR интересных статей и суммаризация воркшопов в Рекомендательной, а также таймлайн первого дня от Ивана Романова, нашего коллеги из Яндекс Вертикалей. Сегодня снова передадим слово Ивану: попросили его поделиться впечатлениями о втором дне конференции.
ML Underhood
Продолжаем рассказывать, как проходит RecSys 2025 — девятая международная конференция о рекомендательных системах в Праге. В предыдущих сериях: TL;DR интересных статей и суммаризация воркшопов в Рекомендательной, а также таймлайн первого дня от Ивана Романова, нашего коллеги из Яндекс Вертикалей. Сегодня снова передадим слово Ивану: попросили его поделиться впечатлениями о втором дне конференции.
От второго дня конференции (он же первый «основной») у меня были заниженные ожидания: по опыту прошлых RecSys, сильнее всего запоминаются открывающий и закрывающий дни, когда в расписании есть воркшопы. Но всё оказалось лучше, чем я рассчитывал!
В аудитории с постерами постоянно бурлили интересные дискуссии. Мои коллеги, авторы работы Correcting the LogQ Correction, до последнего не снимали постер в ожидании Xinyang Yi, автора оригинальной статьи с LogQ. У меня тоже есть свои кумиры: повезло не только пообщаться с ребятами из Pinterest, но и задать вопросы одному из авторов статьи про PinFM.
Абсолютным фаворитом этого дня для меня стал постер от Amazon Music: Off-Policy Evaluation of Candidate Generators in Two-Stage Recommender Systems. Если коротко, авторы попытались замерить качество кандидатогенерации. Делать это на текущих пользовательских логах, на которые воздействует текущий КГ, неправильно из-за sample bias. А держать бесконечный рандомный сбор даже на 1% трафика — дорого. На помощь приходит off-policy evaluation: оценка политики на основе данных, собранных другой политикой.
Чисто академическая статья, в которой, как мне кажется, есть интересное направление работы с diversity: D-RDW. Diversity-Driven Random Walks. Авторы показывают алгоритм, который случайно ходит по сети «читатели — новости», выбирает материалы и проверяет, чтобы итоговый набор новостей соответствовал некоторым правилам баланса. Если соответствия нет — он подбирает другой набор, пока не получится нужная комбинация. Алгоритм сравнивают с MMR, на пальцах звучит прикольно — планирую закопаться и проверить.
Масштаб RecSys в этом году поражает. Слушать доклады можно не отходя от буфета (поймал на фото одного из звукорежиссёров), появилась комната для детей. Русскоговорящих на конференции много: в одном только чатике уже около 60 человек. А я познакомился с профессором из University of Pittsburgh, который закончил МГУ больше 30 лет назад.
Несколько инсайтов напоследок:🔴 В Google первые скрипты трейнов LLM переподнимали вручную в случае инцидентов ночью (когда обучение уходило в NaN/стопалось и т.п.) — после приняли решение вознаградить за это всех неравнодушных.🔴 Очень сложно есть и говорить на английском одновременно, это какой-то отдельный скилл. Присоединился на обеде к ребятам из IKEA и Telegraph, приходилось очень часто их переспрашивать.🔴 В IKEA и Telegraph сейчас используют только implicit feedback, хотя explicit тоже есть и такие действия уже логируются. А ещё ребята были очень удивлены размером Yambda-датасета и тем, как мы справляемся с обработкой таких объёмов данных, да ещё и с доказательством целесообразности скейла.
ML Underhood
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥3👍1😁1
Третий день RecSys 2025: индустриальный трек
Конкуренция на индустриальном треке растёт: +104% сабмитов к предыдущему году. Всё, что выделил из этого многообразия работ Иван Романов, — читайте ниже.
В конце дня был «званый ужин», на котором Иван успел посидеть за тремя русскоговорящими столами и вынести кое-какие инсайты:
ML Underhood
Конкуренция на индустриальном треке растёт: +104% сабмитов к предыдущему году. Всё, что выделил из этого многообразия работ Иван Романов, — читайте ниже.
Всё чаще звучало слово latency. Даже keynote оказался практичным: Jure Leskovec (именитый профессор из Стэнфорда) прорекламировал свой стартап Kumo — AutoML на графовых нейросетях с SQL-подобным языком для fit-predict по таблицам. Мне запомнился «наброс», что существует опенсорс-решение (CARTE: Pretraining and Transfer for Tabular Learning), которое из коробки даёт аналогичные результаты.
Следующая статья зацепила названием — User Long-Term Multi-Interest Retrieval Model for Recommendation. В качестве MLA-ментора предстоит «забустить» одну рексистему с помощью long-term-интересов. Явно разделяют долгосрочное и краткосрочное поведение пользователя и на вход долгосрочного энкодера передают в качестве query (как в encoder-decoder) выход краткосрочного. Обучают на два лосса. Кстати, заметен общий тренд: почти в каждой индустриальной статье используют несколько лоссов.
Не менее полезная статья — Zero-shot Cross-domain Knowledge Distillation: A Case Study on YouTube Music. Проблема: нужно запустить рексистему с нуля (YouTube Music), но уже есть готовая (на главной YouTube) с пересечением по фичам. Решение: переиспользовать веса, добавить спецтокены для новых фичей и дистиллировать артефакты от старой модели. Да, есть элемент overengineering, но главное — в индустрии начинают трогать cross-domain, и результаты уже позитивные.
Похожую проблему решают ребята из академии — LM-RecG: A Semantic Bias-Aware Framework for Zero-Shot Sequential Recommendation. Деталей в статье намного больше, но трудно сказать, что из этого работает (на академических датасетах буст настолько большой, что верится с трудом).
Было сразу три статьи, которые решают проблему использования контентных фичей в рекомендациях. Подходы разные, но суть одна: инициализировать lookup table через предобученную модель, а поверх запускать последовательную модель на айдишниках.
«Внебрачное дитя» европейских регуляций и Google — Cross-Batch Aggregation for Streaming Learning from Label Proportions in Industrial-Scale Recommendation Systems. Нельзя однозначно определить связь user-item, поэтому используют трюк из Learning from Label Proportions. Автор признал, что не знал о такой задаче до написания статьи, но был рад, что «поле уже немного пропахано».
Scaling Generative Recommendations with Context Parallelism on Hierarchical Sequential Transducers: инженерное ускорение HSTU (AllGather меняют на AllToAll, кастомные Triton-кернелы, jagged tensors — аналог NestedTensor из PyTorch в TorchRec). Около постера никого не было, визуализации классные, но темой вокруг особо не интересовались, хотя ускорение достойное — x5.
T2ARec: The Proposed Method — по метрикам отлично, но пугает SSM (state space model). Основное улучшение достигается через test-time alignment (во время теста модели выполняется градиентный спуск по двум вспомогательным задачам: сопоставление временных интервалов пользователей и сопоставление previous state с current state представления).
В конце дня был «званый ужин», на котором Иван успел посидеть за тремя русскоговорящими столами и вынести кое-какие инсайты:
— По ощущениям 2/3 участников используют GPT-интерфейс (VSCode, Cursor, либо разделённый экран: с одной стороны Jupyter Notebook, с другой — Perplexity/Gemini).
— У самого в квартальных целях — порешать эту проблему, так что, наверное, я biased, но повсюду говорят о холодном старте.
— С Сашей Петровым (gSASRec) обсуждали формулу хорошей статьи. Я уточнил, не обидится ли он на фидбек, что «читается просто». Его ответ порадовал: «Чем проще читается статья, тем сложнее её было писать».
ML Underhood
❤9🔥7👍4
Как YandexGPT научили размечать тикеты и экономить время разработчиков
DutyGPT — классификатор на базе YandexGPT 5 Lite в Яндекс Облаке, который по тексту тикета в трекере предсказывает, какой команде его логичнее всего передать. Раньше разработчики читали каждый тикет, сверялись с таблицами зон ответственности и вручную проставляли компоненты. У одного человека на это уходило до 25 часов в месяц, без учёта времени на исправление ошибок маршрутизации.
Техлид разработки общих AI-решений в Райдтехе Василий Дмитриев рассказал об инструменте, который освободил сотрудников от рутинной задачи.
Всё работает в реальном времени: как только в трекере создаётся тикет, автоматический триггер отправляет его содержимое в DutyGPT. Текст уезжает в дообученную модель, и мы получаем предсказание — команду и вероятность. Модель сама пишет в карточке комментарий вида «предсказываю такую-то команду с такой-то вероятностью» и проставляет нужную компоненту.
Дальше включаются стандартные триггеры трекера: по компоненте вызывается дежурный соответствующей команды. Если модель ошиблась, дежурный перевешивает компоненту или пингует людей. Все такие исправления возвращаются к нам как новые размеченные примеры для следующего дообучения.
Как происходит обучение
Перед запуском рассматривался вариант обучения без файнтюна — условный zero/few-shot на «голом» LLM. Но в проде его не пробовали: чтобы это работало, модель нужно кормить подробными описаниями зон ответственности каждой команды, а это десятки сущностей (в одной группе — ~30, а, например, в Доставке — 50+). Нужна постоянная ручная поддержка актуальности. Поэтому пошли путём дообучения под нужные домены.
Данные для дообучения на задачу классификации собираются из реальных выборок тикетов от разных команд. Стартовали с небольшой выборки с точностью около 40% — никуда не выкатывали, просто наблюдали.
Дособрали данных — подскочили до 69% и задумались, много это или мало. Померили человеческую точность на этом же процессе и получили около 70%. Фактически модель уже размечала «как человек» — с этим результатом и решили выкатываться. Ну а дальше заработал автоматический сбор правильных и неправильных кейсов. Менее чем за год дошли до стабильных 75%+ по организациям, а в некоторых командах — до ~80%.
Важно понимать, что 100% никогда не будет, потому что у команд появляются новые зоны ответственности, и модель нужно постоянно переобучать. Но дойти до 85–90% — реальная цель (по всем командам).
У проекта есть отдельная доска для контроля качества разметки, и когда на ней видна деградация (модели без дообучения закономерно «плывут»), вручную запускается новый цикл обучения: собираются свежие тикеты по конкретным командам и обновляется датасет. Ближайший план — автоматизировать этот контур, чтобы переобучение происходило самостоятельно, примерно раз в месяц.
Результаты
С марта 2024 DutyGPT сэкономил ~1000 часов у разработчиков на разметке тикетов. С момента запуска к автоматической разметке присоединились порядка 89 команд.
ML Underhood
DutyGPT — классификатор на базе YandexGPT 5 Lite в Яндекс Облаке, который по тексту тикета в трекере предсказывает, какой команде его логичнее всего передать. Раньше разработчики читали каждый тикет, сверялись с таблицами зон ответственности и вручную проставляли компоненты. У одного человека на это уходило до 25 часов в месяц, без учёта времени на исправление ошибок маршрутизации.
Техлид разработки общих AI-решений в Райдтехе Василий Дмитриев рассказал об инструменте, который освободил сотрудников от рутинной задачи.
Всё работает в реальном времени: как только в трекере создаётся тикет, автоматический триггер отправляет его содержимое в DutyGPT. Текст уезжает в дообученную модель, и мы получаем предсказание — команду и вероятность. Модель сама пишет в карточке комментарий вида «предсказываю такую-то команду с такой-то вероятностью» и проставляет нужную компоненту.
Дальше включаются стандартные триггеры трекера: по компоненте вызывается дежурный соответствующей команды. Если модель ошиблась, дежурный перевешивает компоненту или пингует людей. Все такие исправления возвращаются к нам как новые размеченные примеры для следующего дообучения.
Как происходит обучение
Перед запуском рассматривался вариант обучения без файнтюна — условный zero/few-shot на «голом» LLM. Но в проде его не пробовали: чтобы это работало, модель нужно кормить подробными описаниями зон ответственности каждой команды, а это десятки сущностей (в одной группе — ~30, а, например, в Доставке — 50+). Нужна постоянная ручная поддержка актуальности. Поэтому пошли путём дообучения под нужные домены.
Данные для дообучения на задачу классификации собираются из реальных выборок тикетов от разных команд. Стартовали с небольшой выборки с точностью около 40% — никуда не выкатывали, просто наблюдали.
Дособрали данных — подскочили до 69% и задумались, много это или мало. Померили человеческую точность на этом же процессе и получили около 70%. Фактически модель уже размечала «как человек» — с этим результатом и решили выкатываться. Ну а дальше заработал автоматический сбор правильных и неправильных кейсов. Менее чем за год дошли до стабильных 75%+ по организациям, а в некоторых командах — до ~80%.
Важно понимать, что 100% никогда не будет, потому что у команд появляются новые зоны ответственности, и модель нужно постоянно переобучать. Но дойти до 85–90% — реальная цель (по всем командам).
У проекта есть отдельная доска для контроля качества разметки, и когда на ней видна деградация (модели без дообучения закономерно «плывут»), вручную запускается новый цикл обучения: собираются свежие тикеты по конкретным командам и обновляется датасет. Ближайший план — автоматизировать этот контур, чтобы переобучение происходило самостоятельно, примерно раз в месяц.
Результаты
С марта 2024 DutyGPT сэкономил ~1000 часов у разработчиков на разметке тикетов. С момента запуска к автоматической разметке присоединились порядка 89 команд.
ML Underhood
🔥27❤9🐳6