ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:33
Общая информация о структуре рекомендаций Avito:
  • Avito имеет около 27 миллионов ежедневных уникальных пользователей и каталог из 230 миллионов товаров.
  • Главная страница Avito содержит две цели: Эксплорейшн – изучение новых товаров, Эксплуатейшн – показ наиболее релевантных товаров.
00:02:05
Архитектура системы рекомендаций Avito:
  • Система рекомендаций Avito использует два основных источника кандидатов: онлайн и офлайн.
  • Офлайн модель "клуба" обучается раз в шесть часов и применяется для обогащения контента.
  • После выбора кандидатов система применяет ранжирующую модель и бизнес-правила для окончательного отображения рекомендаций.
00:04:33
Проблемы и улучшения текущей архитектуры:
  • Оффлайн модель клуба является крупным источником кандидатов и используется в качестве фичи для другой модели.
  • Модель обучена на кликах и не использует дополнительных данных.
  • Использует разделение по категориям и регионам ("чанкам"), что приводит к необходимости обучать множество моделей.
  • Предложено решение: инкрементальное обновление эмбеддингов новой информации без полной перезагрузки модели.
00:09:04
Инкрементальная модель обновления эмбеддингов:
  • Новая инкрементальная модель позволяет обновлять эмбеддинги по батчам каждые 20 минут.
  • Используется пайплайн, включающий сбор данных, дедупликацию, обучение и размещение результатов.
  • Время полного цикла составляет около 20-25 минут.
00:13:09
Оптимизация инфраструктуры и производительности:
  • Выполнение базовой модели занимает 6 часов, но очередь обработки данных эффективно разгребается дополнительными воркерами.
  • Применяется техника обновления только измененных строк (SCAR-сад) для экономии памяти.
  • Средний объем памяти на категорию составляет 6 ГБ, инфраструктура оптимизирована для использования четырех GPU-подов.
00:18:50
Будущие направления развития:
  • Планируется переход на Spark для ускорения обработки данных.
  • Переход на постоянную инициализацию модели вместо однократного запуска раз в сутки.
  • Улучшение архитектуры эмбеддингов для повышения точности и устранения проблем с дрифтом.
00:20:52
Вопросы аудитории и ответы докладчика:
  • Докладчик подтвердил наличие прироста контактов после внедрения предложенных улучшений.
  • Ответы касательно оптимизации временных интервалов сбора данных и влияния на производительность.
  • Обсуждение методов балансировки нагрузки и предотвращения потерь данных при сбоях.
