​Встреча была разбита на шесть блоков, 4 доклада, один перерыв и афтерпати с разработчиками тех самых "умных технологий". Открывал этот вечер Иван Зимин с вводной частью и докладом - "Как превратить алгоритмы в деньги".

Как превратить алгоритмы в деньги

Иван Зимин
Яндекс

C отличием окончил факультет информатики и систем управления МГТУ им. Н.Э. Баумана. С 2007 года занимается разработкой, в сфере профессиональных интересов — машинное обучение, теория игр и теория аукционов. С 2015 года работает в Яндексе.

Иван рассказал зачем Яндексу нужна реклама, зачем реклама нужна рекламодателям, конечному потребителю и почему реклама это хорошо?!
Если очень коротко то вот основные тезисы:

  • Реклама нужна Яндексу, потому что это основной источник дохода, позволяющий компании существовать, расти и развиваться.
  • Реклама нужна рекламодателям, потому что она помогает найти потребителя (кэп).
  • Реклама нужна потребителю, потому что: во-первых, позволяет быстрее найти нужный товар, а во-вторых, что многим не очевидно, реклама позволяет не слабо экономить в сети, да! На рекламные бюджеты содержится масса бесплатных сервисов и контента, но мы же знаем, что ничего бесплатного в этом мире не бывает, если для тебя что-то бесплатно, значит это оплатил кто-то другой.
  • Ну и последнее - реклама это хорошо, она делает мир лучше! От части это так, ведь она решает вышеперечисленные задачи, создает конкуренцию на рынке и еще много чего делает.

Далее Иван наглядно показал из чего состоит рекламная платформа Яндекса и как в ней взаимодействуют отдельные компоненты. Конечно схема сильно упрощена, на фото ее часть, более того на нем запечатлен только один блок взаимосвязей, по докладу их было куда больше.

схема компонентов рекламной инфраструктуры Яндекс

Иван детально остановился на каждом компоненте системы, пойдем слева направо:

  • Директ - Директ в представлении не нуждается, там мы можем запустить рекламную кампанию, создав объявления.
  • Метрика - тоже всем известный инструмент аналитики.
  • Биллинг - куда же без биллинга, ведь это деньги!
  • Статистика - не путать с метрикой, у рекламной инфраструктуры Яндекс своя статистика.
  • ML - Machine Learning, машинное обучение, в Яндексе давно используется искусственный интеллект помогающий людям и улучшающий нашу жизнь.
  • Крипта - это компонент персонализации "Большой брат", как раз он скажет рекламной сети что вы мужчина 27-ми лет и интересуетесь автомобилями белого цвета.
  • Контент система - система в которую отправляют данные все сервисы, а на выход отдается стандартизированная информация.
  • Показывающий кластер - система отображения контекстной рекламы.
  • Транспорт - система доставки информации, ведь между компонентами и сервисами системы нужно быстро и надежно передавать данные.
  • Антифрод - Firewall на страже Яндекса, он отлавливает ботов, кликеров, роботов, парсеров и все, что можно приписать к "нечестной игре".
  • Медийка - система показа медийной рекламы.
  • RTB - Real time bidding - система определяющая какой тип рекламы сейчас лучше показать : медийку или контекст.

Каждый из компонентов системы связан друг с другом, ниже приведена модель взаимодействия компонентов при подаче и показе рекламного объявления.

схема передачи данных между компонентами рекламной инфраструктуры Яндекс

Роботам вход воспрещён

Дмитрий Черкасов
Яндекс

Ежедневно к сервисам Яндекса обращаются сотни миллионов пользователей. Заметная их часть — роботы, то есть автоматические программы, использующие Яндекс для решения определённых задач. Не все роботы наносят прямой вред, но все так или иначе влияют на работу сервисов, потому что искажают сигналы от пользователей. Чтобы нейтрализовать это влияние, мы создали мощную систему защиты — антифрод — и развиваем её. Из доклада вы узнаете, что находится под капотом у системы, позволяющей обрабатывать сотни тысяч событий в секунду. Также мы поговорим о задачах, которые сейчас стоят перед командой разработчиков, и о том, как она планирует их решать.

Кто пользуется сервисами Яндекс? Хороший вопрос, ответ на него проиллюстрируем следующим фото.

