Information Retriever
3.45K subscribers
254 photos
1 video
8 files
127 links
Download Telegram
Related Pins at Pinterest: The Evolution of a Real-World Recommender System.

В далеком 2013-м году два инженера из Пинтереста за три недели склепали первую версию рексистемы для рекомендаций похожих пинов: взяли Pin-Board граф, посчитали мапредьюсом совстречаемости пинов, положили результаты в kv-хранилище. Через два года под развитие этого модуля выделили отдельную команду, и к моменту, когда в 2017-м году была опубликована обсуждаемая статья, уже 40% всех показанных и сохраненных пинов атрибуцировалось рекомендациям похожих пинов.

Что было сделано:

1. Перешли на случайные блуждания (Pixie) вместо мапредьюсного подсчета совстречаемостей. Вдохновлялись наработкой Твиттера аж 2013-го года, WTF: The Who to Follow Service at Twitter. Как минимум забустили качество для более редких, "тяжелохвостовых" пинов, у которых не набиралось достаточное количество соседей в своих бордах.

2. Добавили ранжирование:
* вырастили клики и сохранения пинов на 30% с помощью линейной модели над девятью фичами, использующей только характеристики query/candidate пинов (эмбеды текстов, картинки, категории, etc)
* добавили персонализацию: историю пользователя, соцдем, etc
* перешли на градиентный бустинг: это позволило упростить препроцессинг фичей (нормализацию, бакетизацию, etc), а также дало возможность добавлять query-level фичи
* пересели на pointwise (!) лосс вместо pairwise
* spoiler: позже они перейдут на ранжирующую нейросеть, о чем я рассказывал в посте про эволюцию ранжирования в Pinterest

3. Увеличили полноту/разнообразие кандидатогенерации, добавив больше источников кандидатов:
* Pin2Vec: word2vec над сессиями пользователей, эмбеды пинов из которого используются в ANNS
* поисковые кандидаты: ходят с текстовыми аннотациями query-пина в свой текстовый поиск, и с картинкой в визуальный; помогло с холодным стартом
* "срезовые" кандидатогенераторы: выделили отдельные кандидатогенераторы для более специфичных срезов пинов (e.g. свежие, региональные пины)

4. Про проблемы:
* фидбек луп: не получалось побить продовую ранжирующую модель, обучаясь на её же фидбеке; выделили для обучения 1% трафика, в котором отобранные кандидаты ранжировались случайно. Получили более хорошие модели, чем на исходном большом трафике
* меморизующие счетчики: была еще такая штука как MemBoost, которая изначально использовалась как прибавка к скору Pin-Board совстречаемости; по сути, это взвешенная сумма счетчиков вида "сколько раз при показе данного кандидата по этому запросу пользователи его сохраняли/кликали/etc". После введения ранжирующей модели стали использовать их в качестве фичей. Заметили, что из-за них сложно проводить АБ — эффекты от оцениваемых изменений прорастают через них в другие сплиты, и обратный эксп тоже нормально не поставишь; но ничего с этим не сделали
* столкнулись с тем, что любое изменение в рексистеме инвалидирует оптимальность всех ее компонентов, и всякие захардкоженные гиперпараметры/константы нужно переподбирать; полечили это автоматизацией — при каждом изменении стараются как можно больше всего автоматически перетюнить

5. Еще чуть про инфру:
* было сложно итерироваться, когда весь стек, включая ранжирование, был оффлайновый; каждое изменение ранжирования/кандгена требовало полный переобход всей базы; покрытие запросов тоже было не очень; в итоге перевели ранжирование и большую часть кандидатогенераторов в онлайн
* передавать по сети туда-сюда сырые данные пинов, чтобы посчитать фичи — затратно, система будет упираться в сеть; поэтому делают шардирование исходной базы кандидатов; на каждом шарде хранятся все сырые данные про пины и сразу считаются все нужные скоры / фичи

Это была краткая историческая сводка из 2017-го года. Что произошло за следующие семь лет? To be continued :)
🔥482👍2
Если увидите такую комбинацию наклеек на PML Conf — подходите пообщаться :)
🔥38
Practical ML Conf 2024.

Ну что, как всегда — очерки из кулуаров после конференции :)

