Введение
При расчете рекламных сценариев необходимо сбалансировать и оптимизировать ключевые показатели трех сторон — пользователей, рекламодателей и площадок, причем очень важны расчетный рейтинг кликов (CTR) и коэффициент конверсии (CVR). части рекламодателей точная оценка CTR и CVR играет важную направляющую роль в повышении эффективности монетизации трафика, повышении ROI (возврата инвестиций) рекламодателей и обеспечении удобства пользователей.
Традиционная оценка CTR/CVR, типичные методы машинного обучения включают разработку искусственных признаков + LR (логистическая регрессия) [1], GBDT (Дерево принятия решений с градиентным усилением) [2] + LR, FM (машина факторизации) [3] и FFM (Field-aware Factorization Machine) [4] и другие модели. По сравнению с традиционными методами машинного обучения выдающаяся производительность моделей глубокого обучения в многодоменных и многозадачных средах (распознавание изображений, обнаружение объектов, системы перевода и т. д.) Особенности построения. В то же время одна за другой появляются различные фреймворки глубокого обучения с открытым исходным кодом.Meituan Group Data Platform Center также быстро построила вычислительную платформу GPU, предоставляя кластеры GPU, поддерживая TensorFlow, MXNet, Caffe и другие фреймворки, обеспечивая предварительную обработку данных, обучение модели, прогнозирование в автономном режиме и развертывание модели.Он обеспечивает мощную поддержку итерации алгоритма стратегии различных отделов группы.
Огромные данные о пользователях и продавцах Meituan, а также многочисленные факторы, влияющие на сложные рекламные сценарии, предоставляют широкие возможности для применения методов глубокого обучения. В этой статье будут объединены специальные бизнес-сценарии рекламы, чтобы представить применение и исследование глубокого обучения в сценарии поисковой рекламы Meituan. В основном он включает следующие две части:
- Исследование модели передачи оценок CTR/CVR от машинного обучения к глубокому обучению
- Автономное обучение оценке CTR/CVR/инженерная оптимизация онлайн-оценки на основе модели глубокого обучения
2. Исследование модели от машинного обучения до глубокого обучения
2.1 Сценарии и особенности
Поисковая реклама Meituan включает в себя поиск по ключевым словам, проверку каналов и другие услуги, охватывающие более 200 сценариев применения, таких как еда, развлечения, отели, красота, брак, родитель-ребенок и т. д., с различными потребностями пользователей. В то же время существуют уникальные ограничения, такие как географическое положение и время в режиме O2O. В сочетании с приведенными выше сценариями мы выделили следующие категории функций:
- Характеристики пользователя
- Демографические атрибуты: возраст пользователя, пол, род занятий и т. д.
- Поведенческие характеристики: предпочтение продавцов/торговых районов/категорий (в реальном времени, исторические), предпочтение еды на вынос, активность и т. д.
- Функции моделирования: функции, созданные на основе моделирования последовательности поведения пользователя и т. д.
- Особенности продавца
- Характеристики атрибутов: категория, город, деловой район, бренд, цена, акция, рейтинг, отзывы и т.д.
- Статистические функции: статистические функции различных измерений/временной детализации и т. д.
- Особенности изображения: категории, функции моделирования и т. д.
- Бизнес-функции: типы гостиничных номеров и т. д.
- Функция запроса
- Сегментация слов, намерение, сходство с продавцами, характеристики бизнеса и т. д.
- контекстуальные особенности
- Время, расстояние, географическое положение, категория запроса, конкуренция и т. д.
- Позиция показа объявления.
В сочетании с мультикатегорийными бизнес-характеристиками Meituan и уникальными потребностями модели O2O мы сосредоточимся на нескольких бизнес-сценариях и их описании:
- Сценарии потребления пользователей
- "рядом, поблизости«Запрос: в приложениях Meituan и Dianping большинство пользователей инициируют запросы как запросы «рядом», то есть поиск ближайших ресторанов, отелей, мест отдыха и развлечений и т. д. Таким образом, возвращая пользователей к ближайшим торговцам, можно добиться вдвое большего результата. с половиной усилия».Запрос расстояния до продавца«Характеристики вполне могут охарактеризовать эту потребность.
- "Обозначенная территория (деловой район)«Запрос: Найдите продавцов в указанной области, и атрибуты этой области могут быть использованы в качестве информационного представления трафика.
- "Место расположения«Запрос: поисковый запрос пользователя — это определенное место, например «Wudaokou», похожее на указанную область, идентифицируйте координаты местоположения и рассчитайте расстояние от продавца до координат.
- "Главная/Компания”: место потребления пользовательской части — «дом» или «компания», например, поиск еды рядом с «домом», заказ еды рядом с «компанией» и т. д., в зависимости от местоположения пользователя «дом» и «компания». полученный из пользовательского портрета. Определите этот сценарий.
- Мультикатегория
- В соответствии с привычками потребления и методами обслуживания многих категорий, таких как еда, отели, отдых и развлечения, красота, брак, родитель-ребенок и т. д., данные разделены на три части, в том числеЕда, Гостиница, Общее(Отдых, красота, брак, родитель-ребенок и т.д.). вделикатесВыразите потребности пользователя в питании,отельЭкспресс потребности пользователей в поездках и размещении,всестороннийВыражайте другие жизненные потребности пользователей.
- Отслеживание поведения пользователей
- В ходе эксперимента было обнаружено, что поведение пользователей в реальном времени играет важную роль в выражении потребностей пользователей. Например, если пользователь хочет найти ресторан, где можно поесть, он сначала фильтрует еду и обнаруживает, что поблизости есть хот-пот, корейская еда, японская кухня и другие рестораны. для поиска конкретного горячего горшка и так далее. Продавцы, категории, местоположения и последовательности поведения, на которые нажал пользователь, играют важную роль в решении пользователя в следующий момент.
2.2 Модель
Оценка CTR/CVR поисковой рекламы претерпела переход от традиционных моделей машинного обучения к моделям глубокого обучения. Далее кратко представлены традиционные модели машинного обучения (GBDT, LR, FM и FFM) и их приложения, а затем подробно представлена итерация в модели глубокого обучения.
GBDT
GBDT, также известный как MART (множественное аддитивное дерево регрессии), представляет собой алгоритм итеративного дерева решений. Он состоит из нескольких деревьев решений, и выводы всех деревьев суммируются в виде окончательного ответа. Он может автоматически обнаруживать различные отличительные признаки и комбинации признаков, а также сохранять логику предварительной обработки сложных признаков. Facebook внедряет GBDT + LR[5] и добились определенных результатов.
LR
LR можно рассматривать как одноуровневую одноузловую «DNN», которая представляет собой широкую, но не глубокую структуру, и все функции действуют непосредственно на конечный результат. Преимущества модели заключаются в том, что она проста и управляема, но качество эффекта напрямую зависит от степени разработки признаков, что требует очень тонкой обработки признаков и комбинации признаков, таких как непрерывные, дискретные и временные признаки. Переоснащение обычно контролируется такими средствами, как регуляризация.
FM & FFM
FM можно рассматривать как LR с пересечением объектов, как показано на следующем рисунке:
С точки зрения нейронной сети это можно рассматривать как простой метод построения сети, как показано на следующем рисунке:
Модель охватывает широкую модельную структуру LR, а также вводит кросс-функции, которые повышают нелинейность модели, улучшают ее емкость и могут собирать больше информации, а также могут лучше охватывать сложные сценарии, такие как оценка CTR рекламы.
До использования модели DNN модель FFM использовалась для оценки CTR поисковой рекламы.Модель FFM ввела понятие поля и присвоила (n) признаков полям (f), чтобы получить квадратичный член (nf) скрытых векторов. , Формула подгонки выглядит следующим образом:
В приведенной выше формуле ( f_j ) представляет поле, которому принадлежит (j)-й признак. Установите длину скрытого вектора (k), затем сравните с (nk) квадратичными параметрами FM, FFM имеет (nkf) квадратичные параметры, а способность к обучению и выражению также сильнее.
Например, в сценарии поисковой рекламы предполагается, что функции разделены на 8 полей, которыеПользователь, объявление, запрос, контекст, пользовательское объявление, контекстное объявление, пользовательский контекст и другое, по сравнению с FM, он может лучше фиксировать информацию о каждом поле и перекрестную информацию Длина скрытого вектора, построенного по каждому признаку, составляет 8 * ( k ), а все пространство параметров модели равно 8 ( k ) ( n ) + ( п ) + 1 .
Ю-Чин Хуан реализует версию C++Инструментарий модели FFM, но набор инструментов можно обучить только на одной машине, и его трудно поддерживать крупномасштабные обучающие данные и наборы функций; он опускает постоянные и первичные условия и включает только перекрестные условия признаков, что трудно удовлетворить требования оптимизации для определенных функций, поэтому мы разработалиРаспределенный инструмент обучения FFM на базе PS-Lite(Он поддерживает сотни миллионов образцов, десятки миллионов функций и завершает обучение за считанные минуты. Он широко используется в компании.) Были добавлены следующие новые функции:
- Поддерживается распределенное обучение моделей FFM.
- Поддерживает однократное и постоянное изучение параметров, а также поддерживает только однократное изучение параметров для некоторых функций (нет необходимости в перекрестной работе с другими функциями), таких как функции рекламной позиции и т. д. Формула подгонки выглядит следующим образом:
- Поддерживает несколько алгоритмов оптимизации.
Кумулятивный эффект от модели GBDT к модели FFM выглядит следующим образом: Основное улучшение связано с характеристикой крупномасштабных дискретных признаков и использованием более адекватных обучающих данных:
DNN
Как вы можете видеть из приведенного выше введения, сцена Meituan отличается разнообразием и высокой сложностью, и эксперименты показывают, что от линейного LR к FM с нелинейным кроссовером и FFM с кроссовером информации поля сложность модели (модель Увеличение емкости) приводит к улучшение результатов. LR и FM/FFM можно рассматривать как простые модели неглубоких нейронных сетей.Основываясь на следующих соображениях, мы переключаем модель CTR на модель нейронной сети с глубоким обучением в контексте поисковой рекламы:
- Улучшая структуру модели и добавляя глубокую структуру, сквозная структура используется для извлечения нелинейных признаков более высокого порядка и скрытых закономерностей, которые не могут быть захвачены поверхностными моделями.
- Для некоторых объектов с особенно разреженными классами идентификаторов в модели можно изучить плотные представления (вложения), которые сохраняют отношения распределения.
- Воспользуйтесь информацией, такой как изображения и текст, которые плохо используются в простых моделях.
В основном мы пробовали следующие эксперименты по настройке структуры сети и гиперпараметров.
Wide & Deep
Первая попытка — это классическая модель Wide & Deep Model, предложенная Google[6], модель состоит из двух частей, Широкая и Глубокая, в которых Широкая часть может хорошо усвоить высокочастотную часть семпла, а функции, используемые в LR, можно использовать непосредственно в этой части, но для функций класса ID которые не были замечены, способность к обучению модели плохая, и разумная инженерия искусственных признаков полезна для выражения этой части. Глубокая часть может дополнять длинную часть в обучающих выборках, улучшая при этом способность модели к обобщению. Широкая и глубокая части совместно обучаются в этой сквозной модели.
по окончанииСцены и особенностиПосле того, как частично введена разработка функций, мы скорректировали структуру на основе модели Wide & Deep и построили следующую сеть:
В сценарии поисковой рекламы Part_1 на приведенном выше рисунке содержит дискретные функции и дискретные результаты некоторых непрерывных функций (например,Идентификатор пользователя, идентификатор рекламы, идентификатор бизнеса, идентификатор категории, ГЕО, результаты дискретизации различных статистических признакови т.д). Метод дискретизации в основном использует равное частотное разделение или MDLP [7]. Каждый домен строит свой собственный вектор встраивания (отсутствующие признаки и низкочастотные признаки, отфильтрованные в соответствии с определенным порогом, здесь единообразно рассматриваются как редкие признаки), получает представление признаков, а затем сэмплирует через слой пула и объединяется вместе для слияние информации.
Часть Part_2 справа в основном содержит статистические функции в нашем сценарии и некоторые другие входные функции после моделирования и представления (например,Особенности изображения, функции текстад.), сращенные вместе с последним слоем Part_1 для слияния информации.
Part_3 — это несколько полностью связанных слоев, и функции активации подключаются за каждым слоем, например ReLu, Tanh и т. д.
Часть Part_4 в правом верхнем углу в основном содержитПозиция показа объявления(Позиционное смещение) и некоторые дискретные функции, в основном для улучшения памяти модели и повышения способности характеристики. Широкая и глубокая части объединяются, чтобы получить окончательную модель:
Одна из причин, по которой модель глубокого обучения оказывает значительное влияние на такие данные, как изображение и речь, заключается в том, что нам неудобно создавать признаки, которые могут хорошо описывать сцену на данных этого типа.Искусственные признаки + традиционные модели машинного обучения не может быть изучено всесторонне и разумно Представление распределения данных глубокого обучения и сквозной метод глубокого обучения напрямую сочетают метку, чтобы узнать, как извлечь соответствующее представление из исходных данных. Однако в бизнес-сценариях электронной коммерции, таких как Meituan, формы входных данных очень богаты, и многие бизнес-данные имеют четкий физический смысл, поэтому также необходима некоторая ручная разработка функций.Сделайте разумное представление извлечения информации в продвигаться вперед, а затем проходить Нейронные сети учатся лучше выполнять слияние и представление информации.
В сценарии поисковой рекламы Meituan поведение пользователей в реальном времени очень референциально, но если его отправить напрямую в нейросеть в исходном виде, то он потеряет много информации, поэтому мы описываем и представляем его в разных способами, а затем отправить в нейронную сеть для объединения и обучения информации. Другим типом полезной информации является информация об изображениях.Один из способов обработки этой части информации заключается в использовании сверточных нейронных сетей и ГНС для слияния информации сквозным способом, но может быть и сеть.Сложность алгоритма слишком велика. высокая, а также скорость сходимости обучения и т. д., вы также можете использовать CNN для предварительного извлечения признаков, а затем выполнять слияние информации.
Следующие два типа функций данных используются в качестве примеров, чтобы показать, как они используются в модели Wide & Deep.
-
поведение пользователя в реальном времени
- поведенческая сущностьПоведение пользователей в реальном времени включает в себя выбор продавцов (C_P), размещение заказов (O_P), поиск (Q), фильтрацию категорий (S) и т. д. Атрибуты верхнего уровня продавцов включают категорию (Type: C_Type, O_Type), местоположение (Loc: C_Loc, O_Loc) и т. д.
-
Item EmbeddingСоздайте вектор внедрения для объекта поведения пользователя, а затем выполните суммирование/усреднение/взвешенное объединение и склейку вместе с другими функциями. Эксперименты показывают, что производительность объектов атрибутов верхнего уровня (C_Type, O_Type, C_Loc, O_Loc) очень положительная, а автономный эффект значительно улучшен. Однако такие объекты, как C_P, O_P, Q и S, слишком разрежены, что приводит к серьезному переоснащению модели и плохому автономному эффекту. Поэтому мы сделали два улучшения:
- Моделируйте последовательности поведения пользователей индивидуально, используя более адекватные данные. Например, модель LSTM, основанная на текущей последовательности поведения пользователя, предсказывает поведение пользователя в следующий момент и получает «информацию о памяти» в текущий момент как встроенное представление пользователя; или модель Word2Vec, которая генерирует встроенное представление объекта поведения, модель Doc2Vec, получает встроенное представление пользователя. Эксперимент показал, что добавление пользовательского представления встраивания в часть модели Part_2 увеличивает охват функций, а автономный эффект значительно улучшается, а поскольку пространство параметров модели увеличивается очень мало, время обучения модели практически не меняется.
- Используйте встраивание объекта поведения, сгенерированное описанным выше методом, в качестве начального значения параметров модели и выполните точную настройку в процессе обучения модели. При этом для решения проблемы переобучения устанавливается разная пороговая фильтрация для признаков разных предметных областей.
- функция подсчетаТо есть частота появления различных сущностей поведения, которая является более высокой абстракцией сущностей поведения.
- Функция шаблонаНесколько недавних последовательностей сущностей поведения пользователей (таких как A-B-C) используются в качестве признаков шаблона, которые представляют собой последовательные отношения между сущностями поведения и более детально описывают траекторию поведения пользователя.
-
рисунок
- описыватьИзображение продавца в шапке занимает очень важное место в отображении продукта в приложении, а также привлекает внимание пользователя.
- Особенности классификации изображенийИспользуйте VGG16, Inception V4 и т. д. для обучения моделей классификации изображений, извлечения признаков изображения, а затем добавления их в модель CTR.
- E2E modelКомбинируйте широкие и глубокие модели с моделями классификации изображений для обучения сквозной сети.
От модели FFM к модели Wide & Deep накопленные результаты следующие: Основное улучшение связано с нелинейным выражением модели и более адекватной характеристикой большего количества функций.
DeepFM
Команда Huawei Noah's Ark объединила функцию пересечения функций FM с LR и заменила часть LR части Wide & Deep на FM, чтобы избежать искусственного проектирования функций, поэтому DeepFM [8], структура сети показана на следующем рисунке.
По сравнению с частью LR Wide & Deep, DeepFM использует FM в качестве вывода части Wide и делится информацией о встраивании различных функций поля в процессе обучения.
Мы опробовали модель DeepFM на некоторых предприятиях, перенастроили гиперпараметры и добились определенных результатов. Другие предприятия также пытаются. Конкретные эффекты следующие:
Multi-Task
Существует несколько учебных задач в сценарии оценки рекламы, такие как CTR, CVR, объем транзакции и т. Д. Учитывая как соединение между несколькими задачами, так и различиями между задачами, мы используем идею изучения нескольких задач для оценки скорости скорости щелчки и скорость заказа одновременно. Структура модели отображается на следующем рисунке:
- Поскольку две задачи CTR и CVR очень похожи, используется структура «жесткого совместного использования параметров», чтобы полностью использовать параметры сетевого уровня и различать разные задачи только на выходном уровне.
- Поскольку ранг отображения очень мало влияет на поведение при упорядочении, выходной уровень скорости упорядочения не учитывает фактор отклонения ранга.
- Выходной слой добавляет необходимые функции отдельно для разных задач.
- Процессы автономного обучения и онлайн-оценки сокращаются вдвое, а производительность повышается.По сравнению с одиночной моделью эффект в основном такой же:
Недавно Али опубликовал статью «Многозадачная модель всего космоса».9], предположил, что текущий прогноз CVR в основном имеет две проблемы смещения выборки (SSB) и разреженности данных (DS), и предложил метод моделирования глобального пространства (оптимизация CVR с помощью pCTCVR и pCTR) и функцию преобразования для решения. Конкретная функция потерь:
Структура сети такова:
Настройка гиперпараметров
В дополнение к вышеупомянутым попыткам структуры сети мы также выполнили несколько наборов настроек гиперпараметров. Наиболее часто используемые настройки гиперпараметров для нейронных сетей: количество скрытых слоев и узлов, скорость обучения, регуляризация, коэффициент отсева, оптимизатор, функция активации, нормализация партии, размер партии и т. д. Различные параметры по-разному влияют на нейронную сеть.Некоторые общие проблемы нейронных сетей также можно решить, задав гиперпараметры:
- переоснащение
- Ширина и глубина сети должны быть соответствующим образом уменьшены, параметр регуляризации должен быть соответствующим образом увеличен, а коэффициент отсева должен быть соответственно увеличен.
- недооснащение
- Соответственно увеличиваются ширина и глубина сети, уменьшается параметр регуляризации и снижается скорость обучения.
- Проблема исчезновения/взрыва градиента
- Соответствующая функция активации, добавление пакетной нормализации, уменьшение ширины и глубины сети и т. д.
- локальный оптимум
- Увеличьте скорость обучения, подходящий оптимизатор, уменьшите размер пакета и т. д.
- Covariate Shift
- Увеличьте нормализацию пакетов, уменьшите ширину и глубину сети и т. д.
Есть много гиперпараметров, которые влияют на нейронные сети, и настройка параметров нейронной сети также является очень важной вещью. Наиболее практичные методы настройки параметров в отрасли включают:
- Поиск по сетке/Поиск по сетке: это наиболее часто используемый метод при настройке параметров моделей машинного обучения.Для каждого гиперпараметра несколько значений-кандидатов, которые нужно попробовать, дорабатываются, чтобы сформировать сетку, и просматривается комбинация всех сеток гиперпараметров, чтобы попробовать эффект. Простое насилие, если все можно пройти, результат надежнее. Однако затраты времени относительно велики, и, как правило, невозможно попробовать слишком много комбинаций параметров в сценарии нейронной сети.
- Случайный поиск: Bengio в «Случайный поиск для оптимизации гиперпараметров» [10] указал, что случайный поиск более эффективен, чем поиск по сетке. В реальной работе вы можете сначала использовать метод поиска по сетке, чтобы получить все параметры-кандидаты, а затем каждый раз случайным образом выбирать их для обучения. Преимущество этого метода в том, что затраты времени сокращаются за счет выборки, но, с другой стороны, также можно упустить оптимальную комбинацию гиперпараметров.
- Пошаговая настройка: выполните предварительный поиск по диапазону, а затем сузьте диапазон для более точного поиска в зависимости от того, где появляются хорошие результаты. Или зафиксируйте другие гиперпараметры в соответствии с эмпирическим значением, целенаправленно поэкспериментируйте с одним из гиперпараметров и повторяйте последовательно, пока не будут выбраны все гиперпараметры. Преимущество этого метода в том, что он позволяет получить лучшие результаты по количеству приоритетных попыток.
В процессе фактической настройки параметров мы используем третий метод.После инициализации гиперпараметров в соответствии с эмпирическими параметрами параметры настраиваются в следующем порядке: размер скрытого слоя -> скорость обучения -> размер пакета -> выпадение/L1/L2. отлично.
В наборе данных поисковой рекламы экспериментальные результаты различных гиперпараметров выглядят следующим образом:
2.3 Резюме
Модель ранжирования поисковой рекламы претерпела итерации от GBDT --> FFM --> DNN, и в то же время была построена более полная система функций.В офлайн-режиме AUC в совокупности увеличился на 13%+, а онлайн-CTR в совокупности увеличился. на 15%+.
3. Инженерная оптимизация на основе модели глубокого обучения
3.1 Офлайн-обучение
Если программа TensorFlow имеет проблемы с производительностью при работе на одном компьютере, обычно возникают следующие проблемы:
- Сложная логика предварительной обработки подключается во время обучения.
- Выберите правильный метод ввода-вывода.
Процесс предварительной обработки зачистки
На экспериментальном этапе модели для быстрого тестирования логика предварительной обработки данных и обучающая часть модели объединены вместе, а предварительная обработка данных содержит большое количество операций типа ввода-вывода, поэтому она очень подходит для обработки HadoopMR или Spark. . Конкретный процесс выглядит следующим образом:
-
На этапе предварительной обработки выполняются такие операции, как просмотр таблицы и объединение словаря, а результаты запроса объединяются с исходными данными.
-
Преобразуйте данные в формате libfm в метод SparseTensor, который легко работает с TensorFlow:
-
Преобразование необработанных данных в запись TensorFlow.
Выберите правильный метод ввода-вывода
У TensorFlow есть два основных способа чтения данных. Как правило, неправильный выбор вызывает проблемы с производительностью. Два способа:
- Feed_dictДанные подаются в функцию session.run через feed_dict.Преимущество этого метода в том, что идея понятна и понятна. Недостатком является то, что производительность низкая.Причина низкой производительности в том, что данные, подаваемые в сессию, должны быть подготовлены до session.run.Если данные не попали в память раньше, то нужно дождаться поступления данных для входа в память.В реальных сценариях это не только Ожидание ввода данных в память с диска или сети может также включать в себя много работы по предварительной обработке, поэтому это эквивалентно последовательному процессу. После того, как данные попадают в память, последовательно вызывается PyArrayToTF_Tensor, чтобы скопировать их в tensorValue tensorflow. В это время память GPU находится в состоянии ожидания, и в то же время, поскольку вход в Graph of tf пуст, CPU также находится в состоянии ожидания и не может работать.
- RecordReaderТаким образом, tf обрабатывает операцию чтения данных как узел операции в графе в Graph, что сокращает процесс копирования. В то же время в tf также есть концепции пакетной обработки и потоков, которые могут считывать данные асинхронно, гарантируя, что операция чтения данных также может выполняться асинхронно несколькими потоками, когда GPU или CPU выполняют вычисления. Блокировка между узлами в статическом графе: в сложном графе расчета DAG, если есть точка, в которой вычисления выполняются медленно, это вызовет блокировку, и нижестоящие узлы должны будут ждать. На этом этапе первое, что нужно рассмотреть, это то, хранятся ли параметры узла в графе в правильных местах. Например, если вычислительный узел работает на GPU, то если все объекты зависимых переменных этого узла объявлены на CPU, то необходимо выполнить memcpy для его копирования из памяти в GPU. Поскольку вычисления на GPU выполняются быстро, большая часть времени уходит на копирование. Одним словом, если модель сети относительно проста, то эта операция будет очень фатальной; если структура сети сложна, например, сетевой уровень очень глубокий, то эта проблема не является слишком большой проблемой.
В данном случае из-за необходимости повышения пропускной способности, а не только на экспериментальной стадии. Поэтому вам нужно использовать RecordReader для обработки данных.
процесс оптимизации
- Удалите часть предварительной обработки всей программы из кода и используйте пакетную обработку Map-Reduce напрямую (поскольку пакетная обработка может рассредоточить данные, поэтому производительность очень хорошая, 200 миллионов данных разбросаны по более чем 4900 картам, потребовалось около 15 минут на обработку).
- Выходные данные MR представлены в формате записи TensorFlow, избегайте использования Feed_dict.
- Предварительное чтение данных, то есть вытягивание предобработанных данных на HDFS на локальный диск в многопроцессорном режиме (используя библиотеку joblib + shell для вытягивания данных HDFS на локальный в многопроцессорном режиме, что в принципе может заполнить пропускная способность узла 2,4 ГБ/с, поэтому извлечение данных также может быть выполнено в течение 10 минут).
- Программа считывает данные на локальном диске через TFrecordReader, предоставляемый TensorFlow, и улучшение производительности этой части является наиболее очевидным. Производительность оригинальной программы по обработке данных составляет около 1000 шт/сек, при чтении и обработке данных через TFrecordReader производительность составляет около 18000 шт/сек, а производительность примерно в 18 раз выше.
- Так как расчет должен ждать, пока TFrecordReader прочитает данные каждый раз, когда он запускается, пакетный метод не используется. Если вы используете многопоточный пакет, вы можете асинхронно считывать данные во время вычислений. Во всех примерах TensorFlow интерфейс чтения TFRecordReader используется для чтения данных, а затем пакетный сбор данных в нескольких потоках. Однако на самом деле это очень медленно. Необходимо использовать метод read_up_to TFRecordReader и параметр пакета equeue_many=True для достижения максимального коэффициента ускорения. После использования API tf.train.batch производительность повысилась в 38 раз.
На данный момент производительность в основном оправдала наши ожидания. Например, общий объем данных составляет 200 миллионов, а выполнение 1000 записей в секунду занимает около 55 часов в соответствии с предыдущей производительностью. Теперь на запуск уходит около 87 минут, плюс время на предобработку (15 минут) и предварительную выборку данных (10 минут), это занимает около 2 часов без добавления каких-либо вычислительных ресурсов. При параллельной обработке обучение может быть выполнено за считанные минуты.
3.2 Онлайн-оценка
Онлайн-трафик — это лакмусовая бумажка эффективности модели. Модель, обученная в автономном режиме, может играть свою роль только тогда, когда она участвует в оценке реального онлайн-трафика. В процессе эволюции мы разработали стабильную и надежную систему онлайн-прогнозирования для повышения эффективности итерации модели.
Синхронизация модели
Мы разработали высокодоступный компонент синхронизации: пользователям нужно только указать путь HDFS для автономной обученной модели, и компонент будет автоматически синхронизирован с компьютером онлайн-сервиса. Этот компонент реализован на основе HTTPFS, который представляет собой интерфейс доступа в режиме HTTP к HDFS, предоставляемый Meituan Offline Computing Group. Процесс синхронизации выглядит следующим образом:
- Перед синхронизацией проверьте md5 файл модели, только если файл обновляется, его нужно синхронизировать.
- При синхронизации произвольно связывайте машины HTTPFS и ограничивайте скорость загрузки.
- После синхронизации проверьте значение md5 файла модели и сделайте резервную копию старой модели.
Если во время процесса синхронизации произойдет ошибка или тайм-аут, сработает сигнал тревоги и произойдет повторная попытка. Опираясь на этот компонент, мы добились надежной синхронизации файлов модели онлайн в течение 2 минут.
Расчет модели
В настоящее время у нас есть два набора параллельных онлайн-сервисов расчета оценок.
- Модель обслуживания на основе обслуживания переходов
TF Serving — это набор фреймворков, официально предоставленных TensorFlow для онлайн-оценки в реальном времени. Его выдающиеся преимущества: он легко связан с TensorFlow и имеет хорошую масштабируемость. Использование обслуживания TF может быстро поддерживать различные сетевые структуры, такие как RNN, LSTM, GAN и т. д., без необходимости разработки дополнительного кода. Это отлично подходит для быстрых экспериментов и повторения нашей модели.
Таким образом, онлайн-сервисы должны отправлять функции в TF Serving, что неизбежно вводит сетевой ввод-вывод и оказывает давление на пропускную способность и расчетную задержку. Мы попробовали следующие оптимизации, и эффект замечательный.
- одновременные запросы. Один запрос вызовет множество подходящих объявлений. Несколько рекламных объявлений на стороне клиента одновременно запрашивают TF Serving, что может эффективно сократить общую расчетную задержку.
- Идентификация функций. Путем хеширования характеристического имени строкового типа в 64-битном целочисленном пространстве объем передаваемых данных и используемая полоса пропускания могут быть эффективно уменьшены.
Производительность сервера TF Serving неудовлетворительна. В типичной пятиуровневой сети (512*256*256*256*128) предполагаемая задержка одного объявления составляет около 4800 мкс, как показано на следующем рисунке:
- Реализация расчета настраиваемой модели
Поскольку реклама онлайн-сервисов требует чрезвычайно высокой производительности, мы также настроили и разработали специальные вычислительные реализации для основных моделей глубокого обучения. Этот метод можно целенаправленно оптимизировать и избежать ненужного преобразования функций и синхронизации потоков в TF Serving, тем самым повышая производительность службы.
Например, при использовании Relu в качестве функции активации в полностью подключенной модели DNN мы можем использовать методы оптимизации, такие как скользящие массивы, сокращение, регистры и кэш ЦП, следующим образом:
// 滚动数组
int nextLayerIndex = currentLayerIndex ^ 1 ;
System.arraycopy(bias, bOff, data[nextLayerIndex], 0, nextLayerSize);
for (int i = 0; i < currentLayerSize; i ++) {
float value = data[currentLayerIndex][i];
// 剪枝
if (value > 0.0) {
// 寄存器
int index = wOff + i * nextLayerSize;
// CPU 缓存友好
for (int j = 0; j < nextLayerSize; j++) {
data[nextLayerIndex][j] += value * weights[index + j];
}
}
}
for (int i = 0; i < nextLayerSize; k++) {
data[nextArrayIndex][i] = ReLu(data[nextArrayIndex][i]);
}
arrayIndex = nextArrayIndex;
Предполагаемая задержка одной рекламы после оптимизации составляет около 650 мкс, как показано на следующем рисунке:
Подводя итог, нынешняя онлайн-оценка использует стратегию «хождения на двух ногах». Используйте TF Serving, чтобы быстро поэкспериментировать с новыми структурами моделей, чтобы обеспечить эффективность итерации; как только модель станет зрелой и переключит основной трафик, мы разработаем пользовательские реализации для обеспечения производительности в Интернете.
модельный эффект
С помощью нашей слоистой экспериментальной платформы мы можем легко распределить трафик и завершить опытный эксперимент о малом трафике модели. Слоистушая экспериментальная платформа также обеспечивает данные о эффекте в реальном времени небольшого потока с незначительной гранулярностью, что удобно для оценки модели и мониторинга эффектов.
4. Резюме и перспективы
После периода исследований и практики бизнес поисковой рекламы добился определенных результатов и накопления в рейтинге моделей глубокого обучения. Далее мы продолжим итеративную оптимизацию с точки зрения функций, моделей и инженерных разработок. С точки зрения функций, он глубже проникает в намерения пользователя, изображает контекстные сцены и сочетает в себе мощную выразительную способность модели DNN, чтобы в полной мере использовать роль функций. В модели изучите новые сетевые структуры и объедините CNN, RNN, механизмы внимания и т. д., чтобы воспользоваться преимуществами моделей глубокого обучения. Продолжайте следить за отраслевыми тенденциями и применять их в бизнесе на основе реальных сценариев. С точки зрения инженерии, следите за новыми функциями TensorFlow и оптимизируйте проблемы, возникающие в текущих практических приложениях, чтобы улучшить производительность и эффекты. Мы продолжаем исследовать.
использованная литература
[1] Chapelle, O., Manavoglu, E., & Rosales, R. (2015). Simple and scalable response prediction for display advertising. ACM Transactions on Intelligent Systems and Technology (TIST), 5(4), 61.
[2] Friedman, J. H. (2001). Greedy function approximation: a gradient boosting machine. Annals of statistics, 1189-1232.
[3] Rendle, S. (2010, December). Factorization machines. In Data Mining (ICDM), 2010 IEEE 10th International Conference on (pp. 995-1000). IEEE.
[4] Juan, Y., Zhuang, Y., Chin, W. S., & Lin, C. J. (2016, September). Field-aware factorization machines for CTR prediction. In Proceedings of the 10th ACM Conference on Recommender Systems (pp. 43-50). ACM.
[5] He, X., Pan, J., Jin, O., Xu, T., Liu, B., Xu, T., ... & Candela, J. Q. (2014, August). Practical lessons from predicting clicks on ads at facebook. In Proceedings of the Eighth International Workshop on Data Mining for Online Advertising (pp. 1-9). ACM.
[6] Cheng, H. T., Koc, L., Harmsen, J., Shaked, T., Chandra, T., Aradhye, H., ... & Anil, R. (2016, September). Wide & deep learning for recommender systems. In Proceedings of the 1st Workshop on Deep Learning for Recommender Systems (pp. 7-10). ACM.
[7] Dougherty, J., Kohavi, R., & Sahami, M. (1995). Supervised and unsupervised discretization of continuous features. In Machine Learning Proceedings 1995 (pp. 194-202).
[8] Guo, H., Tang, R., Ye, Y., Li, Z., & He, X. (2017). Deepfm: A factorization-machine based neural network for CTR prediction. arXiv preprint arXiv:1703.04247.
[9] Ma, X., Zhao, L., Huang, G., Wang, Z., Hu, Z., Zhu, X., & Gai, K. (2018). Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate. arXiv preprint arXiv:1804.07931.
[10] Bergstra, J., & Bengio, Y. (2012). Random search for hyper-parameter optimization. Journal of Machine Learning Research, 13(Feb), 281-305.
об авторе
Сюэ Хуан присоединился к Meituan в марте 2016 года, в основном занимаясь работой, связанной с моделью ранжирования поисковой рекламы. Яо Цян присоединился к Meituan в апреле 2016 года, в основном занимаясь исследованиями и применением связанных алгоритмов, таких как отзыв поисковой рекламы, механизм и сортировка. Юлин присоединился к Meituan в мае 2015 года, в основном занимаясь инженерной оптимизацией, связанной с ранжированием поисковой рекламы. Ван Синь присоединился к Meituan в апреле 2017 года и в основном занимается управлением кластером графических процессоров и инженерной оптимизацией глубокого обучения.
Набор персонала
Рекламная платформа миссии США отвечает за американскую группу в магазине напитков, в интегрированном магазине (брак, красота, отдых, обучение, обучение родителей и детей, домашнее украшение), коммерческие достижения гостиничного туризма. Поиск рекламы на основе сотен миллионов пользователей, миллионов продавцов и десятков миллионов заказов на добычу полезных ископаемых, при этом обеспечивая пользовательский опыт и интересы продавцов. Приглашаем заинтересованных студентов присоединиться к группе алгоритмов поисковой рекламы. Резюме, пожалуйста, доставьте: leijun # meituan.comЕсли вы заинтересованы в нашей команде, вы можете следить за нашимистолбец.