Как реклама Яндекса генерирует GPT-нейросетями заголовки для 3 миллиардов объявлений / Ольга Зайкова

Таймкоды

00:03 Введение

  • Замена доклада о нейросетях на китайских камерах.
  • Представление доклада о том, как Яндекс использует GPT для рекламы.
  • Ольга расскажет, как Яндекс справляется с ресурсоемкостью GPT.

01:00 Генерация рекламы

  • Обсуждение генерации рекламы и использования тяжелых моделей.
  • Фокус на решении проблем с нагрузкой.
  • Пример крупного бизнеса с множеством товаров.

02:54 Процесс генерации рекламы

  • Использование файлов фидов для описания товаров.
  • Стриминговая контент система на технологиях RT.
  • Два фактора для генерации объявления: активный товар и задача на генерацию.

04:47 Ранжирование заголовков

  • История изменения подходов к генерации заголовков.
  • Переход от шаблонной генерации к ранжированию.
  • Внедрение тяжелых моделей для улучшения качества заголовков.

07:18 Внедрение GPT

  • Объяснение GPT и его использование для генерации заголовков.
  • Пример товара и его идентификация для GPT.
  • Первый подход к внедрению GPT и его результаты.

10:20 Онлайн генерация

  • Переход к онлайн генерации заголовков.
  • Ограничения по количеству GPU карт.
  • Преимущества и недостатки двух подходов к генерации заголовков.

13:07 Обработка данных

  • Обработка событий обновления рекламных данных.
  • Включение и выключение рекламных задач.
  • Обработка ошибок и починка состояния рекламных объявлений.

14:44 Оптимизация процессинга

  • Восстановление рекламных объявлений и их переобучение.
  • Отбрасывание незначительных изменений в процессинге.
  • Приоритет генерации для новых товаров и рекламодателя.
  • Обновление заголовков при изменении модели.

16:29 Инфраструктура процессинга

  • Шардирование и обработка очередей с товарами.
  • Оптимизация CP модели и распределение нагрузки.
  • Влияние на сервис Яндекс GPT: рост нагрузки и уменьшение бачей.

19:10 Оптимизация бачей

  • Оптимизация расположения объектов на карте.
  • Создание больших бачей для равномерной загрузки GPU.
  • Влияние больших обновлений на нагрузку сервиса.

21:09 Решение проблемы больших обновлений

  • Разделение очередей на маленькие и большие обновления.
  • Постепенная обработка больших обновлений.
  • Снижение нагрузки на сервис и улучшение стабильности.

23:22 Внедрение сервиса ранжирования

  • Вынесение моделей ранжирования во внешний сервис.
  • Экономия RAM и гибкое масштабирование.
  • Возможность внедрения новых внешних вызовов.

26:11 Обработка ошибок ранжирования

  • Завершение итерации процессинга при ошибке ранжирования.
  • Повторение процесса генерации при неудаче.
  • Избегание накопления ошибок и улучшение стабильности.

29:08 Итоги и выводы

  • Разработка сервиса для инса моделей.
  • Налаживание взаимодействия процессинга и сервиса вычислений.
  • Экономия RAM и использование скромного количества GPU.
  • Важность связывания тяжёлого процессинга и инса моделей.

30:04 Важность самовосстановления и равномерного распределения нагрузки

  • Самовосстановление системы полезно для продуктовой разработки.
  • Равномерное распределение нагрузки помогает утилизировать ресурсы и экономить ресурсы внешних сервисов.
  • Важно искать способы не блокировать GP вычисления.

31:01 Примеры использования несетевых заголовков и ранжирования

  • Пример с несетевыми заголовками: использование шаблонов для достижения продуктовой миссии.
  • Пример с ранжированием: необходимость использования внешнего сервиса для генерации.

31:57 Вопросы и ответы

  • Вопросы от зрителей: тестирование заголовков, использование генеративных моделей, ранжирование.
  • Ответы на вопросы: эксперименты с заголовками, использование различных подходов для улучшения качества.

35:56 Каширование и генерация заголовков

  • Каширование заголовков для похожих товаров.
  • Необходимость генерации заголовков для каждого товара из-за различий в атрибутах.

37:50 Использование готовых инструментов и обучение моделей

  • Использование готовых инструментов для обучения моделей.
  • Разработка инфраструктуры для сервисов.

39:41 Равномерное распределение больших заливок

  • Определение больших заливок и их обработка.
  • Оценка потока задач и его распределение.

40:39 Ускорение сервисов и планы на будущее

  • Планы по уменьшению количества используемых GPU.
  • Покрытие всех продуктовых сценариев с текущим количеством GPU.

43:22 Завершение и распределение подарков

  • Благодарность за активность и вопросы.
  • Распределение подарков от Яндекса и других спонсоров.

Расшифровка видео

