Зачем бариста земснаряд, а электромонтёру перкуссионный массажёр? Как так получается, что стоит только подумать об отпуске, как все баннеры предлагают путёвки в Дагестан? И почему после одного-единственного запроса о поворотниках для BMW ещё месяц продолжают крутиться объявления о покупке б/у запчастей? За всё это отвечает «Баннерная крутилка». Сервис обрабатывает 99% запросов всего за 200 миллисекунд, использует ML и серьёзно экономит ресурсы компании. И вот, как это всё работает.
Фильтрация объявлений
После отбора релевантные рекламные объявления поступают в «Баннерную крутилку». На первом этапе все они проходят фильтрацию. Например, рекламодатель ограничил возможность показа на определенных сайтах или же само объявление идёт с пометкой 18+.
Обработка документов
И дальше начинается самое интересное — обработка документов. Тут систему можно сравнить со скульптором, которому принесли огромную глыбу мрамора. Нужно отсечь всё лишнее. И пока глыба (наш массив объявлений) большая, действовать можно самыми простыми и «грубыми» инструментами.
Кластеризация и «ленивая материализация»
Все объекты в массиве разбиваются на кластеры. Иерархия такая: клиент → кампания → группа → баннер. На этом этапе крутилка работает с верхнеуровневыми элементами. Так можно сразу отсекать неподходящие кластеры, а это большой объём данных.
Далее «Баннерная крутилка» идёт по иерархии вниз, убирая из массива всё больше и больше неподходящих объявлений, пока не останутся наиболее релевантные. Здесь применяется так называемая «ленивая материализация объектов». То есть все объявления ранжируются по какому-то значению и система движется по получившемуся списку в порядке убывания приоритета. Так менее подходящие документы не попадают в итоговую подборку, с которой работают более «тяжелые» модели. И это тоже экономия ресурсов.
При этом не обязательно взаимодействовать со всем объектом/объявлением. Достаточно посмотреть его атрибуты. Например, если есть ограничения по возрасту или домену, мы просто сравниваем данный атрибут с белым/чёрным списком.
Наконец-то ИИ
И вот когда мы имеем готовый список самых релевантных объявлений, который, очевидно, гораздо меньше начального, можно запускать ML. Верхняя часть нейросети обрабатывает объявления, а нижняя — запросы потенциального кандидата. И только потом получившиеся результаты связываются в виде скалярного произведения. Так и происходит обучение таргета.
Далее система составляет топ, а кандидатов из нижней части убирает. И вот здесь уже можно применять тяжелые модели, которые делают инференс кандидатов. Так подбираются самые релевантные объявления по интересам пользователя.
Как модель ускоряют
Чтобы ускорить работу «Баннерной крутилки» и освободить ресурсы, используют шардирование. Объявления попадают в шарды по принципу shard=Id% NumberOfShards. То есть практически случайным образом. Так шардирование можно сделать более равномерным.
Разработчики Яндекса строят микросервисную архитектуру. А для перекладывания информации из одного сервиса в другой применяют протоколы Protobuf и Flatbuffers. Так сокращается время на сериализацию и десериализацию.
Текст составлен на основе доклада Артёма Ваншулина, руководителя разработки ранжирования в команде баннерной системы Яндекса.
Комментарии (5)
WinLin2
19.07.2024 04:14+5В последнее время яндекс-видео каждые 5 минут показывает по 4 рекламных ролика вместо 2. Можно ли с помощью этой технологии еще увеличить количество рекламмных показов до 8?
MikhailZakharov
19.07.2024 04:14+2Открыл в Яндекс Браузере поиск Яндекса
Ищешь товар
Переходишь по ссылке на Яндекс Маркет
Покупаешь товар, оплачивая привязанной к Маркету картой
Еще месяц "баннерная крутилка" показывает тебе товары которые ты искал в п.2
Вот бы там подкрутили что-то
Dolios
19.07.2024 04:14+1Спасибо за обращение! Подкрутили, теперь товар будет показываться еще 2 месяца!
T968
19.07.2024 04:14+1В применении ML есть иллюзия, что применение ИИ компенсирует недостаток естественного интеллекта сотрудников.
Но это не так. Применение ИИ наоборот, требует наличие существенного естественного интеллекта и опыта у сотрудников этот ИИ применяющим. И это основная "засада" в применении ИИ.
Ivnika
Двоякие ощущения, с одной стороны интересна механика, а с другой это как если рабам рассказывать как изготавливается плеть, чтобы нанести максимум "урона"