ML — это ОК
2.08K subscribers
83 photos
45 videos
1 file
149 links
Канал ML-команды ОК. 12 лет делаем крутые вещи и делимся ими здесь

Контакты: @anokhinn
Download Telegram
ML — это ОК
OPTIMIZING AIRBNB SEARCH JOURNEY WITH MULTI-TASK LEARNING https://arxiv.org/abs/2305.18431
Multi-target постановка естественна для рекомендеров, где пользователь может совершать над рекомендацией более-менее равнозначные положительные действия. Например, в Одноклассниках под постом можно поставить «класс», оставить комментарий или поделиться. В задачах, где есть одно самое главное целевое действие, полезность multi-target менее очевидна. Зачем отвлекать модель от главной цели, обучаясь предсказывать что-то второстепенное? На этот вопрос отвечают исследователи из Airbnb. В статье с KDD’23 они рассказали о новой архитектуре нейронной сети Journey Ranker для ранжирования объявлений в поиске Airbnb. Несмотря на то, что целевая метрика только одна – количество неотменённых бронирований (uncancelled bookings) – модель состоит из четырёх модулей (см. диаграмму), отвечающих в том числе за разные таргеты.

Shared representation module. Модуль принимает на вход признаки объявления и контекста и выдает соответствующие эмбеддинги. Этот модуль не изменился по сравнению с предыдущей моделью ранжирования. Он служит для подготовки входных данных для последующих модулей.

Base module учится предсказывать «положительные» действия пользователя: клики, долгие клики, заходы на страницу оплаты, бронирования, неотменённые бронирования. Цепочка действий сконструирована так, что следующее действие возможно, только если пользователь совершил предыдущее. Например, нельзя сделать бронирование, не зайдя на страницу оплаты. Модуль устроен так, что скор предыдущего действия в цепочке используется при вычислении скора следующего действия. При обучении каждому действию сопоставляется вес, который приводит все лоссы в одну шкалу: шкалу неотменённых бронирований.

Twiddler module учится предсказывать «отрицательные» действия пользователя: отказ в бронировании, отмену брони пользователем и отмену брони владельцем. Каждому действию соответствует свой выход сети.

Combination module комбинирует (сюрприз!) выходы base module и twiddler module. Веса выходов в линейной комбинации выучиваются из эмбеддинга контекста. Такая идея близка по духу к mixture of experts. Авторы статьи подчёркивают, что веса получаются интерпретируемыми. Например, модель обращает больше внимания на вероятность отмены при бронировании на близкие даты, потому цена отмены велика – у пользователя, скорее всего, не будет шанса сделать ещё одну бронь.

Авторы указывают несколько преимуществ архитектуры Journey Ranker по сравнению с прямой оптимизацией главной целевой метрики:
1. Модель учится на большем датасете. Можно учитывать не только пользователей, которые сделали неотменённое бронирование, но и тех, кто не дошёл до него, но совершил какое-то другое «положительное» действие.
2. Модель учитывает негативные действия пользователя и автора объявления. Вес таких действий варьируется в зависимости от контекста.
3. В экспериментах Journey Ranker побеждает: прирост составил +0.5 NDCG офлайн и +0.6% уникальных пользователей, совершивших неотменённое бронирование в A/B-эксперименте.
4. Архитектура обобщается на другие задачи: авторы протестировали её в поиске развлечений Airbnb и получили прирост в метриках.

Как и другие статьи команды поиска Airbnb, эта отлично написана: авторы рассказывают про мотивацию, результаты экспериментов и обсуждают гипотезы, которые их объясняют. Мы советуем почитать её тем, кто работает над задачей ранжирования в продакшн рекомендерах.
🔥9👍3🆒1
❄️На первой в этом году ридинг-группе ОК обсудим STRec — рекомендательный трансформер с разреженным вниманием. Авторам статьи удалось сократить время инференса стандартного SASRec вдвое, а потребление памяти — на 70%. Ведущим будет Марк Шерман, младший разработчик ОК. Ждём вас на встрече 18 января в 18:00.

Зум:
https://us05web.zoom.us/j/86918599487?pwd=c4NIvIDdHzGLaaHAoOwmBHD1jpFTmr.1
👍11🔥62
🌅 Специально для подписчиков публикуем запись аффирмаций на построение стабильной ML-платформы, которую по ошибке редактора назвали подкастом.

