Немного картинок для тех, кому лень открывать презентацию :)
1🔥22❤6👍4👀1
Новый подкаст с Суцкевером уже все видели, а я хочу подсветить еще два свежих подкаста:
* John Schulman (со-основатель OpenAI, автор TRPO / PPO, сейчас работает в thinking machines); про RL, ресерч, академию и индустрию — ссылка
* Новый подкаст с Demis Hassabis; по сути, подводит итоги года и хвастается успехами :) ссылка
Еще у Шульмана есть небольшой гайд про то, как заниматься ресерчем — “An Opinionated Guide to ML Research” (ссылка). Он 2020-го года, но актуальность не потерял — разве что, по словам самого Шульмана, стоило бы добавить секцию про использование LLM.
Из того, что тоже хотел осветить, но руки все не доходили — в Spotify продолжают пушить разговорные рекомендации. Буквально пару недель назад я рассказывал на лекции свое видение развития рексистем; что разговорные рекомендации — это способ уйти от манипуляций и дать пользователям больше контроля над алгоритмами. И, судя по постам менеджмента Spotify (см. скрин с Линкедина), позиция у них похожая. С технической точки зрения их подход, вероятно, довольно близок к PLUM (см. недавний блог пост).
А что касается меня — я сейчас активно занимаюсь ресерчем :) В этом году появились первые публикации, вернулся к преподаванию и сильно сменил фокус — с внедрений на науку и исследования. Год получился богатым на перемены.
С наступающим. Спасибо, что читаете!
* John Schulman (со-основатель OpenAI, автор TRPO / PPO, сейчас работает в thinking machines); про RL, ресерч, академию и индустрию — ссылка
* Новый подкаст с Demis Hassabis; по сути, подводит итоги года и хвастается успехами :) ссылка
Еще у Шульмана есть небольшой гайд про то, как заниматься ресерчем — “An Opinionated Guide to ML Research” (ссылка). Он 2020-го года, но актуальность не потерял — разве что, по словам самого Шульмана, стоило бы добавить секцию про использование LLM.
Из того, что тоже хотел осветить, но руки все не доходили — в Spotify продолжают пушить разговорные рекомендации. Буквально пару недель назад я рассказывал на лекции свое видение развития рексистем; что разговорные рекомендации — это способ уйти от манипуляций и дать пользователям больше контроля над алгоритмами. И, судя по постам менеджмента Spotify (см. скрин с Линкедина), позиция у них похожая. С технической точки зрения их подход, вероятно, довольно близок к PLUM (см. недавний блог пост).
А что касается меня — я сейчас активно занимаюсь ресерчем :) В этом году появились первые публикации, вернулся к преподаванию и сильно сменил фокус — с внедрений на науку и исследования. Год получился богатым на перемены.
С наступающим. Спасибо, что читаете!
🎄36🔥12❤🔥4❤4🥰2👍1
В следующую субботу, 24-го числа, пройдет Data Ёлка 2025.
В прошлом году я выступал на дата ёлке с докладом "Нейросетевой мир победил"; рассказывал свое решение соревнования VK RecSys Challenge 2024.
А в этом году с докладом "Итоги года в Recsys" выступит Владимир Байкалов, который раньше работал в моей бывшей команде в Яндексе. Приходите послушать! Я сам тоже, возможно, загляну.
А еще Владимир недавно завёл тг-канал — @ducks_recs. Подписывайтесь :)
В прошлом году я выступал на дата ёлке с докладом "Нейросетевой мир победил"; рассказывал свое решение соревнования VK RecSys Challenge 2024.
А в этом году с докладом "Итоги года в Recsys" выступит Владимир Байкалов, который раньше работал в моей бывшей команде в Яндексе. Приходите послушать! Я сам тоже, возможно, загляну.
А еще Владимир недавно завёл тг-канал — @ducks_recs. Подписывайтесь :)
❤21🔥11
xAI выложили в опенсорс код своей новой рекомендательной системы (X / Твиттера).
https://github.com/xai-org/x-algorithm/
Код довольно простенький. Что можно сказать:
* используют jax
* постарались избавиться от эвристик и ручного feature engineering'а
* как и раньше, кандидаты набираются из двух источников — подписки и ML (раньше TwHIN, теперь двухбашенный трансформер)
* в качестве ранжирующей нейросети — тоже трансформер (раньше был MaskNet / DCN / etc)
* также выложили цельный многостадийный рекомендательный пайплайн — набор кандидатов, фильтрации, ранжирование, буст разнообразия авторов, постфильтрации
* есть только код инференса, про обучение инфы нет
Архитектура трансформера дефолтная (вижу роторные эмбеды, rmsnorm) и форкнута с Grok'а. Важно: предобученный Grok не используется, только код. И вообще, везде в тестах и конфигах указаны очень маленькие размеры трансформера (аля два слоя и hidden size 128). Длина используемой истории пользователя в конфигах — то ли 128, то ли 32 (в разных местах по-разному написано). Одинаковая архитектура трансформера используется и в ранжировании, и в кандгене.
Для кодирования сущностей (постов, авторов, пользовательских признаков) используют multi-hash lookup: делают что-то типа
Еще как будто берут мультихэши от айдишника пользователя и подают в трансформер вместе с историей пользователя.
Башня кандидата в двухбашенном трансформере для кандгена очень простая — Linear(SiLU(Linear)).
Ранжирующий трансформер устроен таким образом, что history+user токены видят только history+user токены, а каждый кандидат видит себя и history+user токены (кастомная аттеншн маска). Подают сразу несколько кандидатов, но работает это эквивалентно тому, как если бы отдельно прогнали трансформер для каждого кандидата, добавляя его в конец последовательности.
Multi-action prediction: трансформер предсказывает вероятности сразу для кучи разных сигналов (like, reply, click, repost — полный список в репозитории). Для финального ранжирования, эти вероятности суммируются с весами в единый скор (но как подбираются веса — не пишут). Такую схему использовали и в прошлой ранжирующей нейросети, но только теперь эти вероятности приходят напрямую из трансформера.
tldr: довольно простой пайплайн на трансформерах. Двухбашенный кандген, нейросетевое ранжирование, мультихэши для эмбеддингов. С одной стороны — всё супер просто, ничего особо интересного. С другой — если получилось заменить прошлую рексистему и ничего не сломать — это круто :)
Предполагаю, что какие-то подробности / детали все же не раскрываются (e.g. как рекомендуется холодный контент — для этого должны быть какие-то еще эмбеды кроме мультихэшей).
Из забавного — всю эту трансформерную поделку в xAI решили назвать "Феникс". Когда-то я в Яндексе инициировал похожий проект про упрощение ранжирования в единую нейросеть с трансформером, и тоже назвал её Фениксом. Вот так вот нейминги совпали :)
https://github.com/xai-org/x-algorithm/
Код довольно простенький. Что можно сказать:
* используют jax
* постарались избавиться от эвристик и ручного feature engineering'а
* как и раньше, кандидаты набираются из двух источников — подписки и ML (раньше TwHIN, теперь двухбашенный трансформер)
* в качестве ранжирующей нейросети — тоже трансформер (раньше был MaskNet / DCN / etc)
* также выложили цельный многостадийный рекомендательный пайплайн — набор кандидатов, фильтрации, ранжирование, буст разнообразия авторов, постфильтрации
* есть только код инференса, про обучение инфы нет
Архитектура трансформера дефолтная (вижу роторные эмбеды, rmsnorm) и форкнута с Grok'а. Важно: предобученный Grok не используется, только код. И вообще, везде в тестах и конфигах указаны очень маленькие размеры трансформера (аля два слоя и hidden size 128). Длина используемой истории пользователя в конфигах — то ли 128, то ли 32 (в разных местах по-разному написано). Одинаковая архитектура трансформера используется и в ранжировании, и в кандгене.
Для кодирования сущностей (постов, авторов, пользовательских признаков) используют multi-hash lookup: делают что-то типа
linear(concat(embedding(hash1), embedding(hash2))). В конфигах везде указаны num_hashes=2, то есть по два лукапа на сущность. Для разных признаков используются раздельные таблицы эмбеддингов (в unified подходе была бы одна общая); то есть для авторов, постов, пользователей — разные таблицы. Эмбеддинг события в истории пользователя формируется на основе поста, автора, рекомендательной поверхности и действия пользователя.Еще как будто берут мультихэши от айдишника пользователя и подают в трансформер вместе с историей пользователя.
Башня кандидата в двухбашенном трансформере для кандгена очень простая — Linear(SiLU(Linear)).
Ранжирующий трансформер устроен таким образом, что history+user токены видят только history+user токены, а каждый кандидат видит себя и history+user токены (кастомная аттеншн маска). Подают сразу несколько кандидатов, но работает это эквивалентно тому, как если бы отдельно прогнали трансформер для каждого кандидата, добавляя его в конец последовательности.
Multi-action prediction: трансформер предсказывает вероятности сразу для кучи разных сигналов (like, reply, click, repost — полный список в репозитории). Для финального ранжирования, эти вероятности суммируются с весами в единый скор (но как подбираются веса — не пишут). Такую схему использовали и в прошлой ранжирующей нейросети, но только теперь эти вероятности приходят напрямую из трансформера.
tldr: довольно простой пайплайн на трансформерах. Двухбашенный кандген, нейросетевое ранжирование, мультихэши для эмбеддингов. С одной стороны — всё супер просто, ничего особо интересного. С другой — если получилось заменить прошлую рексистему и ничего не сломать — это круто :)
Предполагаю, что какие-то подробности / детали все же не раскрываются (e.g. как рекомендуется холодный контент — для этого должны быть какие-то еще эмбеды кроме мультихэшей).
Из забавного — всю эту трансформерную поделку в xAI решили назвать "Феникс". Когда-то я в Яндексе инициировал похожий проект про упрощение ранжирования в единую нейросеть с трансформером, и тоже назвал её Фениксом. Вот так вот нейминги совпали :)
❤50🔥36👍17
Хабр
Query Prediction, или как мы отказались от ANN и полюбили обратный индекс
Всем привет! Меня зовут Антон Пилькевич, я более четырёх лет занимаюсь ранжированием и текстовой релевантностью в поиске Ozon. И вот настал момент, когда у меня появилось время поделиться своими...
На хабре появился пост от Антона Пилькевича про самое большое улучшение текстового поиска в Озоне за последние 4 года. Что сделали: query prediction — внедрили обратный индекс на основе предсказанных для документов токенов запроса (с помощью DL, разумеется).
Ссылочка: https://habr.com/ru/companies/ozontech/articles/990180/.
Пост супер крутой! Много отсылок на литературу, подробные объяснения всяких базовых концептов, даже отсылка на канал Миши и пост про GPU Retrieval есть :) В общем, всем интересующимся поиском/рекомендациями — советую глянуть.
P.S: забавный факт — когда-то в стародавние времена я читал Антону лекции про трансформеры в рамках курса по NLP на Физтехе =)
Ссылочка: https://habr.com/ru/companies/ozontech/articles/990180/.
Пост супер крутой! Много отсылок на литературу, подробные объяснения всяких базовых концептов, даже отсылка на канал Миши и пост про GPU Retrieval есть :) В общем, всем интересующимся поиском/рекомендациями — советую глянуть.
P.S: забавный факт — когда-то в стародавние времена я читал Антону лекции про трансформеры в рамках курса по NLP на Физтехе =)
👍45❤19🔥16😁1
Погружение в академию.
Прошло уже примерно полгода с тех пор, как я сменил деятельность на ресерч. Что могу рассказать:
* хорошенько отдохнул; но недостаточно, надо ещё :)
* взял себе девять студентов под научное руководство и слегка чувствую себя тимлидом =)
* готовил вместе с ребятами следующую итерацию рексис курса для ШАДа и первую итерацию рексис курса в Вышке; оба начинаются в первой половине февраля, поэтому ждите в ближайшее время посты с лекциями/семинарами
* доделал camera-ready статью про Аргуса, скоро выложу на arxiv
* готовлю новую статью, которую надеюсь успеть подать на второй цикл KDD'26 в формате research full paper
В моём понимании, если хочешь сделать крутую ресерч команду — нужно довольно активно участвовать в образовательной системе; иметь доступ к самым талантливым и замотивированным ребятам и активно этим доступом пользоваться. Я пока никакой своей команды осознанно не делаю — это противоречит первой аксиоме про отдых; но, конечно, есть подозрение, что научная группа постепенно появится сама собой :)
По мере погружения в академию, обрастаю новыми знакомствами. И как раз хотел бы порекомендовать вам канал Алексея Наумова и Валерии Власовой, коллег из ВШЭ, которые гораздо дольше меня занимаются ресерчем и рассказывают много интересного про академию, конференции, Вышку и университеты в целом. Алексей когда-то принимал у моей группы экзамен по математическим основам теории вероятностей на кафедре матстата ВМК :) Старая добрая теорема Радона-Никодима... ))
Примеры постов с канала Алексея и Валерии, которые мне показались интересными:
* Что такое research proposal и как его писать
* Студенческие годы в МГУ
* Про поиск научных проблем для исследований
* Как развивалась университетская система
* Стоит ли получать PhD
Если вам интересен ресерч, образование, математика — рекомендую подписаться.
Прошло уже примерно полгода с тех пор, как я сменил деятельность на ресерч. Что могу рассказать:
* хорошенько отдохнул; но недостаточно, надо ещё :)
* взял себе девять студентов под научное руководство и слегка чувствую себя тимлидом =)
* готовил вместе с ребятами следующую итерацию рексис курса для ШАДа и первую итерацию рексис курса в Вышке; оба начинаются в первой половине февраля, поэтому ждите в ближайшее время посты с лекциями/семинарами
* доделал camera-ready статью про Аргуса, скоро выложу на arxiv
* готовлю новую статью, которую надеюсь успеть подать на второй цикл KDD'26 в формате research full paper
В моём понимании, если хочешь сделать крутую ресерч команду — нужно довольно активно участвовать в образовательной системе; иметь доступ к самым талантливым и замотивированным ребятам и активно этим доступом пользоваться. Я пока никакой своей команды осознанно не делаю — это противоречит первой аксиоме про отдых; но, конечно, есть подозрение, что научная группа постепенно появится сама собой :)
По мере погружения в академию, обрастаю новыми знакомствами. И как раз хотел бы порекомендовать вам канал Алексея Наумова и Валерии Власовой, коллег из ВШЭ, которые гораздо дольше меня занимаются ресерчем и рассказывают много интересного про академию, конференции, Вышку и университеты в целом. Алексей когда-то принимал у моей группы экзамен по математическим основам теории вероятностей на кафедре матстата ВМК :) Старая добрая теорема Радона-Никодима... ))
Примеры постов с канала Алексея и Валерии, которые мне показались интересными:
* Что такое research proposal и как его писать
* Студенческие годы в МГУ
* Про поиск научных проблем для исследований
* Как развивалась университетская система
* Стоит ли получать PhD
Если вам интересен ресерч, образование, математика — рекомендую подписаться.
❤26🔥8👍5🤝3👎2🤡1
Deep RecSys Course.
Вчера прошло первое занятие нашего Deep RecSys курса в Вышке!
Материалы выкладываются на гитхаб, а видеозаписи занятий — на ютуб, как и обещал :)
Собственно, рассказывал доработанную (в)водную лекцию, слайды которой уже выкладывал на канале. Информационная перегрузка, тяжёлые хвосты, технофеодализм, коллаборативная фильтрация, матричная факторизация, bitter lesson, scaling hypothesis — вот это всё :)
А на семинаре Артём Матвеев показывал различные метрики и обработку данных на Ямбде.
P.S: уже даже до ютуба моё блогерское дело дошло, жесть... ))
Вчера прошло первое занятие нашего Deep RecSys курса в Вышке!
Материалы выкладываются на гитхаб, а видеозаписи занятий — на ютуб, как и обещал :)
Собственно, рассказывал доработанную (в)водную лекцию, слайды которой уже выкладывал на канале. Информационная перегрузка, тяжёлые хвосты, технофеодализм, коллаборативная фильтрация, матричная факторизация, bitter lesson, scaling hypothesis — вот это всё :)
А на семинаре Артём Матвеев показывал различные метрики и обработку данных на Ямбде.
P.S: уже даже до ютуба моё блогерское дело дошло, жесть... ))
2🔥93🥰35❤19❤🔥5
Deep RecSys Course, второе занятие.
1. На лекции поговорили про ML дизайн рекомендательных систем и немного про мой опыт работы в R&D. В своё время я придумывал формат последней итерации собеседования по рекомендательным системам в Яндексе, и при подготовке лекции мне этот опыт очень пригодился. В общем, думаю, что получился неплохой начальный материал для подготовки к ML дизайн рексис собеседованию в бигтех. Пользуйтесь :)
2. На семинаре Владимир Байкалов @ducks_recs рассказывал про классические алгоритмы рекомендаций, с которыми можно сравнивать нейросети. И показывал для этих алгоритмов результаты на датасете Yambda. Заодно обсудили ошибки подсчета метрик в Ямбде — например, при подсчете Recall@K часто забывают, что нужно делить не на количество позитивов, а на
Записи занятия уже на ютубе — и лекция, и семинар. В этот раз принёс свой микрофон, поэтому на лекции звук чуть получше. Материалы — на Github (пока только лекция, но семинар тоже скоро выложим).
И ещё поделюсь отдельно парой ссылок с лекции:
1. Много полезной информации про дизайн рексистем есть на канале Миши @WazowskiRecommends. В лекции не раз ссылаюсь — на посты про счётчики, эмбеддинги, Mixigen
2. У Саввы Степурина есть два хороших наглядных доклада про ML дизайн рексистем — рассказ про стек Яндекс Музыки и про рекомендации незнакомого
3. На RecSys 2020 был туториал про feature engineering от Nvidia
4. У VK есть два хороших рассказа про item-to-item рекомендации — про внедрение item-to-item схемы от Дмитрия Шишова и про её улучшение от Андрея Зимовнова
P.S: уже преодолели отметку в 100 часов суммарного просмотра курса на ютубе!
1. На лекции поговорили про ML дизайн рекомендательных систем и немного про мой опыт работы в R&D. В своё время я придумывал формат последней итерации собеседования по рекомендательным системам в Яндексе, и при подготовке лекции мне этот опыт очень пригодился. В общем, думаю, что получился неплохой начальный материал для подготовки к ML дизайн рексис собеседованию в бигтех. Пользуйтесь :)
2. На семинаре Владимир Байкалов @ducks_recs рассказывал про классические алгоритмы рекомендаций, с которыми можно сравнивать нейросети. И показывал для этих алгоритмов результаты на датасете Yambda. Заодно обсудили ошибки подсчета метрик в Ямбде — например, при подсчете Recall@K часто забывают, что нужно делить не на количество позитивов, а на
min{количество позитивов, K}. Я такое видел и в метриках соревнований, и в статьях. А чтобы узнать багу при подсчете nDCG — смотрите семинар :)Записи занятия уже на ютубе — и лекция, и семинар. В этот раз принёс свой микрофон, поэтому на лекции звук чуть получше. Материалы — на Github (пока только лекция, но семинар тоже скоро выложим).
И ещё поделюсь отдельно парой ссылок с лекции:
1. Много полезной информации про дизайн рексистем есть на канале Миши @WazowskiRecommends. В лекции не раз ссылаюсь — на посты про счётчики, эмбеддинги, Mixigen
2. У Саввы Степурина есть два хороших наглядных доклада про ML дизайн рексистем — рассказ про стек Яндекс Музыки и про рекомендации незнакомого
3. На RecSys 2020 был туториал про feature engineering от Nvidia
4. У VK есть два хороших рассказа про item-to-item рекомендации — про внедрение item-to-item схемы от Дмитрия Шишова и про её улучшение от Андрея Зимовнова
P.S: уже преодолели отметку в 100 часов суммарного просмотра курса на ютубе!
👍27🔥20❤7❤🔥2🤝2