Про компании:
* яндексоиды из ex-Дзена обустраивают под себя VK: ввели яндексовые перформанс ревью
* в Wildberries подводят итоги первого полугодия после массивного рексис найма
* в Авито активно улучшают рекомендации, судя по кол-ву участников конференции и по кол-ву вопросов про трансформеры и u2i двухбашенные модельки
* в Сбере тоже активно работают над трансформерами, в частности над использованием контентных представлений для айтемов
* еще про Wb: после выхода на работу доступы получать как минимум неделю, а еще на старте могут дать задачку про категоризацию товаров :)
* в Детском Мире нет ресурсов :(
* Яндекс Маркет активно занимается нейросетями: внедрили несколько трансформеров, и нейросетевое ранжирование пробуют (обошлось не без вашего покорного слуги)
* в Яндекс Музыке лучшие музыкальные рекомендации (уже пятый трансформер внедряем)

Остальное:
* найм стажеров — лучшее изобретение человечества
* трансформеры не могут освоить язык дельфинов, нужна смена парадигмы
* как минимум несколько человек подходило поговорить про то, что двухбашенные трансформерные u2i модели выдают не очень разнообразные рекомендации
* люди периодически заговорщически полушепотом спрашивали "а что-нибудь с РЛ'ем делаете?"
* кажется, впервые лицом к лицу столкнулся в России с человеком, у которого тоже есть oura ring
* активно тизерил, что буду делать доклад про наши успехи в масштабировании рексистем в ближайший год

Успел во время нетворкинга осипнуть и через полчаса отсипнуть, не думал, что такое возможно =)
👍6719🔥3
Давно не писал про рабочие проекты, и вообще давно не писал. Новости в числах:

1. Мы обучили рекомендательный трансформер с миллиардом параметров в энкодере (с улучшением качества). Раньше у нас стандартные конфигурации энкодеров, которые мы повсеместно внедряли, были 3 и 18 млн параметров, и даже это по меркам рексис статей было очень много.

2. Обучили рекомендательный трансформер с длиной истории 8192 (тоже с улучшением качества). Раньше для нас стандартные длины истории в моделях были скорее 256, 512, 1536 - выше и обучить было сложно, и профита особо не видели.

3. Учимся на сотнях миллиардов событий (опять-таки с улучшением качества). Раньше обучались скорее на сотнях миллионов - десятках миллиардов.

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

5. Уже четыре года работаю в Яндексе.

А еще еду на следующей неделе на Рексис. Для меня это, конечно, маленький праздник - постараюсь и с вами им поделиться в виде постов :)

Первые три пункта про масштабирование для меня тоже большая радость. Ждите доклад на конференции в ближайшие полгода! И статью тоже попробуем написать, возможно практика написания постов в канале поможет :)
🔥81👍1614🤯2
Завтра начинается RecSys 2024!

Будет репортаж с места событий :) Планирую посетить воркшоп VideoRecSys + LargeRecSys 2024, на котором в этом году будет выступать Саша Петров (чатик @ods_recommender_systems), а также будут доклады от Google, Meta, Pinterest, TikTok, Netflix. Будет выступать Ed Chi, герой поста про путь длиной в тысячу ли до Distinguished Scientist в Google :)

Перед конференцией бегло посмотрел proceedings, чтобы хоть чуть-чуть подготовиться.

Bridging Search and Recommendation in Generative Retrieval: Does One Task Help the Other? от Spotify
Учат обучаемые эмбеды айтемов одновременно на две задачи: предсказание следующего айтема и поиск. Утверждают, что это помогает меньше оверфититься на популярности, регуляризует эмбеддинги. Одно но: эвалы без тайм сплита, откладывают несколько последних взаимодействий пользователя в тест и валидацию =)

Co-optimize Content Generation and Consumption in a Large Scale Video Recommendation System от Google
Хотят оптимизировать не только потребление, но и генерацию контента (UGC платформа, как никак). Для этого добавляют в ранжирование новые таргеты, которые при этом очень спарсовые. Из прикольных фишек — моделируют зависимости между разными сигналами с помощью хитрой смеси экспертов, где часть экспертов работает только на второй таске.