схема компонентов рекламной инфраструктуры Яндекс

Как видно из изображения - есть три группы пользователей:

  1. Люди - самая многочисленная группа
  2. Роботы - автоматические системы
  3. Накрутчики - разновидность людей действующих по определенному алгоритму

Антифрод призван распознать роботов и накрутчиков в общей массе юзеров системы. Это необходимо для целого ряда вещей, к примеру нежелательную активность надо исключать из учета аналитических систем, накрутчиков и кликеров надо исключать из учета статистики Директа, не списывать с рекламодателя деньги и многое другое.

Общая схема потока логов активности юзеров выглядит примерно так

общая схема потока логов активности юзеров

Боты и роботы сильно мешают жить, они создают аномалии, флудят, обработка их запросов отнимает процессорное время, заставляют развивать Антифрод!

Дмитрий - "Раньше роботы были простыми, их легко было определить по небольшому числу факторов, но времена изменились, сейчас роботы стали настолько умными что их сложно отличить от обычного человека, но мы все равно справляется!"

На данный момент роботы стали слишком умными, они с легкостью маскируются под юзеров системы и творят свои коварные дела. Чтобы их найти и обезвредить приходится постоянно модернизировать алгоритмы поиска и определения роботов.

Главную проблему Антифрода можно выразить так:

общая схема потока логов активности юзеров

Фактически Антифрод может лишь разглядывать следы которые оставил пользователь и по ним пытается определить человек это или машина. Для решения данной задачи используется машинное обучение, нейронные сети и Матрикснет. Искусственный интеллект ловит роботов - робот ловит робота!

В итоге все свелось к хитрости, смекалке и изощренности разработчиков по обе стороны баррикад, и те и другие пытаются друг друга обмануть.

Антифрод неимоверно прожорлив требует колоссальных вычислительных мощностей и трудно масштабируем.
В планах перевести всю инфраструктуру в облако YT "ыть" чтобы получить большую масштабируемость.

Вообще был очень большой и крутой доклад, всего и не напишешь, Дмитрий немного приоткрыл завесу тайны над алгоритмами и факторами поиска роботов, рассказывал о переходе на новую инфраструктуру, отказоустойчивость и еще много чего интересного.

Машинное обучение, "ML" в рекламных технологиях

Артём Ворожцов
Яндекс

Окончил МФТИ в 2001 году, после этого работал на кафедре информатики: читал лекции по алгоритмам и структурам данных и языкам программирования, готовил команду МФТИ к олимпиадам по программированию ICPC. С 2009 года работает в Яндексе. Занимался созданием технологии поведенческого таргетинга и совершенствованием алгоритмов отбора рекламных объявлений в Рекламной сети Яндекса. Сейчас руководит проектами по разработке инфраструктуры и новых алгоритмов машинного обучения в отделе рекламных технологий.

​"Пространство смыслов"

​Доклад по машинному обучению выдался самым сложным и затяжным, оно и понятно, тема довольно специфичная.
В рекламной инфраструктуре, да и в общем в Яндекс, машинное обучение используются повсеместно. Давно стало понятно что человеческих ресурсов не хватает чтобы обрабатывать огромный поток информации, сейчас люди учат машин, чтобы те занимались обработкой, отсевом информации и занимались гаданием на байтовой гуще.
Машинное обучение в рекламной инфраструктуре используется по разному. Например 90-95% рекламных объявлений Яндекс.Директ и Яндекс.Маркет модерируется машиной, ловит роботов в составе Антифрод, входит в состав RTB, задействовано в алгоритмах Крипты и т.д. Машинное обучение еще не добралось до транспорта и биллинга, но кто его знает, может через пару лет и там найдется применение.
ML используется тогда, когда человекомощностей не хватает для решения повседневных задач, а в большинстве случаев человекомощность вообще не идет в сравнение с машиной из-за своей медлительности.

​К примеру нам нужно узнать вероятность покупки холодильника для конкретного пользователя, сравним человекомощность с машиной.

​Человекомощность
Люди могут собрать статистику по конкретному пользователю, проанализировать ее и дать заключение.

  • ​"Но сколько на это понадобится времени?"
  • ​"В лучшем случае часы."

