Ускоряем кандидатогенерацию Рекламы Яндекса: три шага к потоковой обработке
Программный комитет ещё не принял решения по этому докладу
Целевая аудитория
Тезисы
На каждом рекламном запросе самая крупная рекомендательная система Яндекса сначала выбирает из большого числа доступных баннеров относительно небольшое множество подходящих кандидатов и только затем выполняет их дальнейшее ранжирование. Этот предварительный отбор называется кандидатогенерацией. Кандидатогенерация Рекламы Яндекса опирается на контент-систему, которая подготавливает данные для отбора и ранжирования рекламных баннеров на запросе. В production она работает с сотнями терабайт постоянно изменяющихся данных, поддерживает несколько сотен HNSW-индексов, множество KV-индексов и результаты примерно полутора сотен активных дообучающихся ML-моделей, потребляет десятки тысяч ядер, сотню GPU и работает с потоками данных в десятки Гб/с.
Мы перевели этот контур с долгих полных пересчётов на платформу потоковой обработки данных, одновременно сократив потребление CPU- и GPU-ресурсов. Раньше самые быстрые индексы генерировались 4.5 часа, а в худшем случае обновление индекса занимало более 12 часов. Теперь от события в рекламном runtime до построения затронутых индексов и доставки обновлений проходит менее 30 минут для всех индексов. На этом пути мы сделали три важных изменения:
- Перешли к поддержанию содержимого индексов дельтами;
- Перенесли инференс внутрь потокового графа, заменив обращения во внешний runtime pull-схемой;
- Передали распределение вычислительных ресурсов потоковой платформе.
О причинах, проблемах и выигрыше от этих изменений и пойдёт речь в докладе.
Руководитель бригады инфраструктуры контент системы БК Рекламных технологий Яндекса. Имеет широкий опыт в разработке и эксплуатации высоконагруженных сервисов.
Видео
Другие доклады секции
Архитектура и масштабируемость