Self-Auxiliary Distillation for Sample Efficient Learning in Google-Scale Recommenders от Google
Утверждают, что полезно учить отдельную голову модели на смесь ground truth меток и предсказаний учителя. А целевую голову, которую потом используем, учить только на ground truth.

EmbSum: Leveraging the Summarization Capabilities of Large Language Models for Content-Based Recommendations от Meta
Ощущение такое, как будто статью от Alibaba / Tencent / Huawei прочитал. Какая-то неестественная конструкция с языковыми моделями и другими трансформерами.

Enhancing Performance and Scalability of Large-Scale Recommendation Systems with Jagged Flash Attention от Meta
Пиарят Jagged Tensor из Torchrec: запилили для них кучу математических операций, включая flash attention; утверждают что сильно ускорились и снизили потребление видеопамяти.

Analyzing User Preferences and Quality Improvement on Bing’s WebPage Recommendation Experience with Large Language от Microsoft
Рассказывают про свой модуль для webpage-to-webpage рекомендаций, а также рассказывают как улучшали датасет для обучения с помощью ЛЛМок.

Improving Data Efficiency for Recommenders and LLMs от Google
Здесь интересен посыл: в Google Deepmind верят, что нужно уметь сжимать данные в небольшие качественные датасеты. Пробуют использовать для этого LLM'ку (чтобы она оценила насколько сэмпл хорош). В рамках статьи прогнали 220 предобучений и 1100 дообучений.

Toward 100TB Recommendation Models with Embedding Offloading от Meta
Эмбеды хранят в оперативке и кэшируют "горячие" в видеопамяти. Завтра пойду спрашивать "а зачем так много, есть ли профит от 100 тб эмбеддингов?", потому что в статье про профит ничего не пишут :)

A Hybrid Multi-Agent Conversational Recommender System with LLM and Search Engine in E-commerce от JD.com
Заходят как-то в бар Manager, User/Item Analyst, Reflector, Searcher, and Task Interpreter. А потом начинают подбирать пользователям товары...

Embedding Optimization for Training Large-scale Deep Learning Recommendation Systems with EMBark от NVIDIA
Очень подробная детальная статья про эмбеддинги в рекомендашках с точки зрения инфры.

Encouraging Exploration in Spotify Search through Query Recommendations от Spotify
Если раньше поиск был больше про сценарии, когда у пользователя есть точное намерение, то сейчас уже начинают задумываться об улучшении качества на срезе более расплывчатых запросов.

Bootstrapping Conditional Retrieval for User-to-Item Recommendations от Pinterest
Рассказывают как "обуславливали" двухбашенные модели для генерации кандидатов, чтобы не нужно было уже после стадии кандгена еще дополнительно фильтровать айтемы по нужному условию.
🔥337👍2
Завтра начинается RecSys 2024! Part 2.

Short-form Video Needs Long-term Interests: An Industrial Solution for Serving Large User Sequence Models от
Google
Очень похоже на статью от Меты, про которую я рассказывал в одном из ранних постов. Асинхронно считают эмбед пользователя.

Bridging the Gap: Unpacking the Hidden Challenges in Knowledge Distillation for Online Ranking Systems от Google
Еще одна статья про дистилляцию от Гугла. Из интересного: в модели предсказывают не только CTR, но и E(LTV); еще раз говорят про отдельную голову для дистилляции; утверждают что учителя лучше делать не слишком большим, а, например, в два раза больше ученика; иначе возникает слишком большой knowledge gap, из-за которого ученику сложно учиться.

Embedding Based Retrieval for Long Tail Search Queries in Ecommerce от BestBuy
Еще одна статья в копилку довольно простых, но приятных статей с описанием поискового стэка. Берты, биэнкодеры, query-to-query лосс, etc.

Sliding Window Training - Utilizing Historical Recommender Systems Data for Foundation Models от Netflix
Говорят, что плохо брать для пользователя только N последних взаимодействий для обучения, что стоит нарезать из него кучу чанков, учиться на всей истории. Но при этом чанки одного пользователя как будто распихивают по разным эпохам обучения.

Taming the One-Epoch Phenomenon in Online Recommendation System by Two-stage Contrastive ID Pre-training от Pinterest
При переходе к обучаемым айдишникам на задачах типа CTR часто появляется переобучение после первой же эпохи обучения; предлагают бороться с этим супер простой процедурой предобучения для айдишников.

