Авторы: Акшай Бахадур и Аюш Агарвал
Следующая запись в блоге является частью курсовой работы «Машинное обучение в производстве» (17634) в Университете Карнеги-Меллона. В этом обсуждении мы рассмотрим сценарий рекомендации фильмов в отношении следующих двух фреймворков.
- BigDL: распределенная платформа глубокого обучения, разработанная Intel с открытым исходным кодом. BigDL — основная тема нашего обсуждения в этом блоге.
- Streamlit: платформа для разработки и развертывания веб-приложений для приложений обработки данных. (только для разведки)
Ресурсы
Теперь, когда мы упомянули ресурсы и сформировали основную идею блога, давайте поговорим о некоторых стандартных определениях.
- Система рекомендаций. Система рекомендаций – это программа фильтрации, основной целью которой является прогнозирование "рейтинга" или "предпочтения" пользователя в отношении предмета или предмета, относящегося к предметной области.
В нашем случае этот элемент, относящийся к домену, — фильм; поэтому основной задачей нашей системы рекомендаций является фильтрация и прогнозирование только тех фильмов, которые пользователь предпочел бы, учитывая некоторые данные о пользователе. - BigDL. BigDL — это распределенная платформа глубокого обучения для платформ и рабочих процессов с большими данными. Он реализован в виде библиотеки поверх Apache Spark. Это позволяет пользователям писать свои приложения для глубокого обучения в виде стандартных программ Spark, работающих непосредственно в существующих кластерах больших данных.
- Streamlit. Streamlit – это инструмент, который позволяет пользователям быстро создавать высокоинтерактивные веб-приложения на основе своих данных, модели машинного обучения. Он также может развернуть веб-приложение в облаке, просто отправив изменения на GitHub.
Постановка задачи ✨
Рекомендации по фильмам сложны, потому что мы можем подходить к ним разными способами, тем более что у нас есть множество точек данных, которые можно смоделировать для рекомендации. Попробуем проанализировать некоторые проблемы.
- Масштаб: для такой компании, как Netflix, у которой есть 2769 часов оригинальных фильмов, более 3600 фильмов и более 1800 телешоу, что дает в общей сложности более 10000 часов просмотра. В 2020 году у Netflix было 30 миллионов подписчиков в более чем 200 странах. Таким образом, создание системы рекомендаций для пользователей является трудоемкой задачей.
- Традиционные методы машинного обучения. Традиционные методы машинного обучения становятся неэффективными по мере увеличения масштаба данных. Ручная разработка функций становится громоздкой в масштабе.
Подходит 🎍
Хотя обсуждаемая выше проблема сложна, в прошлом было несколько подходов к ее решению. Кратко пробежимся по некоторым из них.
- Совместная фильтрация. Интуиция, лежащая в основе совместной фильтрации, заключается в том, что если пользователи А и Б имеют схожие вкусы в продукте, то А и Б, вероятно, будут иметь схожие вкусы и в других продуктах.
- На основе контента: системы на основе контента генерируют рекомендации на основе предпочтений и профиля пользователя, сопоставляя пользователей с элементами с уровнем сходства.
- Гибридный подход. Как следует из названия, мы объединяем оба вышеупомянутых метода, чтобы извлечь лучшие функции и исключить плохие в этом подходе.
БольшойDL 🧱
Теперь, когда мы обсудили проблему и подходы к рекомендации фильмов, уместно обсудить основу для реализации стратегии.
BigDL используется при создании крупномасштабных приложений ИИ для распределенных больших данных. В рамках платформы BigDL несколько модулей выполняют определенные задачи.
- DLlib: распределенная библиотека глубокого обучения для Apache Spark.
- Orca: плавное масштабирование конвейеров TensorFlow и PyTorch для распределенных больших данных.
- RayOnSpark: запускайте программы Ray непосредственно в кластерах больших данных.
- Chronos: масштабируемый анализ временных рядов с использованием AutoML
- PPML: анализ больших данных и машинное обучение с сохранением конфиденциальности (экспериментальная версия)
- Обслуживание: распределенный и автоматизированный вывод моделей в средах потоковой передачи больших данных.
В этом блоге мы будем обсуждать BigDL в целом и конкретно Orca (там, где это необходимо).
«Больше данных = больше вычислительных ресурсов = больше затрат»
Особенности BigDL 🦄
- Он поддерживает API, аналогичный Torch и Keras, для построения моделей нейронных сетей.
- Он поддерживает крупномасштабное распределенное обучение и вывод, используя масштабируемую архитектуру базовой платформы Spark.
- BigDL предоставляет выразительную модель программирования глубокого обучения с интегрированной аналитикой данных.
- В рамках единого унифицированного конвейера анализа данных пользователи могут эффективно обрабатывать огромные наборы данных с помощью API-интерфейсов Spark, передавать распределенный набор данных в модель нейронной сети и выполнять распределенное обучение или логические выводы поверх Spark.
Рекомендации фильмов с BigDL 🍿
BigDL полезен для обработки больших наборов данных, а также для крупномасштабного распределенного обучения и логических выводов. BigDL может быть полезен для обработки сценария рекомендации фильмов, когда мы пытаемся масштабировать нашу систему рекомендаций фильмов.
Для получения более подробной информации об исходном коде посетите GitHub Source.
Инициализация
- Установить JDK
- Установить BigDL
- Настройте среду для выполнения: мы использовали «локальное» выполнение для экспериментов, но мы можем изменить его на кластерный режим через пряжу.
Набор данных
Для задания мы использовали набор данных MovieLens 1 миллион.
- Количество оценок: 1000000
- Количество пользователей: 6040
- Количество фильмов: 4000
Модель
Для моделирования мы использовали абстракцию Keras BigDL.
- Слои GMF: Создаем эмбеддинги пользователя и фильмов. Возвращается обобщенная факторизованная матрица.
- Слои MLP: выходные данные слоев GMF используются для составления многослойной модели восприятия. Были добавлены плотные слои для распространения изученных функций по сети, а слои Dropout были реализованы для предотвращения переобучения.
Сведения о компиляции
- Оптимизатор: Оптимизатор Адама
- Потеря: разреженная категориальная кроссэнтропия
- Выход: 5 занятий (оценка фильма от 1 до 5)
Эксперимент
- Потери поезда: 0,8198
- Точность поезда: 0,71
- Потеря теста: 1,416
- Точность теста: 0,58
Прогнозирование и кэширование
- Для каждого пользователя и данного фильма модель предсказывает вероятность присвоения этому фильму рейтинга n [n варьируется от 1 до 5]. Это можно увидеть на изображении ниже как часть DenseVector.
- Система рекомендует фильмы, прогнозируемый рейтинг которых больше или равен трем (≥3). Этот порог можно настроить в соответствии с требованиями системы.
- Кэширование рекомендаций.
Полученные результаты
Для получения более подробной информации о результатах посетите Веб-приложение BigDL Movie Recomendation.
Мы рекомендуем вам проверить результат самостоятельно в нашем Веб-приложении BigDL Movie Recommended. Веб-приложение создается и развертывается с помощью Streamlit.
- Посетив страницу, вы можете нажать кнопку Generate Insights, чтобы получить сводку по набору данных.
- Сделайте выбор на боковой панели, выберите идентификатор пользователя и количество рекомендаций. В раскрывающемся списке выберите жанр фильма (жанр по умолчанию установлен на все).
Преимущества 💎
- Встроенная поддержка Spark: BigDL позволяет напрямую применять модели нейронных сетей в стандартной архитектуре распределенной потоковой передачи для больших данных (с использованием Apache Kafka и Spark Streaming), которые эффективно прозрачно масштабируются до нескольких узлов. В результате это значительно повышает производительность разработчиков и эффективность развертывания сквозного рабочего процесса потоковой передачи.
- Распределенное обучение. Принимая во внимание опыт работы с системами больших данных (т. е. крупномасштабную функциональную вычислительную модель), BigDL предоставляет жизнеспособную альтернативу для обучения распределенной модели. Это позволяет легко интегрировать алгоритмы глубокого обучения и аналитику больших данных в единый унифицированный конвейер данных и полностью устраняет проблему несоответствия импеданса, описанную в разделе 2. Кроме того, это также упрощает обработку сбоев, изменений ресурсов, прерывания задач и т. д. , которые, как ожидается, будут скорее нормой, чем исключением в крупномасштабных системах.
- Масштабирование: BigDL запускает серию кратковременных заданий Spark (например, два задания на мини-пакет, как описано ранее), и каждая задача в задании не имеет состояния, неблокирует и полностью независима от каждый SoCC '19, 20–23 ноября, Санта-Крус, Калифорния. J. Dai et al. другой; в результате задачи BigDL могут выполняться без группового планирования. Кроме того, он также может эффективно поддерживать детальное восстановление после сбоя, просто повторно запуская сбойное задание (которое затем может регенерировать связанный раздел локального градиента или обновленного веса в хранилище Spark в памяти); это позволяет платформе автоматически и эффективно своевременно устранять сбои (например, масштабирование кластера, вытеснение задач, случайные ошибки в коде и т. д.).
- Объединение машинного обучения и больших данных. Вопреки общепринятому мнению сообщества специалистов по машинному обучению, согласно которому доступ к детальным данным и обновления на месте имеют решающее значение для эффективного распределенного обучения, BigDL обеспечивает крупномасштабные параллельные данные. обучение непосредственно поверх функциональной вычислительной модели (с операциями копирования при записи и крупномасштабными операциями) Spark. Унифицируя модель выполнения моделей нейронных сетей и аналитику больших данных, BigDL позволяет беспрепятственно интегрировать новые алгоритмы глубокого обучения в конвейеры производственных данных, которые можно легко развертывать, контролировать и управлять ими на единой унифицированной платформе больших данных.
Ограничения 🎲
- Зависимость: BigDL требует, чтобы в системе была установлена определенная версия Java, TensorFlow или PyTorch. Следовательно, код перестанет работать, даже если версия отличается номером ошибки.
- Проблемы абстракции. BigDL обеспечивает абстракцию по сравнению с популярными платформами машинного обучения и больших данных. Однако для нескольких методов базовой библиотеки абстракция не реализована. Поэтому замена библиотек приведет к потере некоторых функций.
- Сообщество разработчиков. Чтобы проект с открытым исходным кодом был успешным, сообщество разработчиков должно экспериментировать с ним, сообщать об ошибках и часто улучшать его, отправляя запросы на включение. Однако сообщество BigDL в основном бездействовало, что приводило к ошибкам.
- Сторонние расширения. Существует всего несколько сторонних расширений BigDL. Отсутствие сторонних расширений привело к сокращению функциональных возможностей продукта.
Заключение🎮
BigDL — это распределенная платформа глубокого обучения, разработанная Intel с открытым исходным кодом, которую можно легко использовать для разработки и развертывания системы искусственного интеллекта. В этом блоге мы дали краткое введение и обсудили его сильные стороны и ограничения. Мы также обсудили его использование в целом и в отношении построения системы рекомендаций.
Сделано с ❤️ и 🦙 Акшаем и Аюшем
Ссылки 🔱
- https://bigdl.readthedocs.io/en/latest/
- https://analytics-zoo.readthedocs.io/en/latest/
- BigDL: распределенная среда глубокого обучения для больших данных
- https://docs.streamlit.io/
- https://grouplens.org/datasets/movielens/1m/
- https://towardsdatascience.com/how-to-build-a-movie-recommendation-system-67e321339109
- https://towardsdatascience.com/neural-collaborative-filtering-96cef1009401
- https://www.analyticsvidhya.com/blog/2020/11/create-your-own-movie-movie-recommendation-system/