0: Так, да, всем спасибо. Спасибо, что пришли в этот субботнее утро. В общем, думаю, что вы сегодня полезно проведёте, будет много интересных докладов. И сегодня начну с довольно приятной новости. У нас случился релиз.
1: Мы сегодня выкладываем в опенсорс наш фреймворк для персонализации в экосистемных данных персеус. Мы его используем, в том числе сами в тбанке для персонализации поверх всей нашей вот большой экосистемы сервисов. И вот как раз-таки сегодня
2: Хотим с вами им поделиться. Если у вас есть большой, какой-то богатый поток событий или у вас есть какая-то экосистема, где есть много, много разнообразных событий, которые случаются с пользователями, то, скорее всего, этот доклад вам подойдёт, будет интересно.
3: Так, ну что, пойдём к сути. Итак, сейчас все идут в экосистемность и т. Банк не исключение. У нас есть десятки сервисов, есть маркетплейс, розница, есть банк.
4: Приложение авиабилеты есть кредитки, дебетовки, в общем, куча разных сервисов, которые генерируют просто огромное количество событий для каждого пользователя. Вот. И на самом деле, если подумать, то это отлич.
5: Возможность, несмотря на то, что у каждого сервиса события довольно разные, если мы подумаем, то довольно такая вот натуральная идея возникает. Давайте сделаем модель, которая сразу учитывает все, все, все, все pro пользователя и что он покупает.
6: Какие авиабилеты берет, какие у него есть продукты вообще вот все события, которые с ним происходят. И если мы построим такую модель, то она получится довольно обобщаемой. Она может знать более полную картину о пользователе.
7: Лучше персонализировать, лучше учитывать все его последовательности и делать просто лучшие предсказания. Вот.
8: Так, но на самом деле, если вы начнёте как-то в лоб решать эту задачу, у вас появятся определённые проблемы. 1, вам нужно будет как-то собрать и организовать данные между собой. Вот с этим есть определённые сложности, потому что
9: У каждого сервиса есть свои эмэль команды. Скорее всего, вот эти эмэль команды не хотят друг с другом как-то коммуницировать часто и разбираться в чужих данных, где там, у кого что лежит, как получать доступы, как это доставать.
10: И в целом события вот в этих сервисах имеют довольно неоднородную структуру, да, то есть, если у вас есть какая-то покупка, у неё есть цена, категория, если у вас есть прослушивание, например, в сервисе с музы,
11: У трека есть артист, есть альбом. Вот, а если у вас есть какая-то поисковая система, то есть там временная метка и текст запроса, и вот эти события подружить между собой, ну, мягко говоря, нетривиально.
12: Так, ну и дальше 2 задача, это если вам удалось собрать такие данные, то вам нужно как-то обучить модель поверх этого всего. Это тоже непросто сделать. И даже если вам удастся просто собрать данные и хоть как.
13: Запихнуть это в модель, то ещё сложнее сделать так, чтобы у вас просто при переходе от 1 домена к нескольким доменам хотя бы не упало качество. Вот. Поэтому да, есть несколько челленджей, например, некоторые сущности вообще имеют разную
14: Природу, а также может быть наоборот, что в некоторых доменах есть один и тот же товар, который имеет разные, например, item айдишники и модель из коробки. Не понимает, что это в целом там один и тот же банан просто в разных магазинах. Вот. Поэтому нужно как-то это решать.
15: Ну и также есть просто некоторые домены, которые будут доминировать поверх остальных. В них просто, например, более богатые истории, более богатые события, и они будут каким-то образом просто вымещать события из других доменов. Мы подумали,
16: То эту задачу можно как-то попробовать решить. И таким образом вот пришли к решению, которое сегодня и будем релизить. Так. Но сначала небольшая предыстория вообще, которую нужно рассказать, наверное, самые внимательные, активные.
17: Из вас кто ходит на все конференции по машинному обучению и по рекомендательным системам уже поняли отсылку. Мы примерно год назад. Вот мой коллега и главный разработчик персеуса Андрей Бабкин презентовал уже некоторые
18: Решение на конфе практика эмэль, вот в котором тоже рассказывал, как мы строили модельку, которая обрабатывает гетерогенные события.
19: Гетерогенное событие ещё по английскому называется гетерогении сиквенсе. Ну и, соответственно, моделька называлась гетеросекс. Вот, но название по некоторым причинам не прижилось, поэтому у нас произошёл внутренний
20: Ребрендинг. И сегодня мы релизим уже модельку под новым названием персеус. Ну и давайте напомню вообще, как, в чем суть была нашего подхода. Как вообще мы к этому пришли
21: В банке есть сервисы доставки продуктов. Вот. И этот сервис работает с различными партнёрами. Туда часто приходят новые партнёры, по которым у нас нету никаких данных, и мы все
22: Все ещё хотим как-то строить для них рекомендации. И тут мы подумали ну ладно, в этом конкретном партнёре у нас нету никакой истории, но мы знаем, что человек покупал какие-то товары, возможно в других партнёрах. Давайте просто будем как-то учитывать эти
23: Истории и на основании этого делать предикты, поэтому взяли обычный со Срек, начали товарам добавлять семантические энкодеры эмбедерам. Моделька начала понимать, что молоко в 1 магазине это тоже самое, что и молоко в другом
24: Магазине. Вот, и получили просто хорошие приросты по качеству для 1 заказа. То есть по факту для Холодных клиентов мы получили достаточно серьёзный аплифт. Вот мы подумали, это работает, значит,
25: Нужно пробовать как-то расширять подход, возможно добавлять новые события, как-то более уверенно кодировать там другие остальные признаки, которые есть у модели, у данных, не только текстовое описание товаров, в общем, пробовать добав.
26: Все больше и больше всяких данных. Последовательность. Вот. Ну и тут может возникнуть. Так, ага. Тут может возникнуть логичный вопрос, как бы, а что до вас, что ли, так никто не делал? Почему вы не воспользовались чем-то уже готовы?
27: Вот, мы поисследовали, действительно существуют разные другие фреймворки, которые так или иначе решают похожие задачи. Вот. Но, к сожалению, оказалось, что ни 1 из фреймворков там полностью не закрывает наши потребности.
28: То есть да, у них у всех есть какие-то сильные стороны, какие-то из них предназначены более для академических целей, и трансформировать их в production применение было бы не очень тривиально, требовались большие бы доработки, какие-то фреймворки.
29: Были достаточно узкоспециализированными и недостаточно гибкими, чтобы их расширять под наши разнообразные сценарии, под наши сервисы. Вот. Ну и в общем, самое главное, что ни 1 из фрейморков по сути, не работает нормально с
30: Гетерогенными событиями из коробки. То есть ни в 1 из фреймворков нельзя засунуть сразу и покупки с разнообразными фичами там, с ценами, с чеками, с названиями товаров, с категориями нельзя засунуть. В общем, такие вот богатые события, чтобы они нормально обрабат
31: Из коробки. Вот, поэтому решили, давайте сделаем простое решение, которое все наши потребности закрывает. И, в общем, на этом и получился персеус. Так, давайте подробнее разберём, как это работает.
32: Я уже говорил, что в целом мы базируемся на простой идее. Вот в том слайде со срекомендациями, мы их каким-то образом нкодим в 1 последовательность, классическим образом засовываем в какую
33: Севеншал модельку. Получаем эмбеддинги из эмбеддингов, скоры и все хорошо. Вот. Но мы брали и расширяли этот подход следующими способами. 1, мы начали брать не только взаимодействие,
34: С какими-то целевыми айтемами. То есть если мы решаем задачу предсказания, рекомендации каких-нибудь товаров для пользователей, то мы в последовательность начинали пихать не только товары, а вообще все возможные события, которые с пользователем происходят, то есть
35: Это может быть какие-то клики, может быть там, не знаю, вообще какие-то транзакции, там, поездки и так далее. Ну в общем, все, что все, что угодно, что может нам дать так или иначе, какой-то полезный сигнал про пользователя. Далее мы расши
36: Подход в сторону обработки гидрогенных событий. То есть вот можете видеть, как на этой иллюстрации есть, например, транзакция, да, у транзакции, точнее, платёж вот самый 1, да, у него есть чек, есть цена какая-то есть
37: Какой-то айдишник, что именно клиент купил, есть таймстемп. Вот тоже самое у какого-нибудь перелёта есть время и есть какая-то геолокация там, куда был совершён Перелёт. Тоже самое у отзыва, у отзыва может быть
38: Вообще какая-то текстовая фича, то есть там человек мог что-то написать текстом. Вот, и мы расширили подход тем, что начали обрабатывать эти разнообразные фичи событий отдельными энкодерами, то есть на каждый тип, тип.
39: Есть свой отдельный инкодер. И вот видите, снизу получаются такие разноцветные кружки. Имеется ввиду, что теперь каждый кружок совмещает в себе часть какую-то, которая представляет собой ту или иную фичу в
40: Каждом событии. Вот, и дополнительно мы ещщще кодируем контекст важный, в котором происходит предсказание, то есть для пользователя это может быть там его пол, возраст какой-то соцдем. Это может быть операционная система, которой пользуется человек, это
41: Может быть, там, например, день недели, условно, в пятницу у вас предикты поменялись, стали другими. Вот, и все это мы засовываем в секвен бэкбон, там Берта частию неважно, получаем юзер эмбеддинг.
42: Который можно использовать как и для просто использования в виде the representation в каких-нибудь донстрим, задачах, так и дальнейшем в enter тюннинге под конкретные головы. То есть, например, под ранкинг, под
43: Тривол под регрессию, классификацию, ну или, по сути, вообще под любую кастомную задачу, которую вы захотите решать.
44: Теперь поговорим про основные компоненты нашего фреймворка. Вот, потому что, да, вот основной компонент фреймворка, это event хаб, как я сказал, мы строим фреймворк на основе
45: События нам необходимо где-то вообще хранить на самом деле, да, эту задачу закрывает нам ивент хаб. Что, что это такое? По сути, по сути, это просто date партишен. Такой вот паркетник, хранилище паркетников, да.
46: В чем преимущество? Вам не нужно никаких внешних сервисов, никаких бдшек, спарков, никаких дистрибьютед, хранилищ. Просто вот в виде паркетников. У вас примерно вот такая структура. Например, если вы начали хранить события, зака,
47: Оно бы побилось на вот там папочки по дате и в каждой папочке по дате лежало бы н. Паркетников, которые бы хранили ваши события. Вот и так, и каждый тип событий.
48: Он имеет свою схему, то есть вам не нужно как-то пытаться заранее продумать, а вот как бы мне так событие положить, чтобы оно матчилось с другими событиями, и чтобы у меня модель их нормально переваривала? Нет, просто ложите, как вам надо со всеми фичами, со всеми вообще.
49: Чем угодно, пускай там лежат как потом достать события какие фичи из них извлечь это уже задача фреймворка в общем довольно удобно кажется далее двин хаб поддерживает такую очевидную вещь, как темпро filtering то ест.
50: Момент совершения предсказания вам выдаются только события до момента, на который вы хотите сделать предсказание, да, чтобы не заглядывать в будущее. Такая в целом очевидная вещь. И, наверное, самое главное в этом event хабе это то, что у вас очень высокая переиспользуемость. Дан.
51: То есть, по сути, вы можете 1 раз настроить загрузку, там, например, регулярную, в event хаб. Ну, либо, если вы просто там какое-то исследование проводите кратковременное, вы можете просто 1 раз загрузить ваши данные в event хаб, если вы знаете, что они не поменяются, и все эти данные можно
52: Переиспользовать будет по сути вообще в любых задачах, в любых ваших моделях, которые будут построены на основе персеуса это изменяется просто там пару строчек конфигов нужно будет поменять что вот эти данные используй, вот эти данные не используй vs.
53: Фреймворк сам все это подхватит и будет корректно с ними работать.
54: Так далее. Поговорим про другие основные компоненты, из которых состоит фреймворк. Тут их достаточно много. И возможность комбинации этих компонент позволяет вам, можно сказать, кастомизировать решение под ваш конкретный случай, потому что
55: Очевидно, что-то будет работать лучше в 1 типе задач, что-то будет работать хуже. В другом. Вот. И 1, это инкодеры. Вот, как я уже сказал, у нас есть разнообразные инкодеры, которые кодируют разные типы фичей. У нас есть какой-то базовый инкодер, то есть, по сути,
56: Слой, вот, которым можно кодировать там id категории. В общем, это такое прям база база. Вот. Но далее у нас есть, например, ещё bag of words, который кодирует текстовые признаки через бпе, да, то есть бп токенизирует ваше
57: Вот и на каждый токен обучается свой собственный эмбеддинг, который вот как раз-таки через бегор слой и обучается в модели, ну и также мы кодируем числовые признаки через пле, то есть piece wise, линер, инкодинг такой способ, где для каждого
58: Квантиля, вы обучаете свой собственный эмбеддинг, ну и потом их комбинируете в зависимости от значения вашей фичи. Вот. Далее у нас есть такой компонент, как event агрегатор. По сути, это штука, которая отвечает за то, как вам из нескольких фич.
59: Нескольких эмбеддингов под фичей для события получить 1 единый, ну то есть понятно, что базовый сценарий это давайте просто вот возьмём этот бутерброд и сложим его через сумму, да, но вы можете сказать, а наверное, существуют какие-то более умные способы это делать. Вот
60: Вот, например, есть взвешенная сумма, есть конкатинация плюс проекция. То есть, по сути, конкатенируете все это такой вот длинный вектор и какой-то, каким-то слоем проецируете в нужное вам пространство. Вот, ну, чтобы можно было поэкспериментировать. Далее у нас поддерживается
61: Достаточно много разных бигбонов можно пользоваться как каким-то классическим бертом, вот так и его, например, более современной модификацией модерн берт. Вот можно пользоваться какими-то более интересными модельками типа ht ю мамбой донет Данетта. В общем, тут
62: Фреймворк позволяет вам экспериментировать, выбирать что-то, что подходит под вашу задачу. Далее у нас из коробки есть поддержка 4 типов задач. В данный момент это ретривал ранкинг.
63: Классификация и регрессия для ретривал подобных задач у нас есть сразу несколько типов лоссов есть там full catalog кроссэнтропия, есть кроссэнтропия с инба негативами, есть семплированный лос с loquillo.
64: Которая позволяет вам уменьшать популярити Баис. Вот нам на самом деле q. Коллекция помогла в некоторых наших сервисах так, ну и последнее это вот как раз-таки про контекст фреймворк позволяет учитывать юзер.
65: Level фичи, какой-то контекст, да то есть как я сказал, у пользователя может быть какой-то важный пол, возраст, там дата на момент предсказания, день календаря, в общем все что угодно. И на это все вы можете тоже обучать свои собственные инкодеры. Вот.
66: А ещё можете учитывать айтем левел фичи, то есть если это ранжирование какое-то и вам нужно учитывать фичи айтема, да, подобно как to tower подход, да, то вы тоже это можете делать вы можете кодировать айтемы всеми теми,
67: Энкодерами, которые тут сверху перечислены. И таким образом, в общем, учитывать особенности ваших кандидатов, которые вы хотите проспорить. Вот, ну и если вдруг вот этой функциональности, которую здесь я описал, недостаточно для того, чтобы решить вашу задачу у персеуса её
68: Есть расширяемый апи, через который можно достаточно легко добавить вот какой-то конкретный, может быть los или что-то ещё, чего вам не хватает вот что придумаете там относительно легко добавляется через api.
69: Так далее. Хочу вам рассказать про некоторые интересные механизмы, которые реализованы в персеус. Они небольшие, но они достаточно важные, потому что рано или поздно, если вы захотите реализовывать фреймворк, в котором есть поддержка вот таких вот мультидоменных событии.
70: Разнообразных, вы столкнётесь с определёнными проблемами, и perseus позволяет решать эти проблемы из коробки, что, на мой взгляд, показывает некоторую вот техническую зрелость и состоятельность фреймворка, потому что мы его уже в банке используем достаточно давно проработали достаточно
71: Много сценариев с ним. И вот добавили такие небольшие, но классные твики. 1, это мультисота, значит, что это такое вот часто, если вы начнёте сами что-то подобное делать, у вас получится так.
72: Что есть некоторые события, в которых есть разбиение на подсобытия, то есть, например, 1 заказ это может быть and товаров например, в 1 корзине у человека может лежать и молоко, и хлеб, и яйца, и bass.
73: Подход давайте просто всю корзину заинкодил в виде 1 вектора, вот и положим в последовательность, но персеус из коробки умеют разделять эту корзину на 3 отдельных вектора, на 3 отдельных токена. Вот. И это позволяет модельке по отдельности смотреть на
74: Каждый элемент в этой корзине, вот там получается, что каждый эмбеддинг в этой корзине получает свой собственный позиционный инкодинг, который показывает, что это все ещё element 1 корзины, но при этом моделька имеет возможность смотреть на каждый предмет по отдельности.
75: Вот если бы такого не было, это просто было бы для модельки какая-то корзина типа заказ номер 42. Вот, и она бы не смогла отличить, что вообще там есть в этом заказе. Далее есть такая классная штука, как приоритеты событий тоже, когда вы начнёте заниматься каким т.
76: Кроос, доменными вещами, скорее всего, получится, так, что есть некоторые важные события, есть некоторые события, менее важные. Например, у вас может быть событие покупки, которые довольно сильно имеют какую-то хорошую информацию. В общем,
77: Передают какой-то полезный сигнал про потенциальные покупки, которые хочет пользователь совершить. И у вас есть другие события, например, транзакции, которые пользователь совершает буквально каждый день. Например, он там по несколько раз в день ходит, ездит в метро, в общем,
78: Делают какие-то базовые вещи, которые нам не очень много информации полезной сообщают. И если такая ситуация случается, но при этом у вас контекст ограничен, вы можете учитывать только какое-то ограниченное количество событий, например, 512 может случитьс.
79: Так что у вас транзакции просто вытеснят нужные покупки, нужные события и все, полезный сигнал затрётся. Вы получите ухудшение качества. Как раз-таки приоритеты помогают этого избежать. Они помогают вам зарезервировать какое-то количество места. Например, оставить 10.
80: Процентов от покупки, что достаточно удобно. Ну и 3, это шейдинг инкодеров. Вот как я уже сказал, события разнообразные и может получиться так что какой-то признак, например, геолокация, он может быть и
81: В user level фичах может быть, в разных типах событий и ещё, может быть, как фича в item, левелах, айтем левел признаках и как раз-таки в персеус это все можно из коробки обобщить 1 и тем же инкодером.
82: Просто пошерить веса достаточно классная штука, потому что, думаю, вы понимаете, помогает вам более генерализовать вашу модель. Это такой вот способ регуляризации, который просто делает модель более обобщаемой. Так
83: Теперь поговорим про важное свойство персеуса. Это эффект масштаба. По сути, что это такое здесь? Если вы подключаете новый домен в wild хаб, он сразу становится доступен всем, всем, всем даунстрим, задачам. Вот.
84: Если вы добавляете новый бэкбон какой-то тоже, вы можете буквально 1 строчкой конфига подключить этот бэкбон к другим задачам. Вообще без проблем. Просто поменять конфиг и тоже самое с каким-нибудь улучшением ллоса или энкодера вообще чем угодно. И это
85: Потому что если бы у вас было несколько параллельных команд, которые реализовывали бы свои рекомендательные модели, или не только рекомендательные модели персонализации в разных сервисах, то вам понадобилось бы делать н. Умножить на м работ, да, а тут вы совершаете 1 улучшение, и оно попадает.
86: Сразу в н мест, что очень сильно помогает именно вот обобщать подход и делать его сильно более масштабируемым.
87: Вот, ну и тут, конечно, да, вы можете сказать, ага, ну окей, вы там взяли просто какую-то модельку, а вдруг она очень плохая и за счёт того, что вы докинули каких-то более богатых событий, вы из плохой модельки получили просто нормальную, вот, но
88: Мы решили, да, прогнать, проверить против каких-то существующих бейслайнов в таком вот самом честном сетапе взять, оставить только айдишники, только 1 тип событий. Вот полностью в каком-то голом сетапе, где у вас есть только матрица интеракти.
89: И все взяли несколько опен деств, взяли муви ленс, Дубан, муви ямбу и t. Сиди тихидобавить вот синтетический десет, который мы недавно релизнули на основе наших данных, он достаточно близок к нашим продакш.
90: Сценарием. И вот, в общем, получилось так, что фреймворк чисто на голых айдишниках выигрывает все бейзлайны. Вот мы попытались узнать, за счёт чего вообще этот выигрыш был получен. Оказалось, что в основном это за счёт более умного
91: Кодирования и более современного бэкбоуна. Вот если их отключить и поставить стандартные, то метрики просто сходятся к метрикам от бейзлайна.
92: Так далее поговорим про все-таки, насколько большой эффект от того, что мы обогащаем события нашими богатыми признаками и насколько большой эффект от того, что мы добавляем события из других доменов, тоже самое взяли
93: Яду обучили только на item айдишниках получили одни метрики, потом добавили признаки более богатые к событиям. То есть, например, артиста альбома, там флаг органики и получили другие метрики, которые уже
94: Повыше. И потом после этого добавили другие типы событий внутри этого домена и получили метрики ещё выше.
95: Далее проверили все-таки, насколько помогает кросс доменность. Это помог нам сделать наш тииди датасет, в котором есть сразу несколько доменов. И там среди доменов есть связь через сквозной юзер айдишник. Поэтому для каждого пользователя мы може
96: Иметь там несколько доменов и учитывать все события. Ну и вот как видите, тоже взяли просто события из 1 домена, получили одни метрики на маркетплейсе, вот, и на ритейле потом добавили события из 3 остальных доменов.
97: И метрики достаточно сильно подросли. То есть вот там + 16, 21%. В общем, достаточно большие приросты. И, как я уже сказал, тииди в целом достаточно похож на наши продовые датасеты, и мы на наших продовых сетах наблюдаем примерно такие же приросты. Вот что.
98: Как бы индустриальную ценность такого подхода. Но самое главное, что все эти эксперименты, по сути, были проведены за счёт изменения буквально пары строчек в конфиге.
99: Буквально чуть чуть меняете и все сразу setup меняется. Можно получать разные конфигурации и улучшать ваши метрики, экспериментировать.
100: Супер. Теперь проговорим про то, где мы вообще используем персеус в банке. В банке у нас есть много сервисов разнообразных. Например, в шоппинге мы используем персеус для того, чтобы моделировать предпочтения клиента по товарам, по продуктам питания, по партнёрским кэшбэкам.
101: В городе. Вот ещё, да, вот в повышенных кэшбэках используем для того, чтобы определять склонность клиента, тыкнуть на тот или иной повышенный кэшбэк раз в месяц. Также используем в предиктивной поддержке. Пытаемся заранее предсказать
102: На какой вообще, с каким запросом клиент пришёл и заранее просто ему в чат написать уже ответ. То есть, представляете, вы ещё ничего не написали в чат, а вам уже там приходит решение вашей проблемы. Вот. Ну и, конечно, да, пытаемся внедриться в кредитный и дебет.
103: Новые продукты, так как мы все-таки банк.
104: Окей, если заинтересовало, то как начать этим пользоваться, берете, клонируете репозиторий, там ещё потом будет QR-код, можно сейчас не фоткать, потом приводите датасет к нужному формату, там нужно там client id.
105: Item id тайм стемп и загружаете эти штуки в event хаб. Потом пишите небольшой конфиг, который определяет вообще, какую задачу вам нужно решить, какую модель использовать, какие там фичи, как их кодировать и
106: Все готовите, досет, обучаете вашу модельку при помощи нескольких команд. После этого можно инференсить. Инференс поддерживает мультигпу. То есть все делается быстро. Распределённое. Все хорошо. Там на самом деле ещё в репозитории будет тоже конечн.
107: Конфи, вот инструкция, как начать, поэтому достаточно все просто далее. Зачем вообще это нужно? Давайте подумаем, в каких сценариях вам это понадобится. 1, если у вас есть богатый поток событий, вы хотите быстро строить качественную
108: 2. Если вы устали писать кастомные трансформеры под каждую задачу, пожалуйста, пользуйтесь фреймворком. Не нужно писать болдер плейд, который потом нужно ещё дебажить, потом у вас ещё в трейн лупе что-то пошло не так. Опять это нужно добавить. В общем, давайте так не делать, так далее.
109: Если у вас холодный старт тоже подходит под этот сценарий, как я сказал, можно просто использовать события из других сервисов в новом сервисе и хорошо строить предсказания.
110: Если просто хотите поэкспериментировать, посравнивать бэкбоны, берт, модер берт в вашем сценарии тоже супер. Вот если хотите строить фундаментальную модель, то есть использовать все события в ваших сервисах, тоже, пожалуйста, персеус предоставляет для этого
111: Все нужные инструменты. Ну, давайте ещё быстренько проговорим про ограничения, которые есть. Они, конечно, есть у любого сервиса, у любого фреймворка. Вот это не серебряная пуля, но достаточно хороший фреймворк. Значит, 1, вы можете использовать только секвен. Данные не получится засунуть туд.
112: Какие-нибудь графы знаний, какие-то графовые сетки на этом не получить. Далее пока что у нас только есть оффлайн инференс, ну либо какой-нибудь, ни реал тайм инференс онлайн штука это, это онлайн инференс, это штука все-таки не поддерживается из коробк.
113: Вот, ну вы можете экспортировать ваши эмбеддинги, например, ранкера следующего уровня, которые вы будете использовать онлайн. Вот, и можете экспортировать веса, бинарники, модели, чтоб тоже где-нибудь использовать в реал тайме. И, конечно, не заменяет. Это наши приморки заменяет мульти.
114: Ранкер, где у вас есть куча разных кандидатов, генераторов, фичей, реалтайм, анкеров. Её все-таки не про это немножко, да? Ну и вы должны сами следить за данными, которые вы подаёте, если вы подаёте
115: Данные. Ну там фрейворк, конечно, за вас всю работу по очищению данных не сделает. Так. Ну и в общем, давайте быстро основные тейкове можете быстро прототипировать ваши задачи буквально за 1 вечер создать модельку классную
116: Далее можно проверить, сколько сейчас уже вы теряете качество за счёт того, что не используете все доступные события. Можете быстро строить хорошие персонализированные эмбеддинги, которые учитывают всю, всю, всю историю и полную картину. Вот можно
117: Легко масштабироваться. Получили успех в 1 продукте. Можете масштабироваться на всю вашу экосистему. Там почти бесплатно.
118: Далее персеус это все-таки уже состоявшийся проверенный фреймворк. И за счёт того, что мы выкладываем, мы делимся нашей экспертизой, которую накопили за 7 плюс лет опыта рексис, а в банке, ну и на самом деле это
119: Инструмент достаточно гибкий, он подходит не только для продкшн, но и для каких-то академических исследований если вам нужно что-то легковесное персис может быть легковесным если вам нужно что-то тяжёлое, промышленное он может таким стать для вас вот ну это все, спасибо за внимание, вот здесь вот есть QR-код перехо.
120: Идите, ставьте звёздочки, используйте в своих датасетах, своих задачах, становитесь контрибьюторами, потому что, как я сказал, если что-то докидываете в фреймворк, то это автоматически распространяя
121: На все другие задачи. А так получается, что ещё на другие компании можете распространить ваши наработки. Вот. Спасибо большое за внимание. Надеюсь, персеус будет полезно для вас.
122: Так, Кирилл, спасибо большое за доклад. Прежде чем мы перейдём к вопросам, попрошу всех оставить фидбэк о докладе кирилла. Вот мы, фидбэки, о докладах очень внимательно читаем и стараемся.
123: Улучшать за счёт этого последующие наши конференции. Поэтому очень просим оставить вас фидбэк. Так, давайте перейдём к вопросам. Вот если у вас есть вопросы, поднимайте, пожалуйста, руку вам, к вам подойдут с микрофоном. Давайте
124: Раз, раз так, вроде работает.
125: Да, привет. У меня так немного вопросов накопилось. Вот, во первых, хотел немного поправить. Ты говорил про луку коррекцию. Вот ты сказал то, что она помогает в девайсине популярного. Она все-таки, скорее, у нас вот есть инба, негатива, оо,
126: Которые у нас популярно занижает, а луко коррекц, он, наоборот, их выправляет, чтобы они не занижались это так немного поправить. Вот. А так, по вопросам у меня было, во первых, можем вернуться к табл. Я, наверное, 2 вопроса задам, если можно, вот можем вернуться к табличке.
127: С метриками.
128: С кросс доменами или с, где с бейзлайна и сравнивали. Давай так вот это да. А, пробовали замеряться против усиленных бейзлайновых. Есть, например, у Даши Тихонович была статья про эфишн сарек. Ага. Ну смотри, с такими вот усиленными.
129: Билайнами не пробовали замеряться. Вот почему? Потому что, как я сказал, во первых, не все фреймворки поддерживают именно гетерогенные события. И вот эта конкретная табличка, это исследование было направлено на то, чтобы проверить вообще, а не сделали ли мы что то какую-то шляпу, которая не работает. Вот просто
130: Проверить относительно устоявшихся рабочих без данных, которые заведомо известно, что хорошо работают. Поэтому вот такое сравнение позволяет ответить на этот вопрос. Конечно, существует ещё куча, куча разных там модификаций, секвен, моделей, которые есть вот в мире, да, против всех, конечно, не
131: Угу, да, понял. Ну тут я к тому-то, что вот если мы в Срек базово, можем нормально негативов добавить, вот не брать 1 случайный, то уже от этого метрики довольно сильно растут. Вот это может как бы качество заплитить.
132: Вот, да, дальше был вопрос про инференс. Тут можно тоже, наверное, если не трудно вернуться к табличке изначальной про сравнение разных фреймворков.
133: Да, да, вот она была.
134: Так, вот, вот, да, тут было про эффективный инференс. Вот отмечено то, что персеус, он тоже эффективный. Ага.
135: В презентации, будто про это не прям было, вот может кратко рассказать или как-то потом обсудить да, ну в общем там мы используем accelerating распределённый инференс и training. Вот, поэтому в этом смысле он эффективный вот угу.
136: Но он продолжает быть оффлайновым. Да, да. Ну, то есть эффективный офлайновый инференс, да, можно параллелить и быстро сделать предикты для всей клиентской базы без проблем. Да, окей, щас, последний никит, давай 2 вопроса. Ты говорят, давай, наверно,
137: Остальные ты с кириллом потом в keune сессии обсудишь, да, да, потом будет сессия там на улице. Могу ответить на ваши вопросы более подробно. Так, давайте, есть ли ещё вопросы? Да, добрый день, у меня есть такой вопрос. Я старался внимательно слушать, но, возможно, пропустил
138: Опять же, про табличку с метриками, если можно, вы сказали, что весь секрет в умном бэкбон, умном и современном позиционном кодировании, если не секрет, что что
139: Вы сравнивали по моему умный бэкбон, здесь имеется ввиду это роуп, точнее позиционное кодирование это роуп, а бэкбон там по моему был modern берт, который побил или hs честно не помню вот, потому что там в разных в разных сетах по разному.
140: Работают. Вот если просто брать максимальную конфигурацию, то в основном это было получено за счёт именно вот роуп кодирования плюс modern берт, но там в общем варьировались результаты. Понял. Спасибо вам большое.
141: Здравствуйте, меня зовут Фомичев Никита из газпромбанка. Очень большое спасибо вам за интересный доклад и классный инструмент. И такой вопрос у вас какая задержка по поставке данных и
142: Вот как часто и быстро вы строите такие рекомендации. Ну, задержка по поставке данных сейчас вот что имеете ввиду, если я понял, например, вот у нас появляется новый источник данных, мы можем его добавить в енхап буквально за день, а потом
143: На следующий день переписать конфиги и новый источник данных уже прольётся в продовые модели. Вот если как быстро они заливаются, то есть у вас реал тайм идёт? Нет, это все-таки там какой-то в основном предполагается офлайн либо near realtime.
144: То есть, ну, скажем так, не получится настроить какую-то реалтаймовую загрузку новых данных и поставку там из кафки какой-нибудь быструю в event хаб. Вот, потому что, ну, там это не совсем про то история, но достаточно можно там
145: В рамках дня, я думаю, точно можно делать. Угу. И каждый день вы пересматриваете рекомендации, да, получается так. Угу. Спасибо.
146: Ну, можно это делать ещё чаще, если чаще данные, да, то есть, наверное, там можно раз в час спокойно это делать. Ну, вот, что-то такое. Так, есть ли ещё вопросы к кириллу?
147: Да, есть. Спасибо ещё раз за доклад. Меня зовут Андрей. Я тут, я из озона. Хотел бы у тебя спросить по поводу эффективного инференса, который вы тут описали. Пару слов просто рассказать.
148: Так, ну да, как я сказал, под эффективным инференсом подразумевается возможность инференса на мультигпу через accelerating, то есть, по сути, если у вас есть большая клиентская база какая-то или там просто задача поскорить много, много всяких каких-то объектов.
149: То эффективный инференс позволит вам это сделать за счёт того, что он хорошо параллелится там на несколько тачек. Вот. И, ну просто можно быстро, параллельно обрабатывать, получать ваши скары. Вот в этом смысле подразумевался эффективный инференс. Окей, спасибо.
150: Так есть ли ещё вопросы?
151: Так, есть ещё вот сзади вопрос, и вот на 1 ряду привет. Спасибо большое за доклад. У меня такой вопрос. Вот ты сказал, что персеус нельзя использовать в реалтайме, но при этом, что вы внедрили его в службу поддержки. Вот я хотела бы понять, как
152: Вот это произошло, да, как я сказал, мы заранее пытаемся понять, с каким вопросом придёт клиент. Ну то есть это можно понять по некоторым там флагам, например, у клиента заблокирован счёт. Вот это значит,
153: Что, наверное, в течение какого-то времени, в течение суток или в течение недели он придёт с вопросом, а почему у меня заблокирован счёт? Вот, или там разблокируйте счёт. Соответственно, мы можем вот такие штуки достаточно быстро ловить что-то реалтаймовое. Ну действительно, да, это, это сложнее.
154: Вот, поэтому именно в этом был изначальный поинт. Так, давайте, наверное, вот последний вопрос здесь вот был.
155: И все остальные вопросы можно будет кириллу дальше отдельно задать.
156: Кирилл, привет. Меня зовут Ирина Скорынина, газпромбанк. Слушай, может, я невнимательно слушала, говорил ли ты про то, используете ли вы исторические данные? То есть ты говоришь, транзакции, но, например, месяц назад клиент как себя вёл, и в течение какого-то времени, да?
157: Да, то есть в основном в этом и смысл всего фреймворка. То есть у вас есть несколько источников данных, например, транзакции, покупки, обращения в поддержку, перелёты, отзывы, например, на какие-нибудь товары и для каждого
158: Домен, у вас есть своя собственная история. То есть, да, конечно, мы используем эту историю, вот, которую вы подаёте в модель, используете все богатые признаки из этой истории, чтобы кодировать правильно все это дело. Вот. Ну и да, получается ответом на вопрос по факту, да.
159: Используем исторические данные. В этом смысл фреймворка. Вот, наверное, ещё можно подраскрыть. Какая может быть глубина истории. Ну, по сути, глубина истории просто ограничена вашим компьютером. Сколько у вас есть железа? Сколько вы событий готовы обрабатывать? Хотите обрабатывать историю длины? 100? Ну ладно.
160: Обрабатывать хотите 1000? Или там, если вам удобнее во времени считать за год обрабатывать историю или за несколько лет? Ну, тоже, пожалуйста, все зависит от ваших возможностей по железу. Супер. Спасибо. Интересно очень. Да, спасибо.