​​Машина
Машина сделает все тоже самое, но отдаст ответ здесь и сейчас.
Конечно в такой борьбе выигрывает машинное обучение, не можем же мы ждать сутки прежде чем показать человеку рекламу!

Другой пример - модерация объявлений.
Раньше все рекламные кампании и объявления модерировались в ручную. Нет, конечно там были фильтры на всякого рода ересь типа наркотиков, экстремизма и прочего, но все что не было отсеяно, все равно нужно было вычитывать. Количество рк и объявлений росло, появились роботы и сервисы позволяющие автоматизировать процесс создания рк и объявлений. Человекомощности перестали справляться с модерацией в какие-то адекватные сроки и тут на выручку пришло машинное обучение. ML забрала себе практически весь объем работы, оставив людям только особо сложные и спорные моменты.

- ​"Это что-то напоминает не так ли?"
- ​"--//--"
- ​"Роботы создают рекламные кампании и объявления."
- ​"Роботы их и модерируют!"
- ​"Роботы потом кликают по объявлениям..."
- ​"Затем робот ищет плохих роботов чтобы не учитывать его клики."
- ​"А люди что? =)"
- ​"--//--"

упрощенный алгоритм работы ML

​На фотографии упрощенная визуализация алгоритма отвечающего на вопрос - "Купит ли пользователь u, товар t?" Хоть схема и является упрощенной, прочитать, а главное понять ее довольно затруднительно.

​У машинного обучения большое будущее, сейчас инфраструктура Яндекса перестраивается, ML переходит на YT "Ыть" и YQL, будет больше вычислительных мощностей, а их они никогда не бывают лишними. С каждым годом "предсказания" машин становятся все точнее, алгоритмы "умнеют" и скоро научатся писать книги о самих себе.
Технологи Яндекс ежедневно тестируют тысячи новых алгоритмов, что-то в дальнейшем проходит в продакшн, что-то на доработку. Алгоритмы сравниваются в эффективности решения задач, а также между собой. Частая картина - очередной алгоритм с успехом прошел тестирование по одному или двум из трех параметров, но последних вышел уж очень удручающим. У такого алгоритма две дороги, либо его чуть докрутят и взвесив все за и против - выпустят в продакшн, либо, что чаще - положат к остальным интересным, но не жизнеспособным образцам.

Кластер статистики в баннерной системе Яндекса

Алексей Бордонос
Яндекс

Окончил Московский физико-технический институт. В сфере ИТ работает с 1997 года. Занимался разработкой приложений на C++ и Java, руководил проектами и командами. С 2004 года активно использовал, внедрял и развивал практики Agile. С 2015 года работает в Яндексе техническим менеджером проектов в баннерной системе.

Алексей - "Спасибо что вы еще здесь и не спите"!
По плану встречи мы уже должны были закругляться, но предыдущие доклады чуть задержались и народу в зале заметно поубавилось.

Статистика

Все мы знаем для чего она нужна, необходима и как удобно когда ее много. Но как это работает изнутри? Как хранятся эти дикие объемы данных, да и еще довольно быстро доставляются потребителю - нам с вами.
Начнем наверное с того что статистика появилась давно и на данный момент ее инфраструктура толком устарела, поэтому сначала расскажу о том как сейчас устроен внутряк, а потом поговорим о грядущем.
Но прежде чем приступить к разбору текущих полетов, давайте определимся каким требованием должна отвечать система статистики рекламных кампаний?

Что мы ожидаем?
  • Надежность, ни байта данных нельзя потерять, это ведь деньги!
  • Доступность 24/7, нельзя прерывать доступ к данным
  • Скорость работы, ведь мы не можем ждать отчет по рк сутками

Пожалуй это три основных требования к системе хранения, именно хранения статистики, не ее отображения, а физического сбора и хранения.

Что может помешать выполнить данные требования?
  • Основной враг датацентров Яндекс по словам Алексея - это экскаваторы! Они являются наиболее частой причиной отключения электроэнергии и доступа к сети.
  • На втором месте идет железо, железо стареет, изнашивается и выходит из строя.
  • Третье - мы сами, количество рекламных кампаний растет ежедневно, на обработку данных требуется все больше мощностей.
  • Ну и последнее, четвертое - технологии, система хранения статистики глобально не модернизировалась с самого рождения, поэтому сейчас возникают сложности с производительностью и масштабированием.