Joint Modeling of Search and Recommendations Via an Unified Contextual Recommender (UniCoRn) от Netflix
Сделали для поиска, item2item и user2item рекомендаций одну модель.

Learned Ranking Function: From Short-term Behavior Predictions to Long-term User Satisfaction от Google
Для тех, кто соскучился по формулам и математике, глядя на прошлые статьи.

Better Generalization with Semantic IDs: A Case Study in Ranking for Recommendations от Google
Про нее уже писал, например, вот здесь.

Двойной пост получился, ну да ладно :)
🔥42👍1
RecSys, день первый. LargeRecSys x VideoRecSys.

В Google очень сильно верят в Generative Retrieval как универсальную парадигму для обучения рекомендательных систем (статьи Better Generalization with Semantic IDs: A Case Study in Ranking for Recommendations и Recommender Systems with Generative Retrieval). Превращаем айтемы в набор семантических айдишников с помощью RQVAE, затем с помощью трансформера учимся их генерировать. Ed Chi обмолвился, что у них это уже в проде работает; что такая штука очень хорошо дообучается даже на небольшом кол-ве примеров (тысячах). На мои вопросы "а что там с distribution shift'ом? как эту штуку инкрементально учить? как же popularity bias?" Эд сказал что никаких проблем нет, что трансформер это — просто transducer. Думайте сами =)

Был рассказ про webpage-to-webpage рекомендации (explore further) в Bing (статья Analyzing User Preferences and Quality Improvement on Bing’s WebPage Recommendation Experience with Large Language). Никаких ноу хау не заметил, звучало довольно стандартно для индустрии. Пять кандгенов (графовый, коллаборативная фильтрация, двухбашенная модель, etc), ранжирующий градиентный бустинг, нейросетевой кросс-энкодер как фича; используют для двухбашенности InfoNCE с ин-батч негативами и какими-то хард негативами; logQ-коррекции нет. Качество в оффлайне оценивают помощью LLM.

От Нетфликса было довольно поверхностное выступление без технических деталей; докладчик предложил 13 пунктов-поучений, которые я записывать не стал. На фоне прошлых докладов, в которых были пересказы уже прочитанных ранее статей, выглядело в целом посвежее. Когда будет запись — стоит посмотреть :)

Пинтерест выступил с рассказом про Pinnerformer, TransAct и свою новую статью про id-based pre-training. Пиннерформер, конечно, уже выглядит совсем маленьким — 256 событий и очень мелкий трансформер. Еще интересно насколько уменьшилась польза от PinSage эмбеддингов после добавления обучаемых эмбеддингов по айдишникам — спрошу на постер сессии.

Было выступление про HSTU (статья Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations). Я про эту статью рассказывал в посте про масштабирование. Из новой информации — явно сказали, что пытаются энкодер замасштабировать, пробуют FSDP. Сейчас энкодер у них довольно небольшой, 24 слоя размерности 1280. У нас больше :)

Дальше снова выступление от Google: Derek Cheng рассказал, что они уже внедрили DCN-V3 (надеюсь, не этот) и ведут активную разработку DCN-V4. И что активно используют unified embeddings). На мой вопрос "пробовали ли заскейлить unified эмбеддинги до размеров как у Меты?" сказал, что у них такие размеры и есть. Немного подозрительно, в статьях как будто не так.

Дальше было выступление про инфру для обучения / инференса моделей от Меты. Из интересного — есть трейдофф между размером и свежестью модели, пытаются его убрать; сделать сразу и большую, и свежую модель. Придумали некие дельта апдейты — целиком подгружают обновление dense части (энкодера) и частично обновляют sparse часть (эмбеды).

Ну и, наконец, великолепное выступление Ed Chi. Основной тезис — в будущем рекомендательные системы и языковые модели надо смерджить в одну сущность. В какой-то момент выступления достал пять каких-то стикеров с Gemini, сказал, что будет за правильные ответы на вопросы давать по стикеру. Я ответил дважды: в первый раз вручил мне стикер, во второй раз не стал, сказал, что лицо запомнил =) На фотографии можно лицезреть как я после выступления вопросы задаю :)
49🔥22👍9
RecSys, день второй.

