ML — это ОК
💀Быть или не быть? Тварь ли я дрожащая или право имею? LLM – запоминалка n-грамм или AI? Эти вечные вопросы не покидали нас весь 2023 год. И если с первыми двумя более-менее понятно, то третий требует дополнительных пояснений. На предновогодней ридинг-группе…
Media is too big
VIEW IN TELEGRAM
Запись RG от 28.12.2023. Андрей Кузнецов разбирал статью Language models represent space and time
👏9🔥5
ML — это ОК
🎄В 2023 году мы делились знаниями больше, чем в любой предыдущий год. Вспоминаем наши выступления, митапы, конференции, статьи и блоги.
Выступления
ML Инфраструктура с настоящим хайлоадом Андрей Кузнецов, Code Fest в Новосибирске
Рекомендации друзей в «Одноклассниках» Коля Анохин, RecSys Meetup в Нижнем Новгороде
Как мы учим модели и обрабатываем данные для рекомендаций Евгений Кувшинов, VK Education Talks в Москве
ML в Одноклассниках Сергей Малышев, выступление в MADE в Москве
Less is More Даша Никанорова, ML Tech Talks (наш митап!) в Санкт-Петербурге
Многообразия, графы и машинное обучение Александр Тараканов, Dark Geometry Fest в Москве
Hadoop в Облаке — это ОК Михаил Марюфич, SmartData в Москве
Пишем рекомендательную систему музыки на Java Андрей Кузнецов, Joker в Санкт-Петербурге
Hadoop в Облаке: история миграции сотен петабайт Михаил Марюфич, Highload++ в Сколково
Large-scale tensor decomposition with spark Сергей Ермилов, Конференция «Рекомендательные системы в исследованиях и индустриальных приложениях» в Москве
Item2vec: как и зачем векторизовать посты и пользователей в социальной сети Дмитрий Решетников, VK IT Point в Минске
Применение методов машинного обучения для вычисления собственных функций дифференциальных операторов Александр Тараканов, семинар HDI Lab в Москве
Статьи
Обзор современных подходов персонализации диффузионных нейронных сетей
Итоги RecSys 2023: разбор знаковых статей прошедшей конференции. Часть 1
Итоги RecSys 2023: разбор знаковых статей прошедшей конференции. Часть 2
Блог
За пол года, что существует наш канал, мы провели 11 встреч ридинг-группы, разобрали 21 статью, например, статьи про Llama 2, HyperDreamBooth. А ещё провели эпический разбор Recsys 2023 в двух частях, на котором выступали авторы статей с конференции.
Это очень много для команды из тридцати человек, а ведь мы ещё и работаем: делаем рекомендации, обучаем модели классификации контента, анализируем поведение пользователей, заводим ML-модели в продакшн и запускаем A/B-эксперименты. В следующем году мы не собираемся останавливаться! Будем разбираться с тем, что нам интересно, и делиться с вами результатами. ML-команда ОК поздравляет вас с наступающим 2024 годом! 🎁
ML Инфраструктура с настоящим хайлоадом Андрей Кузнецов, Code Fest в Новосибирске
Рекомендации друзей в «Одноклассниках» Коля Анохин, RecSys Meetup в Нижнем Новгороде
Как мы учим модели и обрабатываем данные для рекомендаций Евгений Кувшинов, VK Education Talks в Москве
ML в Одноклассниках Сергей Малышев, выступление в MADE в Москве
Less is More Даша Никанорова, ML Tech Talks (наш митап!) в Санкт-Петербурге
Многообразия, графы и машинное обучение Александр Тараканов, Dark Geometry Fest в Москве
Hadoop в Облаке — это ОК Михаил Марюфич, SmartData в Москве
Пишем рекомендательную систему музыки на Java Андрей Кузнецов, Joker в Санкт-Петербурге
Hadoop в Облаке: история миграции сотен петабайт Михаил Марюфич, Highload++ в Сколково
Large-scale tensor decomposition with spark Сергей Ермилов, Конференция «Рекомендательные системы в исследованиях и индустриальных приложениях» в Москве
Item2vec: как и зачем векторизовать посты и пользователей в социальной сети Дмитрий Решетников, VK IT Point в Минске
Применение методов машинного обучения для вычисления собственных функций дифференциальных операторов Александр Тараканов, семинар HDI Lab в Москве
Статьи
Обзор современных подходов персонализации диффузионных нейронных сетей
Итоги RecSys 2023: разбор знаковых статей прошедшей конференции. Часть 1
Итоги RecSys 2023: разбор знаковых статей прошедшей конференции. Часть 2
Блог
За пол года, что существует наш канал, мы провели 11 встреч ридинг-группы, разобрали 21 статью, например, статьи про Llama 2, HyperDreamBooth. А ещё провели эпический разбор Recsys 2023 в двух частях, на котором выступали авторы статей с конференции.
Это очень много для команды из тридцати человек, а ведь мы ещё и работаем: делаем рекомендации, обучаем модели классификации контента, анализируем поведение пользователей, заводим ML-модели в продакшн и запускаем A/B-эксперименты. В следующем году мы не собираемся останавливаться! Будем разбираться с тем, что нам интересно, и делиться с вами результатами. ML-команда ОК поздравляет вас с наступающим 2024 годом! 🎁
❤22🔥8🎉6
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, эта отлично написана: авторы рассказывают про мотивацию, результаты экспериментов и обсуждают гипотезы, которые их объясняют. Мы советуем почитать её тем, кто работает над задачей ранжирования в продакшн рекомендерах.
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
Зум:
https://us05web.zoom.us/j/86918599487?pwd=c4NIvIDdHzGLaaHAoOwmBHD1jpFTmr.1
👍11🔥6✍2
🌅 Специально для подписчиков публикуем запись аффирмаций на построение стабильной ML-платформы, которую по ошибке редактора назвали подкастом.
В этом выпуске можно найти ответы на такие важные вопросы, как:
- на какой земле должен стоять ML-инженер;
- в чём мотивация и сложность перехода из ML в инфраструктуру (не в терминах О-большое);
- как убедить бизнес инвестировать в построение ML-платформы, не применяя насилие (кроме психологического).
Ну, и немного про инструменты, инфраструктуру данных, платформу А/Б и зоны ответственности в современной ML-разработке.
В этом выпуске можно найти ответы на такие важные вопросы, как:
- на какой земле должен стоять ML-инженер;
- в чём мотивация и сложность перехода из ML в инфраструктуру (не в терминах О-большое);
- как убедить бизнес инвестировать в построение ML-платформы, не применяя насилие (кроме психологического).
Ну, и немного про инструменты, инфраструктуру данных, платформу А/Б и зоны ответственности в современной ML-разработке.
YouTube
[I'ML] Инфраструктура & MLOps
Подробнее о конференции IML: https://jrg.su/1drGPM
— —
Не каждый инженер согласится строить ML-инфраструктуру и проводить непредсказуемые эксперименты. Но кто-то должен этим заниматься. Говорим об ML-инженерах, которые выбирают путь работы с инфраструктурой…
— —
Не каждый инженер согласится строить ML-инфраструктуру и проводить непредсказуемые эксперименты. Но кто-то должен этим заниматься. Говорим об ML-инженерах, которые выбирают путь работы с инфраструктурой…
🔥26😁2❤1👍1
RANKITECT: RANKING ARCHITECTURE SEARCH BATTLING WORLD-CLASS ENGINEERS AT META* SCALE
https://arxiv.org/abs/2311.08430
*Meta признана экстремистской организацией в России
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.
Статью стоит почитать: предложенный подход выглядит интересно и технологично. Но применять его имеет смысл, когда уже собраны все низко висящие фрукты, средне висящие фрукты, и остался только последний банан на самой верхушке пальмы 🌴.
С высоты птичьего полета система работает так:
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
ML — это ОК
❄️На первой в этом году ридинг-группе ОК обсудим STRec — рекомендательный трансформер с разреженным вниманием. Авторам статьи удалось сократить время инференса стандартного SASRec вдвое, а потребление памяти — на 70%. Ведущим будет Марк Шерман, младший разработчик…
Media is too big
VIEW IN TELEGRAM
⚡️Запись ридинг-группы от 18 января 2024. Марк Шерман рассказал про ускорение рекомендательных трансформеров
🔥12👍3❤1
Media is too big
VIEW IN TELEGRAM
«Быть или не быть?», «А судьи кто?» и другие экзистенциальные вопросы будут в следующих выпусках, а сегодня — про то, как и зачем векторизовать посты. Дима Решетников на открытии офиса VK в Минске в своём выступлении рассказал, как мы делаем это в ОК. Смотрим запись.
🔥8👏4❤2
☁️☁️☁️ Миша Марюфич написал отличную статью про то, как мы в ОК мигрировали наш огромный кластер Hadoop в облако. Не всё шло по плану, но в итоге получилось всё так, как задумывали. К чтению предлагаем трек от нашего музыкального рекоммендера: Браво — Дорога в облака.
Хабр
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.
Ссылка на зум
Ссылка на зум
🔥12✍5👨💻3❤1🆒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
Ссылка на полный текст вакансии: https://spb.hh.ru/vacancy/92823789
Откликнуться можно по ссылке выше, а задать вопросы (и тоже откликнуться) — в личке https://t.iss.one/nriabykh
👍13🔥6❤2
🤖Сергей Шнуров поёт: «Мамба, мамба – $#ямба». На ридинг-группе 15 февраля попробуем подтвердить или опровергнуть это утверждение. Представлять статью Mamba: Linear-Time Sequence Modeling with Selective State Spaces будет Андрей Кузнецов, директор по ML ОК. Ждём всех желающих в 18:00.
Зум: ссылка на звонок
Зум: ссылка на звонок
😁19🔥7👍4
ML — это ОК
🤖Сергей Шнуров поёт: «Мамба, мамба – $#ямба». На ридинг-группе 15 февраля попробуем подтвердить или опровергнуть это утверждение. Представлять статью Mamba: Linear-Time Sequence Modeling with Selective State Spaces будет Андрей Кузнецов, директор по ML ОК.…
⚡️Сегодняшняя ридинг-группа переносится на 14 марта по причинам, которые мы хотели бы оставить в тайне.
🤔10✍7👨💻2🙈2
🧙На ридинг-группе ОК 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
Зум: https://us05web.zoom.us/j/87668326572?pwd=oObrhSa4idAGnKpg2YCIdFPr0aZfHl.1
Meeting ID: 876 6832 6572
Passcode: 31337
🔥11🆒1