Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Новый уровень ML-персонализации Lamoda: Как мы ...

Новый уровень ML-персонализации Lamoda: Как мы усилили ее в каталоге и перенесли на другие продукты

Lamoda Tech

October 09, 2024
Tweet

More Decks by Lamoda Tech

Other Decks in Programming

Transcript

  1. Новый уровень ML- персонализации Lamoda: Как мы усилили ее в

    каталоге и перенесли на другие продукты Team leader of DS team Ranking & Search Дана Злочевская
  2. 2 17 млн MAU > 600.000 товаров 500 миллисекунд на

    ответ (95-й перцентиль) 1000 RPS в сервис каталога Lamoda – одна из крупнейших e-commerce компаний в России в сфере fashion & lifestyle
  3. Как мы внедрили онлайн персонализацию ранжирования и поиска в каталоге

    1 Что нужно, чтобы переиспользовать этот опыт в персонализации других продуктов Agenda 2 3 Как мы перенесли онлайн персонализацию в рекомендации «С этим товаром покупают»
  4. 5 Продуктовые сценарии в каталоге • Фильтры: ◦ по поисковому

    запросу ◦ по категории ◦ по размеру/бренду/цвету/… • Сортировка: ◦ «Подобрано для вас» ◦ по цене/скидкам/новинкам • Пагинация: возможность посмотреть тысячи товаров ~8M авторизованных пользователей ~600К доступных товаров 95% пользователей смотрят < 120 товаров
  5. 6 Эволюция ранжирования в Lamoda 2017 2018-2019 2020-2021 2022-2023 2024-2025

    Ручное управление и бизнес-правила Формула на данных ML подход ML персонализация под пользователя Развитие персонализации Отсутствие персонализации 1-to-many (на уровне сегментов) 1-to-1 (персонализация под каждого клиента)
  6. Почему именно онлайн персонализация? Оффлайн персонализация [модель запускается заранее в

    оффлайне и сохраняет результат] Онлайн персонализация [модель запускается в момент запроса пользователя]
  7. 8 Почему именно онлайн персонализация? Оффлайн персонализация [модель запускается заранее

    в оффлайне и сохраняет результат] Онлайн персонализация [модель запускается в момент запроса пользователя] Нет ограничения на время инференса модели Скорость получения ответа пользователем
  8. 9 Почему именно онлайн персонализация? Оффлайн персонализация [модель запускается заранее

    в оффлайне и сохраняет результат] Онлайн персонализация [модель запускается в момент запроса пользователя] Нет ограничения на время инференса модели Скорость получения ответа пользователем Много ресурсов для расчета и хранения результатов модели Возможность учесть горячий контекст пользователя
  9. 10 Почему именно онлайн персонализация? Оффлайн персонализация [модель запускается заранее

    в оффлайне и сохраняет результат] Онлайн персонализация [модель запускается в момент запроса пользователя] Нет ограничения на время инференса модели Скорость получения ответа пользователем Много ресурсов для расчета и хранения результатов модели Возможность учесть горячий контекст пользователя
  10. 11 Ранжирование в Lamoda Все товары ~10000 товаров Топ товаров

    Уровень 1. Отбор кандидатов Уровень 2. Тяжелое ранжирование в момент запроса с учетом контекста
  11. 12 Ранжирование в Lamoda Все товары ~10000 товаров Топ товаров

    Уровень 1. Отбор кандидатов: Популярное + Легкое перс ранжирование на function_score Уровень 2. Тяжелое ранжирование в момент запроса с учетом контекста
  12. 13 Ранжирование в Lamoda Все товары ~10000 товаров Топ товаров

    Уровень 1. Отбор кандидатов: Популярное + Легкое перс ранжирование на function_score Уровень 2. Тяжелое ранжирование в момент запроса с учетом контекста
  13. 14 Варианты реализации для модели 2-го уровня Ранжирование 100 -

    10.000 товаров Elasticsearch LTR Plugin + Решение “из коробки” - Нужна экспертиза в Java - Недостаточно гибко (разнообразие, пост-процессинг)
  14. 15 Варианты реализации для модели 2-го уровня Ранжирование 100 -

    10.000 товаров Сервис Reranker Elasticsearch LTR Plugin + Решение “из коробки” - Нужна экспертиза в Java - Недостаточно гибко (разнообразие, пост-процессинг) + Есть экспертиза в Golang + Гибко (user-item фичи, CatBoost, пост-процессинг) + Можно использовать не только с ElasticSearch кандидатами - Требуется собственная разработка и поддержка
  15. 18 Архитектура онлайн-части персонализации Service Catalog Service Reranker - Вычисление

    парных user-item признаков - Инференс CatBoost модели Топ-N кандидатов 1 2 Фильтрация + 1 уровень: генерация кандидатов
  16. 19 Архитектура онлайн-части персонализации Service Catalog Service Reranker - Персональные

    предпочтения - Товарные признаки для каждого кандидата - Вычисление парных user-item признаков - Инференс CatBoost модели Топ-N кандидатов Обновление 1 раз в сутки 1 2 Фильтрация + 1 уровень: генерация кандидатов
  17. 20 Архитектура онлайн-части персонализации Service Catalog Service Reranker - Персональные

    предпочтения - Товарные признаки для каждого кандидата - Вычисление парных user-item признаков - Инференс CatBoost модели Топ-N кандидатов Обновление 1 раз в сутки 1 2 Фильтрация + 1 уровень: генерация кандидатов Batch Features Calculation Model training
  18. • Датасет: ◦ features(item, user_id) – полный набор контекстных, персональных,

    товарных и кросс признаков • Логика обучения модели: ◦ Обучаемся на показах, целевое действие: добавление в корзину ◦ Офлайн-метрика: NDCG@60, Модель: CatBoost, Loss: YetiRank Обучение модели 2-го уровня 21
  19. • Датасет: ◦ features(item, user_id) – полный набор контекстных, персональных,

    товарных и кросс признаков • Логика обучения модели: ◦ Обучаемся на показах, целевое действие: добавление в корзину ◦ Офлайн-метрика: NDCG@60, Модель: CatBoost, Loss: YetiRank • Feature importance: Обучение модели 2-го уровня 15 5 5 12 Предпочтение к бренду 4 8 CR из показа в добавление в корзину (60 дней) Предпочтение к цвету CR из показа в клик (60 дней) Предпочтение к размеру Цена товара 22
  20. Персонализация глазами пользователя 23 Базовое ранжирование (после 1-го уровня) Персональное

    ранжирование (после 2-го уровня) Размер: XS Бренды: Цвета: Предпочтения
  21. 24 Результаты экспериментов Эксперимент 1 С моделью 2-го уровня (топ-150

    кандидатов) - Добавления в корзину: +3% - Покупки: +2%
  22. 25 Результаты экспериментов Эксперимент 1 С моделью 2-го уровня (топ-150

    кандидатов) - Добавления в корзину: +1% - Покупки: +1% Эксперимент 2 С моделью 2-го уровня (топ-300 кандидатов + рост покрытия) - Добавления в корзину: +3% - Покупки: +2%
  23. Входные данные Объекты персонализации Данные для обучения Каталог Индекс товаров

    в ElasticSearch Рекомендации на странице товара Кандидаты из моделей первого уровня Рекламная платформа Индекс рекламных товаров в ElasticSearch
  24. Входные данные Объекты персонализации Данные для обучения Каталог Индекс товаров

    в ElasticSearch • Пользователь • Товар • Контекст Рекомендации на странице товара Кандидаты из моделей первого уровня • Пользователь • Товар • Контекст + Якорный sku Рекламная платформа Индекс рекламных товаров в ElasticSearch • Пользователь • Товар • Контекст + Инфо по рекламодателю
  25. Входные данные Объекты персонализации Данные для обучения Каталог Индекс товаров

    в ElasticSearch • Пользователь • Товар • Контекст Показы в каталоге Рекомендации на странице товара Кандидаты из моделей первого уровня • Пользователь • Товар • Контекст + Якорный sku Показы в рекомендациях Рекламная платформа Индекс рекламных товаров в ElasticSearch • Пользователь • Товар • Контекст + Инфо по рекламодателю Показы в рекламной платформе/каталоге
  26. Входные данные Объекты персонализации Данные для обучения Каталог Индекс товаров

    в ElasticSearch • Пользователь • Товар • Контекст Показы в каталоге Рекомендации на странице товара Кандидаты из моделей первого уровня + Пользователь + Товар + Контекст + Якорный sku Показы в рекомендациях Рекламная платформа Индекс рекламных товаров в ElasticSearch • Пользователь • Товар • Контекст + Инфо по рекламодателю Показы в рекламной платформе/каталоге Можно параметризовать подход к онлайн персонализации!
  27. Единый подход к онлайн персонализации Сократим T2M внедрения персонализации Избежим

    дублирования кода, будем шарить экспертизу между командами Сможем внедрять новые фичи персонализации одновременно
  28. Единый подход к онлайн персонализации Универсальный ML пайплайн обучения Универсальный

    сервис инференса модели Пайплайн подготовки данных Пайплайн обучения модели • Python-библиотека и инструмент для единообразного конфигурирования и запуска ML-пайплайнов с обучением • Единый формат хранения событий кликстрима • Единый формат хранения фичей / трейн датасетов
  29. Единый подход к онлайн персонализации Универсальный ML пайплайн обучения Универсальный

    сервис инференса модели Пайплайн подготовки данных Пайплайн обучения модели
  30. Единый подход к онлайн персонализации Универсальный ML пайплайн обучения Дублирование

    кода в каждой команде Универсальный сервис инференса модели
  31. Единый подход к онлайн персонализации Универсальный ML пайплайн обучения Дублирование

    кода в каждой команде API создания и управления реранкера (template сервиса) Универсальный сервис инференса модели
  32. Единый подход к онлайн персонализации Универсальный ML пайплайн обучения Дублирование

    кода в каждой команде API создания и управления реранкера (template сервиса) API Библиотека на go с методами реранкера Универсальный сервис инференса модели
  33. Сервис онлайн персонализации под капотом Загрузка конфигураций и модели в

    кэш Бинарь модели Конфиг с описанием источников фичей и их преобразований etcd S3 Актуальная версия модели на данный момент
  34. Сервис онлайн персонализации под капотом Загрузка конфигураций и модели в

    кэш Запрос источников данных Параллельно Aerospike Redis Postgres Бинарь модели Конфиг с описанием источников фичей и их преобразований etcd S3 Актуальная версия модели на данный момент
  35. Сервис онлайн персонализации под капотом Загрузка конфигураций и модели в

    кэш Запрос источников данных Формирование комбо-фичей Параллельно Aerospike Redis Postgres Бинарь модели Конфиг с описанием источников фичей и их преобразований etcd S3 Актуальная версия модели на данный момент
  36. Сервис онлайн персонализации под капотом Загрузка конфигураций и модели в

    кэш Запрос источников данных Формирование комбо-фичей Сортировка Запуск модели Параллельно Aerospike Redis Postgres Бинарь модели Конфиг с описанием источников фичей и их преобразований etcd S3 Актуальная версия модели на данный момент
  37. Сервис онлайн персонализации под капотом Загрузка конфигураций и модели в

    кэш Запрос источников данных Формирование комбо-фичей Сортировка Запуск модели Параллельно Aerospike Redis Postgres Бинарь модели Конфиг с описанием источников фичей и их преобразований etcd S3 Актуальная версия модели на данный момент model_loader.go data_source_loader.go combiner.go runner.go
  38. Сервис онлайн персонализации под капотом Загрузка конфигураций и модели в

    кэш Запрос источников данных Формирование комбо-фичей Сортировка Запуск модели Параллельно Aerospike Redis Postgres Бинарь модели Конфиг с описанием источников фичей и их преобразований etcd S3 Актуальная версия модели на данный момент model_loader.go data_source_loader.go combiner.go runner.go SLA: 250 мс, 300 RPS (выдерживаем 1000+ RPS)
  39. Сервис онлайн персонализации под капотом Загрузка конфигураций и модели в

    кэш Запрос источников данных Формирование комбо-фичей Сортировка Запуск модели Параллельно Aerospike Redis Postgres Бинарь модели Конфиг с описанием источников фичей и их преобразований etcd S3 Актуальная версия модели на данный момент model_loader.go data_source_loader.go combiner.go runner.go SLA: 250 мс, 300 RPS (выдерживаем 1000+ RPS) Масштабирование: - По запросам - По кандидатам - По фичам
  40. Сервис онлайн персонализации под капотом Загрузка конфигураций и модели в

    кэш Запрос источников данных Формирование комбо-фичей Сортировка Запуск модели Параллельно Aerospike Redis Postgres Бинарь модели Конфиг с описанием источников фичей и их преобразований etcd S3 Актуальная версия модели на данный момент model_loader.go data_source_loader.go combiner.go runner.go Асинхронная отправка логов работы Диверсификация
  41. 51 Формирование рекомендаций Все товары 200 товаров Уровень 1. Отбор

    Кандидатов Все очень похоже на ранжирование каталога, но есть якорный товар +
  42. 52 Отличия от персонализации в каталоге Датасет: Учимся на сессиях

    в полке рекомендаций Таргет: cart_add Фичи: По пользователю, товару кандидату + якорному товару и кросс взаимодействий Обучение ML модели + Добавился запрос атрибутов якорного товара + Добавился запрос парных товар-товар фичей Сервис онлайн инференса
  43. Добавляем модель 2-го уровня Шаг Оффлайн-метрика (NDCG@60) Только модель 1-го

    уровня baseline Берем модель 2-го уровня из ранжирования каталога -6,5% 54
  44. Добавляем модель 2-го уровня Шаг Оффлайн-метрика (NDCG@60) Только модель 1-го

    уровня baseline Берем модель 2-го уровня из ранжирования -6,5% Обучаем отдельную модель 2-го уровня на показах с полки рекомендаций +0,5% 55
  45. Добавляем модель 2-го уровня Шаг Оффлайн-метрика (NDCG@60) Только модель 1-го

    уровня baseline Берем модель 2-го уровня из ранжирования -6,5% Обучаем отдельную модель 2-го уровня на показах с полки рекомендаций +0,5% + добавляем факторы якорного товара +4,7% + добавляем парные факторы якорного товара и товара из рекомендация (счетчики совместных кликов/cart_add/order) +7,2% 56
  46. Рекомендации «С этим товаром покупают» Идет AB-тест 01 04 Дальнейшие

    шаги в персонализации Lamoda 59 Рекомендации «Похожие» проводим оффлайн эксперименты 02 Рекламные предложения товаров В планах 03
  47. Резюмируем • Персонализация в онлайне – работает и увеличивает как

    поведенческие, так и бизнес метрики • Отдельный сервис с моделью второго уровня – рекомендуем • Рекомендуем разрабатывать универсальные ML решения для разных продуктов – и со стороны DS, и со стороны DEV • Планируем персонализировать Lamoda дальше, не прощаемся :) 60