0:03
[музыка]
0:12
Всем привет друзья в очередной раз обращаю Ваше внимание у нас произошла замена и не будет рассказа про нейросети
0:19
на китайских камерах мы желаем здоровья Максиму который хотел рассказывать про них
0:25
Надеюсь он выступит на нашей следующей конференции и мы презентуем вам не менее
0:31
интересный доклад про то как реклама Яндекса использует gpt вообще многих
0:38
останавливает от использования gpt то что они супер ресурсо емкие и в лот
0:43
сервисах их применение очень ограничено И вот Ольга сегодня расскажет нам про то как они в Яндексе смогли обойти эти
0:51
ограничения Оля поприветствуем
0:56
[аплодисменты] [музыка]
1:02
Всем привет И несмотря на то что мы сейчас на секции Сбер девайсов речь пройдёт про Яндекс и про то как мы
1:09
генерируем рекламу используя достаточно небольшое количество GPU карт для начала хочу провести небольшой
1:17
опрос скажите у кого есть не в продакшене поднимите руку воу много
1:22
почти все А у кого в продакшене есть стриминговая контент
1:30
инто Ага люди есть но мало процентов наверное
1:37
15 сегодня речь пройдёт именно про соединение тяжёлых
1:43
процессинговый Давайте начинать о чём этот доклад мы поговорим
1:49
Как устроена генерация рекламы в целом И как мы соединяли наш высоко нагруженный процессинг который обрабатывает
1:56
миллиарды товаров и превращает их в рекламный и при этом мы используем тяжёлые модели
2:02
такие как dssm бусты Яндек gpt и другие и фокус доклада будет направлен на то
2:08
как были решены проблемы с нагрузкой которые возникали на нашем пути Ну примерно на каждом
2:14
шагу сначала обсудим Что такое генерация рекламы Представьте что вы владелец
2:20
крупного бизнеса к примеру У вас есть сайт где много-много ваших товаров
2:25
представить себе такой сайт в интернете не составляет никакого труда это может быть яндексмаркет где миллиарды товаров это
2:33
может быть Все инструменты ру Эльдорадо да впрочем любой сайт а также у вас
2:39
может быть небольшой бизнес где вы тоже что-то продаёте и вы хотите продвигать Эти
2:44
товары как это сделать Вы можете прийти в Яндекс Директ и завести рекламу руками
2:49
то есть ввести заголовок ввести текст который будет отображаться на поисти добавить картинку и увидеть сво
2:56
объявление на просторах интернета если у вас много товаров то
3:01
наверное никаких эмко в мире не хватит чтобы завести такую рекламную кампанию
3:07
поэтому вы можете принести нам описание ваших товаров в так называемых файлах фидах их как правило умеют выгружать
3:13
различные модули на сайтах А если такого модуля нет то вы можете принести Нам лишь свой домен мы сами с помощью наших
3:20
ль алгоритмов обойдём ваш сайт и поймём что какие сущности на нём похожи на
3:25
товары и отправим их на генерацию именно ра моего доклада мы с
3:31
вами и поговорим У нас стриминговая контент
3:36
система Мы работаем на технологиях РТ поверх базы данных рус Но для простоты
3:42
восприятия Вы можете представлять себе н Спарк или что вам привычнее для того чтобы рекламное
3:48
объявление появилось должно сойтись два фактора во-первых должен быть активный товар то есть та веь которая в наличии
3:56
на сайте А во-вторых должна быть задача на генерацию обявления Что такое задача
4:01
на генерацию наверняка если у вас крупный бизнес вы не хотите рекламировать все все товары вместе по одной и той же
4:08
ставке одной одним и тем же пользователем в одном регионе Вы хотите как-то гибко это разбивать Яндекс Директ
4:15
представляет такую возможность Вы можете прийти в интерфейс разбить вашу рекламную кампанию на группы и для
4:22
каждой группы задать свои настройки поэтому для каждого товара мы смотрим К какой группе он относится и также В
4:28
задачах на генерацию в дальнейшем прорастут на банер такие как например информация о
4:35
доставке мы совершим много-много Маги о которой мы с вами будем разговаривать весь этот доклад и получим рекламное
4:44
объявление самой технологичной частью нашей генерации является подбор
4:50
заголовка а именно та то что вы видите сверху крупным планом на поиске И то
4:55
есть описание самого товара пори временем в даком 2001 году у нас была
5:03
шаблонная генерация и как такового ранжировании не было мы выбирали подходящие по длине
5:08
заголовки потом мы естественно захотели аранжировать все варианты заголовков
5:14
которые у нас есть и выбирать лучший а потом у нас случился бум GP
5:19
Нейро сеток и мир изменился нам пришлось совершить много-много изменений в нашей инфраструктуре чтобы заголовки у
5:26
навались неями сейчас мы уже боремся за повышение
5:31
качества поэтому внедряем тяжёлые берты в наше ранжирование чтобы сделать его ещё
5:37
лучше посмотрим как мир выглядел до 2021 года представим У вас есть товар
5:43
холодильник по цене 50.000 руб и какие заголовки благодаря этим шаблонам вы
5:48
можете составить Ну холодильник по цене 50.000 руб холодильник в наличий выгодно
5:54
купить и холодильник и у нас в процессинг был категори который понимал какой категории относится товар к
6:02
примеру это может быть одежда или же техника и для каждой такой категории был заранее подобранный набор шаблонов и они
6:09
были отсортированы по популярности с помощью опросов асессоров и раньше у нас
6:15
не было ранжирование мы брали просто первый подходящий по длине шаблон Ну кажется что так реклама действительно
6:21
появится у неё будет достаточно корректная заголовок но выглядело это ВС весьма
6:27
Скучно поэтому мы быстро перешли к идее ранжирования сначала когда мы заказали у
6:33
команды ML генерации какую-то модель которая будет ранжировать заголовки они принесли нам
6:39
bert bert модель тяжёлая должна считаться на GPU Мы подумали Ну вот есть
6:45
realtime Processing в нём десятки тысяч событий в секунду ну
6:51
не будем мы на каждое событие ходить в Берт мы пока не умеем решать задачу Дружбы ритам процессинга и каких-то
6:57
внешних походов поэтому мы попросили сделать что-то полегче что мы можем считать на CPU
7:03
прямо в процессинг Так нам принесли dssm + catboost Который весил всего 3 ГБ и
7:09
считался наравне с нашей продуктовой логикой то есть на тех же ресурсах в тех же машинках
7:18
процессинга а потом настало время Яндекс gpt и здесь уже не попросишь принести
7:24
что-то маленькое что считается на CPU и настало время больших новых инфраструктурных
7:31
внедрений Давайте сначала подумаем как объяснить не сети что перед ней находится здесь вы видите пример нашего
7:37
товара реализованного в Jon это Hyundai santafe и с помощью алгоритма генерации
7:44
подводки неть уже может разобраться что перед ней Ну наверняка машина и сделать это она может по полям vender
7:51
год modification ID То есть если бы мы рекламировали к примеру джинсы Ну венде
7:58
бы точно не было выпуска вас бы вряд ли
8:03
интересовал Давайте теперь подумаем Как сделать так чтобы наш процессинг узнал о
8:08
несетевые заголовках естественно первый подход хотелось сделать максимально
8:13
простым чтобы вообще понять есть ли деньги есть ли конверсии Есть ли счастье пользователей за этим внедрени и в
8:20
группе ML генерации уже был процесс сбоку строящийся поверх мапри Дьюса
8:25
который вычитывать через GPU и получал заголовки и они
8:32
писали табличку заголовками и мы подумали А что если у нас процессинг уже
8:39
умеет читать товары из очереди то Пускай он научится читать и табличку давайте
8:45
сделаем это тогда pel обработки выглядит следующим образом Сначала мы берём батч
8:51
товаров генерируем заголовки шаблонами получаются рекламные объявления эти
8:57
рекламные объявления сохраняются когда-то в будущем подхватит их процесс оффлайн
9:02
генерации перебой своим асом и сделает альтернативный заголовок к нам в процессинг придёт альтернативный
9:09
заголовок мы с помощью dssm ПБ сравним этот заголовок и заголовок полученный шаблоном выберем лучший и поставим его
9:17
на баннер чем такой подход плох Ну естественно что заголовки приходят
9:25
нетай но при этом нас удивило насколько они конверсионные и за GT нейросетями
9:30
действительно есть будущее чтобы не быть голословно Давайте посмотрим на пример того как выглядели рекламные объявление
9:37
до появления Яндекс GP и после есть заметное отличие что Несе смогла вынести
9:43
любимую киновселенную героев Marvel на передний план что наверняка привлечёт Ваше внимание а также сразу посветил
9:50
какие-то важные атрибуты нашего товара то есть сказала что товар 12 дюймов шари
9:55
размером 12 дюймов и их в коробке п штук снизу в описании добавила такие вещи как
10:01
большой выбор выгодные цены что тоже привлекает глаз пользователей но порой нейросети имели
10:08
свойство ошибаться и здесь вышел достаточно забавный пример
10:20
нейрогенез манит модерация но на случай если всё-таки нейросеть где-то ошиблась
10:26
и сделала с нашим товаром что-то некорректное У нас есть отдельные типы событий которые мы умеем подкладывать в
10:32
процессинг которые блокируют несетевые заголовки И как только мы узнали что
10:39
нейросети классные конверсионные нужно внедрять Мы подумали что нужно переходить в мир онлайн генерации То
10:46
есть как только к нам приходит товар мы нашли его задачи на генерацию нужно идти в нейросеть и спрашивать какой заголовок
10:52
Ты подберёшь для этого товара но случилась большая неприятность
10:58
у нас карт на наш поток у нас 3,5 млрд объявлений а GPU карт 22 штуки надо
11:06
как-то жить Ну вы Спросите ну Яндекс такая большая компания мы на хайлоу Ну
11:11
почему 22 GPU Ну как так вроде огромная компании и действительно у нас в рекламе
11:18
есть некоторый л GPU на которых мы и обучаемся и строим наши ратай
11:25
процессы и большинство карт у нас уходит на подсчёт им бенго ин – это векторное
11:30
представление некоторой сущности то есть сущностью Может быть как поисковый запрос так и профиль пользователя то
11:37
есть на поисковой рекламе мы ищем ближайшее к запросу объявление а в рамках рекламной сети Яндекса Где нам
11:44
где нет запроса который может нам помочь в выборе мы смотрим непосредственно на пользователя и подбираем рекламу
11:51
персонально и есть л карт на которых проводятся эксперименты именно в таком ле мы провернули нашу оффлайн генерацию
11:58
естественно это пул ограничен поэтому её оффлайн генерация не устраивала нас тем что она
12:03
долгая и мы естественно хотим уложиться в наименьшее количество GPU карт Ну потому что ресурс дорогой нужно чтобы
12:11
железо на внедрение досталось всем Давайте попробуем написать на наш
12:18
сервис генерации и представим как он выглядит у нас есть realtime Processing который обрабатывает товары он получил
12:24
для каждого товара несколько шаблонных заголовков и пошёл в сервис нейрогенез у
12:30
нас маленький 22 GPU и 22 машинки сервис ответил дальше нейросетевой заголовок
12:37
сравнивается с шаблонами посредством ранжирования выбирается лучший крепится на
12:42
баннер Давайте посмотрим В чём плюсы и минусы двух подходов с одной стороны есть Неоспоримый плюс что для новых
12:50
товаров мы мгновенно получаем нере сетевого кандидата и также мы не вредим
12:56
нашей архитектуре то есть мы не заливаем внешние таблицы процен а из минусов могу выделить
13:02
капасити нашего сервиса мы могли обрабатывать лишь 10.000 объявлений в секунду
13:07
а всего на процессинг льётся порядка 70к rps и то в спокойном режиме когда не
13:13
приходит больших заливок но о них мы поговорим чуть позднее Давайте разберёмся Как нам жить
13:21
если у нас данных в процессинг много а капати сервиса небольшое Ну вообще
13:27
Давайте разберёмся какие события у на нас есть что мы обрабатываем во-первых это обновление рекламных данных
13:33
во-вторых это событие включения и выключения рекламных задач на генерацию то есть Если вы передумали рекламировать
13:40
какую-то компанию нам придёт события по выключать такие-то такие-то баннеры и мы это мгновенно должны обработать и
13:47
в-третьих это
14:00
представим что у нас есть потоковая обработка и в нашей обработке поселился
14:05
бак естественно мы попортили Некоторое количество баннеров После этого мы нашли бак его
14:12
пофиксили А баннеры с ошибками по какой-то причине мы не можем найти к примеру у нас просто была Не очень
14:18
удачная нейросеть и мы не можем разобраться Какие заголовки оказались испорченными и нейросеть мы выкатили на
14:24
какой-то короткий промежуток времени и отловили ошибку с помощью разметки
14:31
нам надо как-то починить наш стейт с рекламными объявлениями и в этом нам поможет
14:44
переобувается мы восстановили то дальше восстановятся и сами рекламные
14:52
объявления но Стоит задуматься к чему вообще здесь рассказ проо обход и про починку процессинга Ну вообще он к тому
14:59
что можно здесь понять Как найти ключ к несоответствию нагрузке на процессинг и
15:04
нагрузке на сервис Давайте подумаем вот если мы будем ходить в нейросеть только на на события
15:19
переобладнати всё-таки подумаем Как сделать лучше потому что 3 по дня всё-таки долго во-первых хочется
15:26
отбросить незначительные изменения в нашем процессинг То есть если например цена не влияет на итоговый формат
15:33
заголовка ибо то не будем её добавлять в подводку и соответственно не будем ходить в нейросеть для таких
15:40
объявлений во-вторых нам нужно дать приоритет генерации для новых товаров потому что как только к нам пришёл новый
15:47
пользователь новый рекламодатель мы сразу хотим чтобы он на поиске видел красивые заголовки и видел что его
15:53
реклама классная конверсионная его объявления быстро набирают статистику
15:59
и в-третьих нужно добрать в квоту запросов сервис то есть в тот ба в который мы ходим те рекламные объявления
16:05
для которых перег не было дольше всего зачем это нужно Ну во-первых это ключ к
16:10
тому что чтобы мы быстро обновляли наши несетевые заголовки при изменении модели
16:17
То есть если модель поменялась нам за какое-то конечное время нужно
16:29
уже классно срезали большой поток событий и примерно уравнял что что-то могло пойти не так
16:36
как вы думаете что это могло быть правильно это изменение в нашей инфраструктуре лта
16:44
процессинга посмотрим как он устроен У нас есть шардирование
16:49
позиционированный очередь с товарами которые мы читаем и сам процессинг обрабатывает одну очередь в один поток
16:56
Как он это делает он вычитывает Ключи из таблицы поднимает профили их
17:02
обрабатывает сохраняет записывает в базу данных результат и тут мы поняли что наш
17:08
процессинг совершает очень много разной работы и эта работа по-разному влияет на ядро а именно мы делаем продуктовую
17:15
логику мы делаем лупы во внеш во внешней таблице мы ходим в сервис генерации мы
17:21
сами у себя в процессинг считаем достаточно CP модели и захотелось оптимизировать CP то есть такая про
17:29
инфраструктурное внедрение способное нам помочь в процессинг и мы решили давайте у нас
17:35
чтение из очереди будет синхронным дальше обработку мы будем параллели тем самым распределяя нагрузку на ядро более
17:43
равномерно а затем соединять результаты и делать одну операцию записи и получались так называемые сарды
17:51
То есть под шарды распределение шар несколько потоков Давайте
17:57
посмотрим повлияло на сервис инфе если раньше у нас один шарт в
18:03
обработке очереди давал один запрос с количеством товаров X на сервис Яндекс
18:09
gpt то теперь всё изменилось у нас уже н потоков соответственно и запросов N штук
18:15
А вот банеров в нашем баче стало намного меньше кратно количеству наших потоков
18:23
как это повлияло на сервис Ну во-первых не трудно догадаться то что выросла нагрузка летит летит просто больше
18:29
запросов кратно числу потоков во-вторых на GPU попадает меньше объектов за раз потому что батч наших
18:37
запросов уменьшился и карта оказалась не
18:43
дозагрузка GPU Мы просто не можем себе позволить он настолько дорогой Что использовать его эффективно нельзя
18:50
в-третьих вырос CPU usage потому что наше ядро тем и занималось что
18:56
брало бач с товарами раско ждало пока карта это посчитает
19:10
запаковывают
19:18
до того момента как на клиентском сервисе истечёт таймаут то есть ВС мы начинаем обработку
19:24
А прон уже не ждт этого ответа кажется плохо Дава подумаем что здесь является
19:31
ключевым на самом деле Ключевое здесь естественно GP и нужно оптимизировать
19:36
расположение наших объектов на карте поэтому Давайте подумаем как нам вернуть
19:41
большой бач естественно хочется сделать вание и делать его можно в двух местах
19:47
во-первых в рамках самого процессинга То есть у нас есть много потоков которые собираются пой с
19:54
товарами во внешний серс пому дава
19:59
Мы подумали Ну вроде бы это должно работать но наверное если мы специально стараемся максимально оптимизировать U
20:06
Time на процессинг то мы так делать не хотим Ведь мы добавим ещё одно блокирующее Ожидание и процессинг
20:11
замедлится а с другой стороны у нас есть сервис inf Яндекс gpt и он очень
20:16
маленький относительно процессинга там всего 22 пода а запросов него льётся море То есть процессинг сильно больше по
20:23
количеству машин и по числу запросов чем сервис Яндекс gpt поэтому давайте
20:29
сделаем перепони там перед тем как отправлять товары на карту Мы сначала
20:34
соберём из нескольких запросов их в один большой батчи Таким образом мы с одной стороны
20:41
загрузили карту целиком сделали это равномерно а с другой стороны у нас
20:46
Появилась возможность не просаживается быстро сервис под большой нагрузкой
20:55
Но что же ещё могло пойти не так мы реклама и мы очень зависим от наших
21:00
клиентов когда к нам приходит большая пачка обновлений к примеру вы огромная
21:05
компания и вы решили поменять цены на всех товарах в вашем сайте устроить огромную распродажу или же мы сами
21:11
решили
21:28
лак залетел до небес итерации процессинга становятся чаще тем самым если у нас есть с одной итерации
21:35
ограниченный набор товаров с которыми мы идём на карту в карту мы начинаем ходить всё чаще и чаще за не регенерацией и
21:42
сервис inf на GPU просто не справляется с нагрузкой И падает начинает много
21:48
пятисот что мы решили делать раз мы страдаем от крупны клиентов то давайте пойдём от решени этой
21:54
проблемы и Мы научились внутри системы понимать когда приходит большая заливка
22:01
то есть научились отличать маленькие изменения от пачки от огромной пачки и
22:07
получилось две очереди одна которую мы обрабатываем штатно это все изменения
22:12
все перепродать с большими изменениями которые мы читаем с ограниченной
22:19
скоростью действительно тогда мы с одной стороны не начинаем процессинг для неё
22:24
сразу а делаем Это по кусочкам и возможно Вы подумаете Что ну рекламодатели же будут видеть что они
22:30
приносят новые данные А мы их не подхватывает буквально в несколько минут
22:37
и это уже позволяет нам снизить нагрузку на сервис вот здесь вы видите на графике пример того как стал выглядеть наш такой
22:44
игрушечный график лага после внедрения теперь очередь с товарами не вызывает
22:50
такого сильного дисбаланса на лаг чте тепер при то ме ровный а
22:59
конфигурация процессинга никак не влияет на Ирен то есть мы разработали алгоритмы
23:04
которые равномерно загружают наш сервис а также Мы научились масштабировать наш
23:10
процессинг то есть менять в нём как количество шардов так количество сашар дов число потоков число машин что угодно
23:17
теперь сервис Независимый что мы решили сделать дальше вспомним про ранжирование У нас есть
23:24
маленькая ДСМ п CB которые говорят что они то есть я дистиллированной версие
23:31
Берта и за то время пока мы внедряли Яндек gpt эта модель значительно выросла если раньше она весила 3 ГБ то теперь
23:38
она весит 8 а также у нас более тысячи машин и это только в продакшене и у
23:43
нашей команды ML генерации были амбициозные планы по развитию этих моделей то есть хотелось внедрять что-то
23:49
новое хотелось учить новые модели хотелось растить эти модели и мы поняли что мы просто будем жечь ресурсы на то
23:55
чтобы поддерживать их в процессинг тут мы уже понимали что у нас есть опыт
24:00
регенерации отдельно от процессинга поэтому может быть и эти модели вынесем во внешний
24:07
мир как тогда будет устроена наша система приходит бач с товарами мы идём
24:12
за задачами на генерацию под каждую задачу делаем своё рекламное объявление подбираем шаблонами заголовки идём в
24:19
сервис Яндекс gpt получаем ро сетевого кандидата на установление заголовком выбираем лучший но уже не в процессинг а
24:27
идём в сервис Рен получаем от него ответ и победителя крепим на баннер Про Сервис Яндек gpt Мы
24:34
уже поговорили поэтому Давайте сфокусируйся на сервисе ранжирования сервис вышел как и сервис Яндекс gpt
24:40
небольшой всего 50 машин но он позволил сделать нам очень
24:47
важную вещь экономить Рам и гибко масштабироваться теперь у нас репликация
24:52
не x1000 по машинам процессинга А всего лишь x50 потому что в этот сервис можно безболезненно доливать я
24:58
по и доливать раму и репликация будет не столь большой Да и на этом внедрении мы
25:04
сэкономили 75 рамы естественно в рамках рекламных технологий это не так много но так как
25:11
процессинг не использует столько рам обычно то Для нас это оказалось очень
25:16
приятной экономией и мы решили пойти дальше вспомним что наша модель получена путём
25:24
децим затесь поня вотре которых заголовки выбираются
25:29
почему-то плохо Вот вроде бы смотришь глазами есть лучший кандидат но не справляются его выбрать тогда
25:37
Давайте вспомним Давайте раз у нас уже есть некоторый сервис сделаем для него внешний поход в Берт то есть в
25:43
оригинальную модель которая имеет намного Луч лучшее
25:50
качество тогда получится следующая конфигурация Мы идм в сервис ранжирования для определённых товаров
25:56
идм в может ответь и нашу заточен по то чтобы работать как с ответом Берта так и без
26:03
него и таким образом у нас вообще благодаря этому сервису появилось пространство для того чтобы внедрять
26:09
неопределённое бесконечное количество внешних вызовов то есть помимо Берта может появиться ещё внешне сетевой поход
26:15
в другую нейросеть а сервис является такой кй которая в конечном итоге даёт ответ
26:23
процессинга Давайте теперь подумаем А что будет если ответил вот у нас был сервис
26:31
нейрогенез кандидата Ну хорошо но победить шаблонный может быть качество
26:36
не то Ну да В целом нормальное наверное с таким можно жить а
26:41
вот если не ответил сервис ранжирования то вот тут происходит беда
26:46
потому что нет рекламного объявления Мы просто не понимаем какой заголовок выбрать для баннера Давайте подумаем как
26:53
с этим бороться вот подход первый это просто
26:58
идея которую мы даже не стали воплощать мы уже имеем опыт того что мы
27:15
подсовывает что-то в наш процессинг сделаем следующее Пускай если мы пошли в
27:20
сервис ранжирования сервис ранжирование нам не ответил запишем те ключи с рекламными объявлениями для которых не
27:26
удалось выбрать заголовок и процессинг Пускай считывает их опять что тогда получится сервис ушёл в полный датам
27:34
процессинг начинает читать товары превращает их в баннеры идёт в сервис генерации сервис генерации не отвечает
27:40
они попадают в очередь очередь идёт обратно и так по кругу много
27:45
раз получается что-то такое поэтому мы пришли к текущему
27:50
решению Теперь если сервис ранжирование не ответил то
27:57
давайте мы будем завершать с ошибкой итерацию всего процессинга то есть повторять процесс генерации как это
28:03
будет выглядеть У вас есть очередь с товарами мы читаем оттуда небольшой батч
28:08
начинаем обработку подбираем заголовки идём ранжировать проранжировать не получилось тогда Мы отменяем всю
28:15
итерацию повторяем её заново чем это лучше чем предыдущая версия Ну во-первых
28:20
тем что у нас не Копится вторая очередь с ошибками и нам уже не надо делать двойную работу потому что с
28:27
одной стороны у нас прилетают новые товары а с другой стороны сыпятся ошибки создающие на нас нагрузку по
28:33
кругу поэтому теперь получился своеобразный ретрай и если сервис не ответил разово То есть Был небольшой пик
28:39
нагрузки то мы просто повторим итерацию на следующий раз всё заработает А вот если сервис по какой-то причине
28:46
полностью лёг то уже поступит звонок дежурному с информацией о том что сервис пятисот с другой стороны о том что
28:53
Копится лак дежурный придёт починит сервис и начнёт
28:58
обра только те товары по которым реально произошли изменения а не те которые лежат в какой-то очереди
29:05
сбоку на этом наше с вами путешествие заканчивается и Давайте подведём итог и
29:11
обсудим чему Мы научились мы разработали сервис для инса моделей причём как GPU
29:16
intensive моделей так и тех моделей которые считаются на ядре во-вторых мы
29:21
наладили взаимодействие процессинга и сервиса вычислений мы равномерно распределили нагрузку придумали
29:27
алгоритмы перехода победили большие заливки также мы разработали способ для
29:33
равномерных распределений непосредственно больших заливок то есть Мы научились читать не всё сразу а разбивать это на кусочки тем самым
29:41
грамотно утилизируем и наши ресурсы и не Додо внешние сервисы и в четвёртых мы
29:47
сэкономили терабайты Ram на том что вынесли наши модели во внешний мир а
29:53
также используем для генерации достаточно скромное количество GP карт чем наш опыт может быть полезен для
29:59
вас во-первых я хочу подсветить что связывать тяжёлый процессинг и иренс каких бы то ни было моделей вполне
30:06
реально Даже несмотря на то что нагрузка в вашем процессинг сильно превышает
30:11
возможности вашего сервиса во-вторых самовосстановление системы может быть полезным для
30:17
продуктовой разработки в случае
30:23
нейрогенез помогло нам переохолодження
30:28
которых не удалось получить Ниро сетевого кандидата и в-третьих я хочу подсветить
30:34
что важно равномерно распределять нагрузку в момент обработки событий потому что это поможет как вам
30:40
утилизировать ваши ресурсы полностью и не иметь большого запаса на всплески нагрузки так и экономить ресурсы во
30:47
внешних сервисах и не получать тайм при наплыв новых клиентов новых
30:53
событий в четвёртых нужно по возможности искать способ не блокироваться GP вычисления и здесь у меня пример было
31:01
два примера первый пример с несете заголовками если нейросетевого заголовка нет значит используем заголовок который
31:08
мы генерируем шаблонами всё-таки у нас В итоге получается баннер и свои продуктовой
31:14
миссии мы достигаем А был второй пример где мы сделали сервис для ранжирования
31:19
не ответ которого уже приводит к отсутствию генерации и в случае с ранжирования мы не придумали как
31:25
обходить эту необходимость ити во внешний сервис поэтому возможно похожие кейсы есть и в ваших
31:32
сервисах на этом У меня всё спасибо за [аплодисменты]
31:39
внимание А спасибо Ольга пожалуйста голосуете за доклад э ваша обратная
31:46
связь очень важна и для спикера и для организаторов а но Те у кого есть
31:51
вопросы пожалуйста внимание у нас целых три подарка от Сбер Devices от лода и от
31:57
спикера и поэтому нам нужны ваши вопросы те кто смотрит нас онлайн в плеере есть
32:02
кнопочка которая ведёт в чат и там с хэштегом вопрос Вы можете задать свой вопрос подарки доступны даже для онлайн
32:09
участников А давайте начнём из зала поднимайте руки Давайте вот молодой человек во втором
32:17
ряду Большое спасибо за доклад Александр сиров хотел спро А у вас один заголовок
32:25
для каждого товара если нет то как вы между собой их тестируется понимаете Какой лучше
32:32
А спасибо за вопрос У нас есть целый ряд экспериментов Чтобы понять какой
32:37
заголовок лучше ну во-первых у нас есть AB и AB оно
32:42
контентной трудностей есть два подхода КБ можно поделить Наши все наши рекламные объявления на две части на А и
32:49
Б И всем одной части поменять заголовки на какие-то другие к примеру выкатить другую нейросеть и посмотреть что будет
32:56
и сравнить А и Б на непосредственно в отборе в движке посмотреть на какие объявления больше кликают на какие
33:02
больше конверсий есть другой подход которому мы сейчас вот пришли а у нас
33:09
есть возможность в момент кандидата генерации это уже после нашей подготовки
33:14
данных йм процессинг поднять несколько версий баз то есть база с немыми
33:20
заголовками и база например с шаблон заголовками и посмотреть от какого кандидата генератора наш рекламный
33:27
движок полу лучше объявление я понял и я чуть подробнее
33:32
могу обсудить это в ларах Мне кажется здесь давать прям сильно развернутый ответ будет ещё одна лекция на 40 минут
33:38
Да после доклада у нас будет дискуссионная Зона на выходе из зала Давайте следующий вопрос Вот в этой
33:44
части зала молодой человек Добрый день Спасибо большое за
33:51
доклад я хотел уточнить по пайплайн именно по моделям первый вопрос гоня ли
33:57
вы генеративную модель на каждый баннер или как-то отбирается Ну только те ситуации где она нужна Если да то как
34:06
таква и можно сразу второй вопрос то тоже самое про ранжирование то есть там
34:11
есть облегчённый Берт плюс ой п CB и вы
34:16
говорили что потом ещё отправляете в большой Берт при необходимости тоже самое если какое-то того когда это надо
34:23
делать спасибо ага давай спасибо за вопрос нану с конца
34:28
жи в случае с рованием Нам действительно нужно подобрать заголовок на каждое событие Когда у нас произошла генерация
34:35
то есть да для каждого баннера мы идём и смотрим какой заголовок для него самый классный Вт мы ходим только на
34:41
определённом срезе на узком товаров которые которые мы считаем таким болезненным где мы хотим улучшить
34:47
качество вот поэтому в ходим не всегда в
34:58
за когда Входи коэффициент небольшой я не буду раскрывать сейчас здесь
35:03
технические детали но алгоритм просто аналитический вот мы смогли разметить эти запросы таким образом что мы знаем
35:10
что там нужно повысить качество Вот про выбор объектов для
35:15
похода в не россеть Вот был слайд здесь мы тригрим действительно не на каждое событие Мы сначала отбросили то что не
35:22
влияет на заголовок То есть к примеру Мы в не роевые заголовки никогда не пишем цены потому что цены очень волатильные
35:28
могут меняться по несколько раз там даже в минуту порою также у нас преимущество
35:33
есть генерации для новых объявлений и в квоту запросов мы
35:56
добираемся по факту В базе но мы повторяем генерацию раз в какое-то время Угу спасибо спасибо спасибо ещё вопросы
36:04
Из зала молодой чек на первом ряду Да добрый день спасибо за доклад А
36:11
у меня есть такой вопрос он немножко схож наверное с вопросом из той части зала
36:16
А у нас есть большое множество товаров и очевидно что есть достаточно большое
36:22
количество товаров которые очень похожи друг на друга Угу а почему используете
36:28
ли вы какое-то каширование со стороны нейросетей потому
36:33
что допустим берём товары там с одного сайта джинсы одной и той же модели и с
36:38
другого сайта и два клиента вам дают рекламу на один и
36:45
тот же товар по факту почему бы вам не переиспользовать просто сгенерированные э тайтлы для баннеров и если не
36:53
отличаются товары между собой вообще по вашим данным Ага тут ответ на самом деле тоже длинный потому что нам у нас много
37:01
рекламодателей и представим что вот у тебя есть магазин и ты обращаешься к нескольким агентствам чтобы Заводить
37:07
себе рекламу и каждое агентство пришло выгрузил фид и фиды могут быть разные и
37:12
мы по требованию законодательства должны для каждого товара проводить генерацию потому что может быть просто какая-то
37:17
разница то есть Может быть разная цена Могут могут быть разные атрибуты также в момент того когда ты заводишь нам
37:24
заводишь рекламную группу в Яндекс директе ты указываешь определённый набор атрибутов которые тоже прорастут на
37:29
баннер в той группе в которой ты вот принёс товары поэтому эти атрибуты тоже
37:35
идут в подводку для нейросети и Да поэтому чаще всего Нам генерацию нужно
37:41
проводить отдельно но каширование тоже есть но я имею в виду случаи именно когда эти атрибуты не отличаются дру Да
37:48
вот да каширование Тоже есть действительно как в нейросеть так и в ранжировании есть подводка и мы берём
37:54
просто хэши к этой подводки и в памяти Да мы знаем крупных клиентов
38:01
знаем популярные товары вот для них как раз очень стабильный есть слой каширование Понятно спасибо пожалуйста
38:09
Следующий вопрос у нас из онлайна Роман вьюнов используете ли вы для сервиса инфе какой-то готовый инструмент или это
38:15
что-то собственной разработки у нас в Яндексе есть большая-большая команда
38:21
которая занимается Ирен сом gpt моделей и естественно для почёта самой модели мы
38:26
используем но сами сервисы вот эти маленькие кусочки мы пишем сами то есть ту
38:32
инфраструктуру которая принимает запрос отправляет их на карту забирает и пакует и отдаёт пользователю это уже наша
38:40
разработка Спасибо И следующий вопрос также из онлайна от Виктора люткино не пытались ли генерировать несетевые
38:46
заголовки с разметкой добавлять метки для подставления цен цветов и
38:53
подобного занимаюсь инфраструктурой во гото Я не занимаюсь обучением моделей
38:59
и моя команда тоже этим не занимается К сожалению человек онлайн если есть у кого-то в зале такие вопросы
39:05
то я могу вас познакомить с человеком который в Яндексе занимается как раз обучением моделей для нас Ваших
39:11
заголовках Нет плейсхолдер генерирует Яндекс gpt там уже сразу готовый финальный текст Да ну наверное тогда это
39:18
ответ Спасибо Ели у нас ещё вопросы Из зала Давайте вот девушка на первом ряду
39:24
спасибо спасибо за доклад я хотела узнать про равномерное распределение
39:30
больших заливок вот Большая заливка По каким критериям определяется как вы это
39:35
выяснили и чем в модели вашей работы большая заливка отличается например от
39:41
тысячи других обычных маленьких заливок Ага большая заливка отличается тем что
39:47
она имеет большой объём и приходит У нас в одну ну в одну секунду То есть там нет
39:53
размазывания по времени А когда к нам приходит новый пользователь там пока все товары проде там уже есть просто
39:59
какой-то лак и какое-то естественное размазывания что заливка большая у нас
40:05
сбоку есть процесс который знает сколько товаров У пользователя в фиде и И сколько у него задачек на генерацию то
40:10
есть вот та такую сводную статистику мы знаем и так как баннер – это товары
40:16
умноженные на задачи то мы можем оценить Какой это поток если он больше определённого трешхолд очень большого то
40:22
мы отправляем это в отдельную очередь и немножко её тролим а такого чтобы
40:27
рекламодателя таких средне пришли в од секунду не будет Нет я думаю это физически мало возможно Ну и средненький
40:35
рекламодатели они всё-таки такого прилива не создают Ну то есть можно представить себе Если вдруг яндексмаркет
40:40
решит все товары поменять что это будет никаких там бизне компании не могут себе
40:48
позволить такой объём спасибо м большое Давайте последний
40:53
вопрос вот молодой человек В третьем ряду
40:59
Спасибо большое за доклад Скажите пожалуйста То ускорение которое В итоге получили достаточно для ваших целей и
41:07
планируете ли вы дальше развивать Ну ускорять свои сервисы уменьшать
41:13
количество G может идти в тюнинг именно модели уже и какие планы в этом общем
41:20
направлении нам Конечно бы хотелось уменьшать количество используемых GP
41:27
пробовать какие-то новые модели но опять же я не занимаюсь разработкой и обучением самой Яндек gpt мы здесь
41:34
инфраструктур Поэтому если про план то да А если про вопрос Правда ли что нам
41:40
этого хватает в продукте то Давай отвечу Так здесь есть таинственное число 22 то
41:46
есть 22 GPU и возникает резонно вопрос А почему Ну именно столько а именно
41:51
столько потому что мы покрыли все наши продуктовые сценарии которые были следующими длях товарах мы
41:57
преимущественно должны там на 95 проте или всегда получать Нера вых кандидатов
42:03
и мы должны за конечное время у нас это порядка 5 дней
42:27
стат меньше то для многих новых товаров ни ростех заголовков уже не будет И это будет грустно То есть вы как
42:33
рекламодатель пришли принесли нам свой домен мы там Илим что-то на парсли на
42:38
вашем сайте и вот заголовки получились неинтересные вы к нам Приходите в поддержку Говорите Я хочу чего-то
42:43
получше а мы говорим Ну подождите Мы вам потом наге нерим нельзя так так А есть
42:48
сценарий что их станет ещ меньше Ну как их если модель уж то
42:55
конечно хочется их перекидывать наме да то есть использовать их в нашем
43:00
сервисе но просто для других внедрений я понял спасибо большое спасибо за вашу
43:06
активность рад что много вопросов Давайте те которые мы не успели задать Мы после доклада переместимся в
43:12
дискуссионную зону она прямо рядом с выходом из зала а сейчас нам нужно распределить три подарка давай начнём с
43:19
подарка от Яндекса и от тебя Давайте Да мне очень понравился
43:25
вопрос нет да про алгоритмы переобзор
43:57
выбор А давайте отдадим этот подарок первому человеку
44:04
Александр нам на сцену а Александр давайте Ой а меня не видно
44:17
Наверное Давайте на сцену прямо Спасибо за вопрос

Поделиться: