Ускорили расчёт кандидатов для рекомендательной системы с 30 часов до нескольких минут
Наша рекомендательная система не просто находит подходящие товары среди сотен миллионов кандидатов. Она учитывает наличие, историю просмотров, разнообразие рекомендаций… Множество условий.
Раньше мы использовали двухэтапный подход: 1) ANN-поиск находил ближайших кандидатов; 2) отдельные Spark-задачи применяли к ним фильтры и бизнес-логику.
В статье рассказываем, почему решили отказаться от этой схемы и перенесли поиск и фильтрацию на GPU.
Если вкратце: иногда задача становится проще, а результат эффективнее, если не придумывать сложный способ сократить работу, а позволить современному железу сделать всю работу целиком.
Мы позволили, и в итоге:
⚫️расчёт рекомендаций для самых активных пользователей сократился с десятков часов до нескольких минут;
⚫️удалось освободить несколько десятков машин Spark;
⚫️рекомендации стали быстрее учитывать изменения в поведении пользователей;
⚫️в A/B-тестах выросли продуктовые метрики рекомендаций.
Как реализовали подход на GPU, какие оптимизации позволили сделать полный перебор практически применимым, во что превратилась архитектура системы и какие результаты получили в экспериментах — всё это тоже есть в статье.
#ozontech_habr #ML #bigdata
Post #2244
9.4K

- ⚡ 22
- ✍ 4
- 👍 2