Привет! Меня зовут Кирилл, я руковожу группой ранжирования в рекламном движке. Наша команда занимается выбором наиболее релевантных баннеров на каждый пользовательский запрос. Для работы над этим проектом мне нужен разработчик с хорошим знанием C++, умением закапываться в детали и предлагать хорошие гипотезы.
Для отбора лучших баннеров под запрос используются многостадийное ранжирование, различные алгоритмы и сервисы для инференса ML-моделей: генеративные модели, нейросети на GPU/CPU, BERT, решающие деревья. На каждом этапе рассчитывается множество ML-моделей для сужения воронки баннеров. Затем на стадии аукционов формируются многобаннерные блоки и сравниваются друг с другом, чтобы определить победителя и отправить его на отрисовку пользователю.
Мы каждые полгода выкатываем изменения, которые увеличивают доход от рекламы, наши системы обрабатывают порядка миллиона RPS, а в наших инференс-сервисах прогоняется порядка 100 млн баннеров в секунду.
Разработка в движке — добавление новых стадий в аукционах, реализация алгоритмов наполнения блоков
Мы активно перерабатываем механику аукционов: внедряем новые архитектуры моделей, меняем подходы к аукционной амнистии, исследуем алгоритмы наполнения блоков, добавляем фичи, оптимизируем производительность.
Поддержка новых моделей для прогноза CPM — подготовка признаков, использование микросервисов для инференса
У нас есть проекты, связанные с сервисами инференса ML-моделей. Модели в разных сервисах рассчитываются параллельно, чтобы сократить критическое время выполнения. Каждый из сервисов оптимизирован для повышения пропускной способности.
Больше о бэкенде в Яндексе — в канале Yandex for Backend