В этом выпуске можно найти ответы на такие важные вопросы, как:
- на какой земле должен стоять ML-инженер;
- в чём мотивация и сложность перехода из ML в инфраструктуру (не в терминах О-большое);
- как убедить бизнес инвестировать в построение ML-платформы, не применяя насилие (кроме психологического).

Ну, и немного про инструменты, инфраструктуру данных, платформу А/Б и зоны ответственности в современной ML-разработке.
🔥26😁21👍1
RANKITECT: RANKING ARCHITECTURE SEARCH BATTLING WORLD-CLASS ENGINEERS AT META* SCALE
https://arxiv.org/abs/2311.08430
*Meta признана экстремистской организацией в России
ML — это ОК
RANKITECT: RANKING ARCHITECTURE SEARCH BATTLING WORLD-CLASS ENGINEERS AT META* SCALE https://arxiv.org/abs/2311.08430 *Meta признана экстремистской организацией в России
🤖Есть хорошие способы лишить ML-инженеров работы, кроме LLM – например, AutoML. Сегодняшний пост про Rankitect – Neural Architecture Search (NAS), способный автоматически находить архитектуру ранжирующей модели с заданным количеством FLOPs. Причем точность этой модели будет даже немного выше, чем точность модели, придуманной ML-инженерами мирового уровня (по мнению самих инженеров).

С высоты птичьего полета система работает так:
1. Создаём supernet – огромный ранкер, который объединяет в себе все возможные варианты ранкеров поменьше. Блоки supernet включают в себя трансформации признаков, взаимодействия между признаками и связи с другими блоками (см. картинку).
2. Даём возможность отключать разные куски supernet с помощью масок. В зависимости от того, какие маски включены, получается конкретная реализация subnet-ранкера.
3. Используем NAS-алгоритм, позволяющий выбрать лучшую (с точки зрения метрики качества) конфигурацию масок при заданном ограничении FLOPs.
4. Применяем к supernet найденную лучшую маску и получаем искомый ранкер.

Авторы пробовали три алгоритма NAS:
- Sampling-based метод, основанный на Neural Predictor, умно семплирует subnet-кандидаты и выбирает лучшие по метрике.
- One-shot NAS with Reinforcement Learning параллельно с ранкером обучает RL-ного агента, который семплирует маски. Награда агенту – качество ранкера, измеренное на батче. Этот вариант показал себя как оптимальный с точки зрения времени обучения и качества полученных моделей.
- DNAS – маски заменяются на дифференцируемые функции с помощью Gumbel-Softmax трюка и обучаются вместе с моделью (вау).

В экспериментах Rankitect конкурировал с продакшн-моделью и новой архитектурой DHEN, которую инженеры мирового уровня придумали, пока авторы статьи пилили NAS. В итоге у Rankitect и DHEN получилось победить бейзлайн, но соотношение качества и FLOPs оказалось примерно одинаковым. Во втором эксперименте авторы использовали свой фреймворк, чтобы улучшить уже DHEN. В течение 4 дней на кластере из 64 GPU настраивались только размеры слоев DHEN. В итоге получилось превзойти базовую конфигурацию на 0,02% по метрике качества при том же FLOPs.

Статью стоит почитать: предложенный подход выглядит интересно и технологично. Но применять его имеет смысл, когда уже собраны все низко висящие фрукты, средне висящие фрукты, и остался только последний банан на самой верхушке пальмы 🌴.
10👏7👍3
Media is too big
VIEW IN TELEGRAM
«Быть или не быть?», «А судьи кто?» и другие экзистенциальные вопросы будут в следующих выпусках, а сегодня — про то, как и зачем векторизовать посты. Дима Решетников на открытии офиса VK в Минске в своём выступлении рассказал, как мы делаем это в ОК. Смотрим запись.
🔥8👏42
☁️☁️☁️ Миша Марюфич написал отличную статью про то, как мы в ОК мигрировали наш огромный кластер Hadoop в облако. Не всё шло по плану, но в итоге получилось всё так, как задумывали. К чтению предлагаем трек от нашего музыкального рекоммендера: Браво — Дорога в облака.
🔥15👍4👏1
🎩Мы заметили, что если список авторов статьи занимает столько же места, сколько и abstract, то в ней расскажут про обучение на кластере GPU, который мог бы обогреть пару городов за полярным кругом. Именно так обстоят дела в пропитанной духом богатства статье Software-Hardware Co-design for Fast and Scalable Training of Deep Learning Recommendation Models. Мы обсудим её на ридинг-группе 1 февраля в 18:00. Ведущим будет Роман Болозовский, ML-инженер OK.