0: Привет, вас не так много, это очень хорошо. Сегодня. В общем, расскажу. А давайте сначала небольшой ликбез. А кто вообще занимается рекомендашкам?
1: О, супер 3 человека. Вот остальным, наверное, ну вот тем, кто занимается рекомендациями, не так будет интересно. А вот остальным, наверное, что-то подчеркнут. В общем, доклад о чем, как мы
2: Большую модельку к нерайму. О чем вообще это будет доклад в начале немного расскажу про саму структуру рекомендаций в авито, как они работают. Потом побольше расскажу про офлайн движки какие мы
3: Делали итерации и к чему пришли. В общем, такой лайтовый доклад. Наверное, все знают. Авито у нас довольно много пользователей. 27000000, дневно 70.
4: 2000000 это уникальных пользователей за месяц каталог примерно 230000000 товаров. То есть очень много данных и масштаб. Так, да?
5: Вот так вот выглядит главная страница авито, и у неё на самом деле 2 цели. Вот, вот эта нижняя часть, это как раз-таки наши рекомендашки, которые мы показываем пользователю. Есть 2 цели, которые мы вообще
6: Следуем. 1, это эксплорейшн, то есть, а эксплуатейшн, это показать максимально релевантные товары пользователю. Мы знаем его, допустим, интент, мы знаем, чего он хочет на данный момент, и мы пытаемся показать ему те товары, с которыми
7: Скорее всего, взаимодействует и эксплорейшн. Мы периодически подмешиваем различные товары, которые могут быть интересны. То есть больше узнаем о пользователе. Если, допустим, он интересуется автомобилями, мы его интент там недавно
8: Что-то искал, с кем-то даже контактировал. Очевидно вот мы будем ему подкидывать. Ну ещё также можем подкинуть какие-нибудь запчасти и прочее, чтобы понять вообще что-то интересное или нет. Как это вообще выглядит архитектура. Не знаю, стандартная архитектура, какие
9: Наверное, в большинстве компаний это работает. У нас есть, как я уже говорил, 230, 240000000 Айтов. Из них мы выбираем только ту часть, которую мы дальше сможем, не знаю, как-то обогатить.
10: Показать пользователю. То есть мы весь каталог не можем показать. И для этого у нас есть различные источники кандидатов, там по разному их можно называть движки, ручейки, но тем не менее, вот у нас есть онлайн источники.
11: И вот есть 1 офлайн, это модель клаба, она на самом деле очень, ну, 1 из самых первых моделей, которая была авито, но у неё проблема, она обучается раз в 6 часов и, соответственно, ну вот.
12: Проблема, что мы дальше можем, ну, с ней сделать. Вот после того, как мы выбрали небольшой сет из кандидатов, мы че делаем? Просто закидываем это в ранжирующую модель бленди, применяем различные бизнес.
13: Правила и показываем эти рекомендашки пользователю. В общем, такая такое предположение, вот что будет, если мы попробуем вот эту модель, как я говорил, которая обучается раз в 6 часов, попробуем ускорить, ну такая вот
14: Предположение. Давайте, давайте посмотрим, из чего складывается это предположение. Вот есть примерный и CTR от возраста объявления, в чем его основная интуиция? Вот у нас есть хороший
15: Объявление, и оно на самом деле живёт очень быстро. Если у него там, не знаю, какой-то очень хороший товар, хорошая цена, то оно очень быстро улетает. Вот. И, соответственно, есть некий пик ситиро в первые часы и
16: Ну вот и, соответственно, вот такое вот предположение. А что если мы попробуем этой моделькой как-то подхватить этот пик?
17: Так, пару слов об этой оффлайн модели, да, это вот 1, она довольно источ, довольно крупный источник кандидатов для ленты. Также сама модель, она является как бы источником
18: Для другой модели юта Сим. И мы также используем эту модель, точнее скоро этой модели, как фича для ранкера. И вот такая крупная модель, ну что она из себя представляет? Вот у нас есть
19: Имбединги для каждого айтема и для каждого пользователя. Мы че хотим так, чтобы эмбеддинги атома пользователя были в 1 пространстве, чтобы мы могли их перемножить, получить какой-то скор и и отранжировать от этого?
20: Skara взять топ k и отдать дальше такая супер простая модель обучаемся только на кликстрим, каких-то дополнительных данных не используем.
21: Вот, да, мы просто их перемножаем, но user эмбеддинг мы инициализируем, получается как средний из тех эмбеддингов, с которыми он взаимодействовал.
22: Есть 1 проблема с этой моделью. То, что она работает по чанкам чанк. Это условно. Вот у нас 52 категории, это авто, недвижимость, работа и прочее, прочее. И 85 регионов. Это Москва.
23: Петербург. И для каждого из этого пересечения категория регион. Мы обучаем свою модель. Почему так сделано? Ну да, во первых так исторически сложилось. Во вторых, раньше не было
24: Мощных пушек. А вот такая модель, когда мы разбиваем по чанкам, она влезет в гпушку, потом для каждой модели, ну, получается для каждого чанка они, ну, по сути, между собой отличаются, потому что в каких-то категориях
25: Условно, там в автошке у нас больше каких-то взаимодействий в товарах, которые мы, ну, показываем там меньше. Вот. И, соответственно, нам нужно вот это учитывать, там свои параметры у каждого.
26: И нам нужно с этим что-то делать. В связи с этим у нас появляются минусы. Как я уже говорил, там, если перемножить 52 на 82, то получается 1000 моделей. Каждую из них нужно обучать, поддерживать.
27: Смотреть там, что разъехалось, это большое количество статистик и просто так это как-то агрегировать не очень получается. Потом юзер может несколько взаимодействий делать в различных категориях. Условно, там он посмотрел недвижимость там в Москве.
28: В петербурге, и, соответственно, у него получается дубль и там, и там, ну и от этого как-то хочется избавиться. И также раньше это было плюсом, сейчас это минус утилизация гпо. Сейчас, в принципе, довольно
29: Сильные гпушки там, а 100 аш 100 и они недоиспользуются. Хочется как-то тоже с этим это поработать, это улучшить и так, чтобы вся гпуша использовалась, что можно сделать? Вот самое простое.
30: Super такой безлайн наверное давайте просто возьмём ту же самую архитектуру, но будем дообучаться на лету, то есть будем брать имбединги и только их обучать новые товары, которые пришли, и новые.
31: Юзеры их инициализируем, всю модель оставляем нетронутой и только вот эти вот эмбеддинги обновляем. Какой так из плюсов, так из плюсов у нас.
32: Наша моделька остаётся, мы только поверх нашей основной модельки докидываем вот эту инкрементальную модельку, мы, получается, её подучиваем на свежих, у нас остаётся та же архитектура, но в прод получается сразу появляется новое объявление, которое
33: Недавно пришли, вот как я уже говорил, у нас есть наша таблица эмбеддингов, мы используем, ну, точнее дообучаем только те, которые мы непосредственно только что добавили, что вообще
34: Этот инкремент сначала там был какой-то прирост качества, мы капнули в ab, получили результаты, и сразу в выдаче появляются новые объявления, но из за этого и появился минус у нас теперь 2 моё.
35: Ну условно у нас предыдущая моделька, которая требовала много gpu теперь ещё вот эта моделька ну кстати она может спокойно инферится на цпу, потому что не так много дообучать, но все равно у нас 2 икс от ресурсов, у нас 2 моде.
36: Которые нужно поддерживать и сложнее проводить аб, потому что если мы хотим ещё что-то катнуть, то нам нужно получается ресурсов для 4 уже моделей. Давайте от этого попробуем уйти и перейти вот к 1 Нетай модели.
37: Что в этом случае делаем? Берём, получается, нашу изначальную модель, просто её имбединги фризим и дообучаем нашу нета модель.
38: По батчам, которые приходят раз в n минут ну у нас получилось то, что получается минимально, это вот каждые 20 минут появля обрабатывается каждый бач, и мы можем
39: Ну, дообучать нашу модель, как это вообще работает. Вот у нас есть кликстрим, у нас отдельный есть воркер, который нарезает наш кликстрим по 20 минут, кладёт его в redis, говорит то, что вот, вот этот бач, его можно брать и
40: N. Воркеров получается, они смотрят из редиса, составляют расписание и берут самый старый патч, который вот нужно дообучать, его отправляют в сервис и закидывают снепшоты, те.
41: Эмбеддингов, которые, которые он затронул. Зачем это нужно? Потому что, может, не знаю, что-то произойти, какой-то бач не подняться. Остальные должны вот это подхватить. Либо сам воркер может просто упасть. Вот.
42: Это у нас все кроется в нашем контуре, который называется flow. Это по сути надстройка на куб флоу, вот он оркестрирует вот эти вот все пайплайны, как раз-таки там работает этот.
43: Воркер, который подготавливает данные и n воркеров, которые дообучаются вот, вот у нас, как я уже говорил, есть наш кликстрим, мы его разделяем, закидываем в редис, делаем дедупликацию, потому что
44: Мы читаем из кафки там какие-то может быть
45: Пересылки и прочее. И поэтому оставляем только те айтемы, которые уникальны. И у нас есть наша какая-то ватермарк, которая показывает, на каком мы сейчас этапе находимся, потому что, как я уже говорил, у нас очень много пользователей.
46: И, соответственно, европейская часть, она в 1 половину дня добавляет очень много данных. Вот. И там иногда может быть небольшое расхождение, что происходит внутри нашей, нашего
47: Модели вот этого 1 воркера, он в 1 очередь, когда стартует, он качает свежий снэпшот из эстри, ну, саму биланову модель и качает вот эти вот инкремент.
48: Которые получались при каждом двадцатиминутном окне, скачивает события, которые были уже заранее подготовлены предыдущим воркером инференсе. А, ну да, обучает его по гео маске.
49: Загружает в сервис. И после этого вот тот снэпшот, который он сейчас сделал, закидывает на иис 3. Сколько времени вообще все это идёт? Вот у нас в начале мы просто копим окно из данных. Это примерно 10 минут на все.
50: Все выходит, потом идёт обучение инференс отправка и
51: Ну, мы, хендли, нашу очередь, которая скопилась нашим воркером, который подготавливает данных. В итоге сейчас мы укладываемся где-то в 99 процентиле, где-то 20 минут, 25 минут.
52: На все про все уходит. Для всех получается 52 категорий. Прям полностью уйти от модели авито ффм не получается, потому что, как я уже говорил, она не знаю, 1 из самых первых моделей и
53: Получается её просто выпилить, потому что она используется ещё в куче других продуктов, как супер базовый источник кандидатов, но мы можем оставить её как нашу базу. То есть нам как-то нужно инициализировать наши
54: Мы 1 раз обучаем её.
55: И, по сути, вот эти вот предсказания, они используются и в других моделях, и для нас получаются наши имбединги. Но возникает момент, как я уже говорил, она обучается 6 часов и стартует в 19:00 примерн.
56: По мск за это время, за то время, пока она обучается, у нас скапливается очередь из воркеров. Вот. Но так как это все дело происходит ночью, она очень быстро разгребается, там добавляется
57: Ещё пару воркеров, благодаря которому вот эта очередь из 6 часов накопленного, накопленных данных очень быстро разгребается.
58: Как я уже говорил, мы обучаемся по чанкам, от этого хочется тоже как-то избавиться, потому что 1 дело инференсить 52 модели, а другое дело 4000 там 200 с копейками.
59: Че мы в этом случае делаем? Давайте попробуем супер простое. Просто обучать 1 модель на категорию, избавиться полностью от Чанков. Посмотрели в оффлайне. Это работает хорошо, ничего не
60: Не просаживаем и просто при инфините применяем гео маску, просто берём те айтемы, которые находятся в 1 гео с юзером и среди них ищем ближайших соседей уже внутри нашего нужного
61: Региона ещё из таких, не знаю, Хаков, которые помогли. Вот у нас есть супер крупные категории условно, там автомобили, все, все, можно их держать в памяти, но
62: Проблема в том-то, что они очень большие, вот можно применить такую штуку как scar садом мы обновляем только те строки, которые действительно затронули, а так иначе вот у нас есть какой-то батч, мы обновляем все, причём
63: Это работает только на крупных категориях. Если мы будем использовать на мелких, то страдает качество. Вот видно то, что вот можно почти вдвое уменьшить потребление памяти и из за этого
64: Можно инференсить на меньшем количестве гпу. То есть тут тоже в этом выигрыш. Как я уже говорил, у нас модель, она в принципе берет бейзлайн раз в сутки и каждые 4 часа.
65: Заново инициализируется, это нужно, потому что периодически там поды падают в flow и либо че то не выделяется, либо из других очередей они, ну там свои проблемы уж вот, и
66: Из за этого у нас каждые 4 часа закидывается условно тот снепшот, который мы сейчас уже накопили. И каждые 20 минут небольшие дельта дельта. Это условно те строки, которые мы только на которых мы, которые мы обновили. Вот, и если у нас какой-то
67: Какой-то под упал на нём инференс ось 20 условно, там категорий, то остальные категории, ну остальные воркеры поймут то, что он упал, потому что скапливается очередь в редисе, и они не отдают условно вот этот флаг, и они
68: Берут на себя эти категории и полностью восстанавливают исходную модель из с 3. То есть мы, по сути, здесь теряем 1 дельта, которое дальше само воспроизведётся на других воркерах. Также у нас есть
69: Такая штука, как кэш моделей как я уже говорил, то, что у нас все находится на gpu, чтобы нам не перетаскивать их между рамом и памятью самой гпушки мы че делаем, у нас есть условно наш.
70: Горячие категории, они находятся на пушках. Мы понимаем то, что какие-то из них скоро пойдут в обучение, мы смотрим в очередь, выкидываем
71: Тушки, которые те категории, которые скоро не будут обучаться, закидываем из рам тёплые вот эти категории и все. Вот, да, как я уже говорил.
72: Есть штука, которая распределяет нагрузку, если какой-то под упал, то он просто другие поды понимают это и берут. Также есть такая вещь, как дрейф наших эмбеддингов. Зачастую вот у нас есть какая-то категория
73: Мы периодически дообучаем её, и они могут очень сильно отличаться от того, что если б мы вот сразу всю модель обучали. Вот, но у нас для этого есть alert, который просто это мониторит.
74: Вот и все. В среднем на категорию уходит 6 гигабайтов памяти. Получилось все это уместить в 4 Пода и свежесть вот этих айтемов вместо 6 часов они попадают
75: За 25 минут на главную вот да вот ещё получили прирост по контактам и самое главное уменьшили утилиза ну точнее увеличили утилизацию гпу, но в целом уменьшили количество gpu.
76: Вообще, какие дальнейшие планы? Вот у нас, как я уже говорил, у нас есть
77: Наша модель, которая берет из кафки, но на самом деле там немножко все хитрее устроено. Там отдельный воркер, который скачивает кусок данных из кафки, перекладывает на с three, потом это обрабатывается и только потом этот воркер берет и нарезает вот эти вот штуки.
78: Видно, это супер дикий костыль, который так, так исторически сложилось. В общем, от этого хочется избавиться, перевести это на spark и вместо 20 минут ещё быстрее получается обучать потом.
79: Как уже говорил, у нас раз в сутки обучается наша моделька, это, это окей, но как будто бы мы в этом случае тоже используем ресурсы. От этого хочется избавиться.
80: Поэтому переходим на полностью нашу инициализацию, ещё добавляем информацию с прошлых бачей. Это как-то сразу не завелось, но
81: В общем, хочется, да, вот избавиться от забывания, и чтобы меньше дрифтили имбединги. Поэтому просто докидываем информацию из прошлого, че на самом деле это уже сделано, просто ждёт своей очереди для того, чтобы запуститься.
82: И как я уже говорил, там супер простая моделька. У нас просто эмбеддинги, мы делаем так, чтобы они были в 1 пространстве.
83: Хочется тоже это улучшить. Ну то есть есть место для улучшений, то есть там как-то по другому сделать архитектуру. Вот на этом все. Надеюсь, вам было интересно.
84: Вот это наш канал в тг. Подписывайтесь. Все. Спасибо. Так. Да, спасибо за доклад большое. Давайте перейдём к вопросам. Вот вижу.
85: 1 вопрос. Спасибо за доклад. Было очень интересно. Я, конечно, с рекомендательной системой вообще не знаком, но у меня будет 2 совершенно глупых вопроса. 1 вопрос после
86: Внедрение этих изменений. Получили ли вы какой-то прирост по бизнес части? Зачем вы вообще это улучшаете и как вы это измеряете потом в проде? И 2 вопрос. Вот у меня девушка, она очень много сидит в авито.
87: И у неё просто нереальные рекомендации, как настроить такие же рарные, мне быстро так, ну по 1 вопросу, да, как я уже говорил, мы это все проверяли через бэшку.
88: Там есть прирост в нашей там главной метрике. Условно, это контакты. Насколько там юзеры контактируют с баерами. Вот как настроить рарные рекомендашки, которые показывают супер нишевые айтемы, это больше
89: Давать данных авито. Вот и наши алгоритмы, они подстроятся под интересы. Больше сидеть, да, на авито.
90: Салават, подскажи, пожалуйста, а почему 20 минут? То есть это так максимум можно выжить? Или это осознанно? Потому что условно для товара незачем условно делать, короче или длиннее?
91: Ну это, это максимум пока то, что можно выжить, как я говорил там сейчас основная проблема это с тем, как мы из кафки напрямую получаем данные. Вот кажется, вот этот момент можно улучшить и сократить ещё, по крайней мере,
92: На минут 5 7. Вот. И это уже получается максимум, сколько можно со всем дообучением и инференс сделать. Спасибо. Угу.
93: Да, спасибо большое. Подскажи, пожалуйста, по каким правилам вы находите трейдов между эксплорейшн и эксплуатейшн?
94: Ну, смотри, вот у нас есть наша архитектура, в принципе, там все модельки, они обучаются на, ну, на клик стриме, в той или иной, в той или иной степени используется этот кликстрим у нас.
95: Есть, есть пару движков, которые как раз-таки заточены на то, чтобы
96: Периодически докидывать пользователю какие-то айтемы, которые ему будет интересно. То есть есть основные движки, которые напрямую зависят от бизнес цели, которые стараются
97: Докидывают такие айтемы, с которыми он, скорее всего, проконтактирует. А есть те, которые, ну, условно, там был график с графом, там используется случайное блуждание, и мы, таким образом, там, не знаю, отходим влево, вправо и пыта.
98: Пытаемся какие-то другие атомы подкинуть. Есть моделька, про которую вот рассказывали, по моему, в прошлом году на ods кросс кат, она как раз-таки подкидывает пользователю новые атомы, ну, свежие айтом, которые только, только, только появились. Вот, ну,
99: Таким образом, просто различные движки, они за что-то отвечают и какие-то из них отвечают как раз-таки за вот эти 200 рекомендации, да, спасибо. Спасибо большое. Было интересно долевое соотношение как раз-таки этих движков. Так
100: Но как-то прям напрямую соотношение мы так не делаем. То есть какого-то крутилки этому дадим более доверенное, этому нет, такого нету.
101: Спасибо за доклад. У меня вопрос такой. Бизнесовый, перетекающий в технический. Вот я как пользователь авито, чаще продаю товары, чем покупаю. И иногда я могу зайти там, что-то погуглить, посмотреть, сколько стоит товар, чтобы выставить плюс минус рыночную цену.
102: И потом, авито мне начинает предлагать эти же товары. Хотя я уже выставил такой же похожий, как вы решаете. То есть у вас есть incremental, модель, которая там каждые 20 минут собирает какие-то события. Есть ли у вас события о том, что человек выложил такой товар? И, скорее всего, ну, типа,
103: Рекомендовать его нерелевантно. Для него это 1 вопрос. И 2, как бы, у, если такого нет, то насколько это усложнит время обучения инференса вот этих вот дополнительных моделей incremental, которые у вас там по событиям работаю.
104: И 2 ещё подвопрос. Вот ездил в другой город, искал авто под аренду, вернулся к себе в родной город. Мне также авито предлагает, ну, арендовать авто, хотя это, ну, для меня нерелевантно. То есть я в другом регион.
105: Это искал. Так, я про 1 часть вопроса задумался, потому что это вот Ровно то, что у нас сейчас в букло лежит, у нас есть, ну, задачку, по крайней мере, сейчас делаем это то, что байер, ну, Селлер.
106: Вот человек, который продаёт, он на свои же объявления, периодически там заходит и смотрит. И мы, соответственно, всю ему рекомендацию, все рекомендации такие же закидываем. Вот сейчас активно работаем над этим. И 2, это про
107: Про то, что человек меняет регион. Ну, мы показываем ему старый. Вот сейчас тоже это под аб у нас появляется отдельная моделька, которая предсказывает энти, то есть насколько поль.
108: Интересен тот или иной регион, тип, события, регион и что-то ещё, я не помню, если честно. И, соответственно, тоже это надеюсь, скоро с этим что-то сделаем. Ну, по крайней мере, это сейчас пытаемся. Да, я доуточню 2 вопро.
109: Дело не только в интересности региона, а в том, что я сменил регион, а мне в текущем регионе предлагают объявление, которое я гуглил в другом. Ну то есть аренда авто, которая мне была интересна в другом городе, чтобы прокатиться по региону. Я приехал в свой домашний, мне предлагают
110: Аренду авто в домашнем регионе, хотя в целом мне это уже не актуально. Ну да, вот как раз-таки эта и модель и определяет, насколько в принципе, интересен, интересна категория на данный момент и интересно гео. То есть она так хитро обучается. Вот, и
111: Ну вот, соответственно, этот, оцениваете ли вы, насколько у вас увеличится время, когда вы будете добавлять вот эти события, которые вы дополнительно будете считывать, сильно ли увеличится время инференса модели инференса?
112: Ну, ну, до обучения инференса, в смысле, вот этот весь пайплайн, так.
113: Ну, сейчас это не оцениваем, но, в принципе, как я уже говорил, там в архитектуре, вот у нас есть наши кандидаты генераторы, потом есть ранкер, который, получается, ранжирует и блендер, вот, который как раз-таки блендированный ую, категорию в единую
114: Ленту. Вот. И, соответственно, на сами кандидаты генераторы это не должно повлиять. Вот как будто бы блендер должен это понять то, что там, ну, нужно как-то сменить вот эти вот категории региона. Угу. Спасибо большое.
115: Так, давайте. Может, ещё у кого-то есть вопросы?
116: Есть последняя возможность получить приз за лучший вопрос.
117: Так, вопросов нет. Давай я спрошу, но вне конкурса во что, ну, проводили ли какие-то оффлайн эксперименты, чтобы сделать оценку? Вот.
118: Увеличится ли качество, если ещё уменьшите время учёта вот этих событий последних, ну, с 20 минут, например, на 10, вот, чтобы как-то оценить, что вам дадут ещё эти дополнительные минуты. Вот, да, как раз-таки там было в
119: Планах, то, что мы хотим сократить не просто так, потому что чем больше мы вот сокращаем, тем более релевантные, мы сразу даём объявления пользователю, которые недавно появились. И вот поэтому хочется ещё сократить вот это время. То есть какая-то кривая у вас такая, да, да, ну
120: Там есть точка насыщения, после которого нету смысла. Вот. Но, как говорится, там офлайн с онлайном не всегда очень хорошо бьётся. Вот. Пока что хочется максимум выжать как можно быстрее делать потом, когда
121: Я уже в технические вот сложности, которые уже никак не побороть, тогда, наверное, уже можно будет прекратить это.