Послушал opening keynote, поглядел на красоту театра Петруцелли, ушел смотреть постеры. Провел большую часть дня у постеров Дипмайнда =) Ниже небольшая выжимка из заметок.

Better Generalization with Semantic IDs: A Case Study in Ranking for Recommendations от Google.

Изначальный настрой с момента выхода статьи был скептический, но глядя на энтузиазм Дипмайнда, будем пробовать. Вместе с ней стоит читать Recommender Systems with Generative Retrieval и Aligning Large Language Models with Recommendation Knowledge. Подробный пост про них отложу, а сейчас напишу кратко:

* есть энкодер, с помощью которого можно получить эмбеды видеороликов. Учили его как автоэнкодер, без пользовательского фидбека
* поверх учим RQVAE на миллиарде айтемов, отобранных с помощью эвристик
* получаем из него те самые семантические айдишники. Их количество фиксированное (8-16 штук), при этом есть иерархичность — более ранние айдишники описывают более верхнеуровневые концепты. Для некоторых задач можно вообще оставить префикс (e.g. для категоризации айтемов)
* семантические айдишники можно использовать по-разному — обучать для них эмбеды; агрегировать мешком эмбедов, и затем подсовывать напрямую в ранжирующую модель
* а можно использовать в генеративной рекомендательной модели. В данном случае берется Gemini, формируется промпт вида "вот история пользователя: semantic ids ... semantic ids, что порекомендуешь?", и затем модель тюнится на ретривал. Достаточно небольшого трафика (в десятки раз меньшего, чем для моделей прошлого поколения), чтобы ее обучить

Подробностей еще много, оставлю для отдельного поста :) На таких мероприятиях можно узнать много ценной информации, которой нигде больше не узнаешь — чем авторы занимаются сейчас, что думают про другие статьи (в данном случае про Actions Speak Louder Than Words от Меты), какая у них структура R&D отдела, что уже внедрено, etc

Analyzing User Preferences and Quality Improvement on Bing's WebPage Recommendation Experience with Large Language Models от Microsoft.

Статья про рекомендации веб-страниц. Буду краток:
* используют InfoNCE, но про logQ-коррекцию до меня не слышали
* пробовали два вида позиционного дебаясинга: подставлять позицию как фичу и перевзвешивать сэмплы для обучения — не зажгло. Посоветовал подход, который используется в некоторых местах в Яндексе — делать отдельный позиционный бейзлайн и дообучать к нему основную модель как добавку
* графовые нейросетки не дают профит поверх коллаборативной фильтрации над графом совместных кликов. Единственное, что заработало — добавить в граф доп. ребра на основе семантической близости из content-based двухбашенной модели
* финальное ранжирование делается выпуклой комбинацией нейросетевого кросс-энкодера, обученного на релевантность, и кликового градиентного бустинга. Веса подбирают в оффлайне, глядя на парето фронт
* держат какой-то процент случайного трафика (случайного из 30 отобранных кандидатов), измеряют на нем в оффлайне качество алгоритмов

Co-optimize Content Generation and Consumption in a Large Scale Video Recommendation System от Google (YouTube Shorts).

Сама статья была не очень полезна, а вот общение с докладчиком интересное:
* pointwise лосс работает лучше, чем pairwise. Гипотеза команды — так как в сценарии youtube shorts у пользователя нет как такового сравнения разных айтемов, он их просто подряд листает, то и pointwise задача органичней. Похоже на Яндекс Музыку
* в ранкере две тысячи вещественных фичей, и еще две тысячи формируется через эмбеддинги
* кажется, используют hiformer; в статье этот момент сознательно опускают =)
* в проде есть два трансформера над историей пользователя: оффлайновый, обрабатывающий тысячи событий; и рилтаймовый, обрабатывающий сотни. Рилтаймовый учится end-to-end с ранкером, а оффлайновый учится отдельно, но на тот же самый лосс ранкера
* в модельке 14-20 разных голов; одна из основных — регрессия на watchtime
* используют дебаясинг, так как айтемы в начале сессии и в конце неравнозначны; делают некое перевзвешивание
🔥414😁1