Рекомендательные системы Ozon: эволюция от ANN к KNN на GPU
Команда рекомендательных систем Ozon объявила о значительном технологическом переходе от использования приближенного поиска ближайших соседей (ANN) к точному поиску K-ближайших соседей (KNN) с применением графических процессоров (GPU). Это решение направлено на максимизацию производительности аппаратного обеспечения без компромиссов в качестве рекомендаций, что особенно актуально для специалистов, работающих с рекомендательными системами, поисковыми алгоритмами или масштабными векторными пространствами.
В условиях российского рынка электронной коммерции, который обслуживает десятки миллионов пользователей и сотни миллионов товаров, каждый процент точности и каждый час обработки данных имеют критическое значение. Опыт Ozon демонстрирует, как отраслевые практики перехода от стандартных ANN-индексов к специализированным GPU-решениям для скоринга могут быть успешно адаптированы и масштабированы. Компания уже провела A/B-тестирование, подтверждающее эффективность нового подхода.
Обоснование выбора: почему не pgvector?
Один из часто задаваемых вопросов касается выбора между собственной реализацией и готовыми решениями, такими как pgvector. Хотя pgvector отлично справляется с генерацией кандидатов, например, поиском top-k ближайших элементов по косинусному расстоянию, команда Ozon приняла решение разработать собственное решение по нескольким причинам:
- Доступность: pgvector не всегда доступен во всех сегментах инфраструктуры, где необходимо функционирование системы памяти Ozon.
- Приоритет задачи: Генерация кандидатов, хотя и важна, не является самой ценной частью задачи для Ozon. Основная ценность заключается в более глубокой обработке и отборе, что требует специализированных подходов.
Таким образом, переход к точному KNN на GPU является стратегическим шагом для Ozon, позволяющим достичь максимальной точности и эффективности в своих рекомендательных системах, ориентированных на масштабные производственные нагрузки.
Интересное решение, хотя и вызывает вопросы. Переход на точный KNN на GPU, безусловно, звучит мощно с точки зрения точности, но каковы реальные затраты на поддержание такой инфраструктуры? Масштабирование GPU-кластеров для десятков миллионов пользователей может оказаться значительно дороже и сложнее в управлении, чем кажется на первый взгляд, особенно учитывая энергопотребление. Не всегда максимальная точность оправдывает экспоненциальный рост издержек.