Ссылка на зум
🔥125👨‍💻31🆒1
Media is too big
VIEW IN TELEGRAM
🎬Запись ридинг-группы от 1 февраля. Роман Болозовский рассказал об обучении огромных рекомендательных нейросетей.
3
Вот и настал момент, ради которого создавался этот канал (на самом деле нет): мы ищем ML-инженера в команду, которая занимается развитием сервисов дискавери (рекомендации неподписного контента). Очень хочется найти кого-то, кто понимает принципы построения рекомендательных систем и умеет в бигдату. Надо будет разрабатывать новые и совершенствовать старые рекомендательные модели, реализовывать батчевые и стриминговые (это важно!) пайплайны для сбора признаков, обработки данных и инференса. Из очень желательного: Java/Scala, Hadoop, Spark, Apache Samza или Spark Streaming, Kafka, классический ML. У нас есть много-много данных для анализа, большой кластер в облаке с GPU, налаженные процессы по сбору данных, обучению и инференсу моделей, проведению А/В-экспериментов.

Ссылка на полный текст вакансии: https://spb.hh.ru/vacancy/92823789

Откликнуться можно по ссылке выше, а задать вопросы (и тоже откликнуться) — в личке https://t.iss.one/nriabykh
👍13🔥62
🤖Сергей Шнуров поёт: «Мамба, мамба – $#ямба». На ридинг-группе 15 февраля попробуем подтвердить или опровергнуть это утверждение. Представлять статью Mamba: Linear-Time Sequence Modeling with Selective State Spaces будет Андрей Кузнецов, директор по ML ОК. Ждём всех желающих в 18:00.

Зум: ссылка на звонок
😁19🔥7👍4
🧙На ридинг-группе ОК 29 февраля гостевой доклад. Виталий Занкин из института Skoltech представит свою статью Sparse online variational Bayesian regression. Приглашаем всех неравнодушных к байесовскому подходу послушать Виталия в 18:00.

Зум: https://us05web.zoom.us/j/87668326572?pwd=oObrhSa4idAGnKpg2YCIdFPr0aZfHl.1

Meeting ID: 876 6832 6572
Passcode: 31337
🔥11🆒1
Media is too big
VIEW IN TELEGRAM
🤟Запись ридинг-группы от 29 февраля 2024 года. Виталий Занкин рассказал про онлайн обучение байесовской регрессии.
8
ML — это ОК
🤖Сергей Шнуров поёт: «Мамба, мамба – $#ямба». На ридинг-группе 15 февраля попробуем подтвердить или опровергнуть это утверждение. Представлять статью Mamba: Linear-Time Sequence Modeling with Selective State Spaces будет Андрей Кузнецов, директор по ML ОК.…
🐍14 марта в 18:00 Андрей Кузнецов проведет встречу ридинг-группы, на которой обсудим новую языковую модель – Mamba. Если хотите подготовиться ко встрече, рекомендуем заранее посмотреть вводные статьи про Mamba и State Space Models, например:
- A Visual Guide to Mamba and State Space Models
- Mamba: The Easy Way
Ждём вас в четверг!

Зум: ссылка
Идентификатор конференции: 762 7685 4669
Код доступа: okrg
🔥14👍1
Media is too big
VIEW IN TELEGRAM
Запись РГ про Mamba
🔥22👏2
💯Вам нравится наша ридинг-группа? Грустите, что она бывает только раз в две недели? Советуем обратить внимание на семинар по кластеризации текста с помощью LLM, который организует VK Lab. Ребята занимаются наукой, поэтому будет интересно и глубоко.

Подключайтесь к семинару 19 марта в 19:00. Его проведёт старший программист-разработчик департамента AI, контентных и рекомендательных сервисов VK Антон Земеров. Он разберёт три разных подхода к кластеризации текста на основе LLM. Вы узнаете, какие проблемы они решают и в каких ситуациях их лучше всего использовать.

Антон будет опираться на статьи, рекомендуем заранее с ними познакомиться:
Goal-Driven Explainable Clustering via Language Descriptions
ClusterLLM: Large Language Models as a Guide for Text Clustering
Large Language Models Enable Few-Shot Clustering

Посмотреть трансляцию и задать вопросы можно будет по ссылке: https://vk.com/lab?w=wall-187376020_364
🔥13🥰21