[Перевод] Машинное обучение и Intel Xeon: рекомендательная система для внутриигровых покупок Tencent
— Лошадью ходи, век воли не видать!
Для того, чтобы усовершенствовать способы взаимодействия с пользователями, Tencent внедрила рекомендательную систему. Эта система построена на основе методов машинного обучения и призвана помогать пользователям принимать решения о внутриигровых покупках.
Бизнес Tencent основан на интернете. Компания предлагает множество сервисов, среди которых социальная сеть, веб-порталы, решения для электронной коммерции и многопользовательские онлайновые игры. Здесь мы расскажем о том, что собой представляют рекомендательные системы, об алгоритмах машинного обучения, которые использует Tencent, и о том, как процессоры семейства Intel Xeon помогли улучшить производительность системы Tencent.
Рекомендательные системы
Рекомендательная система — это механизм, который выдаёт список рекомендованных пользователю предметов, который может что-нибудь из него выбрать. Такие системы широко используются для того, чтобы помочь пользователям решить, что именно им нужно. Эти системы не ограничиваются играми. Они применяются для подбора музыкальных композиций, фильмов, научных публикаций и так далее.
В случае с Tencent, одно из применений рекомендательной системы заключается в том, чтобы посоветовать пользователю игровые товары, соответствующие его потребностям.
Рекомендательная система создаёт список элементов с использованием следующих методов: коллаборативная фильтрация, контентная фильтрация, и гибридный подход.
Коллаборативная фильтрация — это алгоритм, который выдаёт рекомендации, основываясь на оценках или поведении пользователей системы. Он анализирует деятельность или предпочтения и предсказывает, основываясь на схожих чертах уже изученных и новых пользователей, что может понравиться последним.
Алгоритм контентной фильтрации основывает рекомендации на свойствах объектов, сведениях о пользователе и о его интересах.
Гибридный алгоритм включает в себя всё лучшее из двух вышеописанных подходов. Tencent, в своей рекомендательной системе, использует алгоритм машинного обучения, основанный на логистической регрессии. Расскажем в двух словах о том, что это за алгоритм.
Логистическая регрессия
Логистическая регрессия — это статистический метод прогнозного анализа. Он является одним из самых популярных методов машинного обучения для двоичной классификации. Такая классификация подразумевает наличие двух классов. Например, «выигрыш» или «проигрыш», «да» или «нет», «истина» или «ложь»,»1» или »0». Подобное, скажем, происходит, когда делают ставки на скачках. Лошадь либо выиграет гонку, либо проиграет, то есть, имеется два класса: «выигрыш» и «проигрыш». В данном случае целевая (зависимая) переменная — ставка. Она будет иметь значение 1, если лошадь выиграет гонку, и 0 в противном случае.
Логистическая регрессия — это способ найти вероятность логарифма отношения шансов возникновения некоего события с использованием следующего уравнения:
p — это вероятность наличия события.
1-p — вероятность отсутствия события.
β — веса.
x — независимые переменные.
В ходе вычислений находят коэффициенты β в вышеприведённой формуле для предсказания вероятности возникновения события.
Рекомендательная система Tencent и Intel Xeon E5 v4
Система машинного обучения Tencent анализирует огромные объёмы данных о поведении игроков для того, чтобы сформировать рекомендации о том, какие игровые предметы им стоит использовать. Таким образом, нужна серьёзная вычислительная мощность для максимального ускорения обучения модели. Для вычисления коэффициентов логистической регрессии активно используется DGEMM. DGEMM — это функция перемножения матриц для чисел двойной точности с плавающей запятой.
Система машинного обучения использует функцию DGEMM посредством библиотеки Intel Math Kernel Library (Intel MKL). Процессоры Intel Xeon E5 v4 поддерживают набор инструкций Intel Advanced Vector Extensions 2 (Intel AVX2). Intel MKL хорошо оптимизирована, она позволяет добиться очень высокой производительности с использованием Intel AVX2. Библиотека автоматически определяет новые возможности процессоров, и, если она на это рассчитана, пользуется ими. Поэтому, если в некоем проекте задействована Intel MKL, для обеспечения наилучшего уровня производительности на новых процессорах достаточно поддерживать библиотеку в актуальном состоянии.
Тестирование производительности
Здесь мы сравним производительность двухпроцессорных систем при работе с приложением, реализующим алгоритм машинного обучения Tencent.
Первая система основана на Intel Xeon E5–2699 v3 (2.3 ГГц, 18 ядер, 45 Мб кэш-памяти) и оснащена 128 Гб ОЗУ (DDR4–2133 МТ/с).
Во второй используются процессоры Intel Xeon E5–2699 v4 (2.2 ГГц, 22 ядра, 55 Мб кэш-памяти) и такая же, по объёму и характеристикам, оперативная память.
На тестовые машины установлена Red Hat Enterprise Linux 7.2-kernel 3.10.0–327. Применяется следующее ПО: GNU C Compiler Collection 4.8.2, OpenJDK 7, Spark 1.5.2, Intel MKL 11.3.
Нижеприведённые результаты испытаний показывают улучшение производительности приложения, и, соответственно, модуля вычисления коэффициентов.
Сравнение производительности приложения с использованием процессоров Intel Xeon E5–2699 v3 и v4.
Приложение поддерживает масштабирование, при исполнении на Intel Xeon E5–2699 v4, у которого больше ядер, оно способно запустить больше параллельных процессов, нежели на Intel Xeon E5–2699 v3, что ведёт к уменьшению времени обучения системы и росту производительности.
А вот — результат испытаний на Intel Xeon E5–2699 v4 при отключенном и включенном наборе инструкций Intel AVX2. Видно, что с AVX2 модуль расчёта коэффициентов логистической регрессии работает на 44% быстрее.
Сравнение производительности модуля расчёта коэффициентов логистической регрессии на Intel Xeon E5–2699 v4 с отключенным и включенным Intel AVX2
Обратите внимание на то, что приведённые выше результаты испытаний справедливы для конкретного набора программного и аппаратного обеспечения, они, кроме того, отражают результаты оптимизации ПО для процессоров Intel. Любые изменения в конфигурации способны эти результаты изменить. То же самое, в части влияния конфигурации на результаты, касается и универсальных тестов производительности. Поэтому, принимая решение о приобретении оборудования стоит, во-первых, воспользоваться разными источниками информации о производительности, во-вторых — учитывать то, как может повлиять на производительность комбинация, скажем, некоего микропроцессора и оперативной памяти или других аппаратных и программных компонентов системы. Подробности о производительности систем от Intel можно найти здесь.
Выводы
Рекомендательная система для внутриигровых покупок встроена в игры Tencent. Оптимизация её производительности позволяет ускорить процесс принятия решений, что даёт системе возможность быстрее рекомендовать игрокам наиболее подходящие им игровые предметы. Библиотека Intel MKL использует набор инструкций Intel AVX2, что ведёт к улучшению производительности приложений, в которых она используется, на системах, оснащённых процессорами Intel Xeon.