Что делать с данными проблемами?
С первым ничего не сделать, мы и сами порой страдаем от строительных работ, особенно прошлым летом довольно часто гас свет и возвращался через сутки! У датацентра есть только одна таблетка - распределенная сеть датацентров, при такой схеме не так страшно потерять один из...
С железом тоже ничего особенного не придумаешь, его меняют по мере необходимости, вечного пока не придумали.
Нагрузка которая создается клиентами рекламных сервисов это толчок к дальнейшему развитию, причем как моральный так и финансовый.
Технологии - тут все понятно, нужно модернизироваться и идти в ногу со временем.

Текущая ситуация
На данный момент вся статистика пишется в три независимых места/датацентра. Грубо говоря все данные есть в трех независимых экземплярах. Это позволяет обеспечить надежность хранения данных и их доступность. Если к примеру экскаватор налетчик перерубит кабель оптоволокна и Яндекс на сутки потеряет целый датацентр, то с данными все будет в порядке, они будут отдаваться из двух оставшихся источников. Также это структура дает возможность "играться" с данными, тестировать новые фишки записи, пересчета и прочего, а если после теста выяснится что - "Упс, все пропало", тестовый экземпляр будет уничтожен, а на его место встанет валидный.
По словам Алексея, за все время работы системы статистики рекламы, Яндекс ни разу не терял данные, всегда было место откуда их можно вытащить. Давайте посмотрим на следующую фотографию, в ней есть сразу две интересных вещи!

синхронная запись статистики рекламных кампаний Яндекс на три независимых сервера

- "Что мы тут видим?"
Мы видим структуру записи данных в три независимых базы данных.
- "А еще?"
Еще мы видим слово MySQL и не верим своим глазам! Рекламная статистика Яндекс вертится на MySQL???

Да, она действительно построена на базе MySQL, я же сразу предупредил что глобального апгрейда не было со дня создания инфраструктуры, а на тот момент лучшего варианта просто не нашлось. Конечно Яндекс не использует MySQL в чистом виде, по нему слегка прошли напильником, но смысл от этого не меняется - мускул как был относительно медленным, таким и остался.
Чтобы увеличить производительность на выборках, командой инженеров Яндекс была проведена серьезная работа над оптимизацией горячего, холодного и пред кэша. Местами выигрыш составил более 60ти процентов что в масштабах Яндекс и его потока данных огромная величина!

Куда смотрят и идут?
Фактически вся инфраструктура статистики в данный момент переживает переходный период, меняются технологии и подход к решению задач насущных. Статистика, как и ML, переезжает на YT, также для нее был написан собственный язык для работы с БД - YQL (Yandex Query Language), не путать с YQL (Yahoo Query Language).
Алексей - "На текущий момент Яндекс хранит всю статистику с первого дня запуска рекламной инфраструктуры. И нас не смущает количество данных которое приходится тащить за прошлые года, ведь оно ничтожно мало по сравнению с тем что приходит сейчас! Сегодня за день статистической информации собирается столько, сколько раньше собиралось за пол года!"

Впечатление

Дмитрий Игошев,
руководитель отдела разработки

Встреча выдалась очень познавательной, Яндекс, как и другие технологические гиганты IT отрасли, использует и создает передовые технологии двигая рынок вперед.

У таких больших игроков проблемы совсем другого уровня - миллионы пользователей, реалтайм обработка терабайт логов, хранение, аналитика данных. Каждый день им бросают новые вызовы боты, роботы, люди пытающиеся обмануть систему, да даже резкий скачек в количество создаваемых объявлений и рекламных кампаний может наломать дров. Но инженеры Яндекс держат руку на пульсе ситуации, следят и модернизируют этот огромный, сложнейший механизм.

Не могу передать все что услышал на встрече в рамках данного материала, информации было очень много, глубоко копнули в ML, репликацию баз данных статистики, систему кэширования, говорили об обмене данными между частями системы. Отдельно говорили о добре которое Яндекс пытается донести до конечного пользователя, что иногда это удается сделать, а иногда не очень.

На подобных мероприятиях лучше побывать чем читать краткий обзор в интернетах =)


Интересные статьи