Upload
-
View
60
Download
1
Embed Size (px)
Citation preview
ОСОБЕННОСТИ LARGE SCALE MACHINE LEARNING ЗАДАЧ И APACHE SPARK
Крот Александр, 2015
Кто: Крот Александр • ОАО Вымпелком (Билайн)
• Задачи машинного обучения, анализ графов, обработка больших данных, визуализация
• Аналитический центр Правительства РФ • Анализ СМИ, соц. сетей, открытых данных, рекомендательная система
• МФТИ • Построение моделей веб-графов, случайных графов
• Askeroid • Разработка рекомендательной системы поисковых движков
• MLClass.ru • Сообщество ученых по данным
[email protected] Mlclass.ru vk.com/akrot ru.linkedin.com/pub/alexander-krot/85/659/ab7/en
Что: особенности Apache Spark • Large Scale Machine Learning
• Масштабы • Примеры задач • 2 подхода
• Линейные модели • Machine Learning over Map-Reduce
• Реализация существующих ML-алгоритмов в модели MR • Инструменты
• Vowpal Wabbit • Apache Spark • Особенности Apache Spark
LSML: масштаб • 1 000 000 объектов
• Python/R, scikit-learn, pandas, etc.
• 10 000 000 объектов • Линейные модели (онлайн-обучение) • Machine Learning over Map-Reduce (кластер до 10^2 машин)
• 100 000 000 000 объектов • Кластер из миллионов машин (p2p - вычисления)
LSML: примеры задач • 1 000 000 объектов
• Задачи на kaggle.com, tunedit.org • Обучающие выборки – опросы, средний бизнес. Классические задачи ML
• 10 000 000 объектов • Обучающие выборки – часть текущей клиентской базы, кол-во признаков 10^5 и более
• Анализ текстов, изображений и видео • Ресурсоемкие алгоритмы вроде ансамблей (Random Forest)
• 100 000 000 000 объектов • Моделирование белков
LSML: 2 подхода • Линейные модели – Wovpal Wabbit
• Расширение признакового пространства • Hashing Trick • Выбор функции потерь (hidge, loss, etc.) • Активное обучение (out-of-core, данные можно подавать потоком, причем с нескольких машин)
• Machine Learning over Map-Reduce – Apache Spark • Как переписать текущие алгоритмы в модели вычислений Map-
Reduce? • Что делать с IO-оверхедом в случае итеративных алгоритмов?
(большинство алгоритмов ML и на графах)
Реализация ML-алгоритмов в MR
Реализация ML-алгоритмов в MR
Реализация ML-алгоритмов в MR
Инструменты: Vowpal Wabbit • Разработан а Microsoft/Yahoo Research • Работает из командной строки • Формат: label |A feature1:value1 |B feature2:value2 • Позволяет создавать квадратичные и кубичные признаки, n-граммы (-q, -cubiq, -ngram )
• L1,L2 – нормализация (-l1, l2) для отбора признаков • Возможность менять Learning Rate (-adaptive) • Для оценки используется Progressive Loss
Инструменты: Apache Spark • Resilient Distributed Dataset (RDD) • MLLib: уже реализованные алгоритмы (K-Means, SVM,
RandomForest, GBT) • GraphX: работа с графами (уже готовые Strongly Connected
Components, PageRank)
• Минусы: • Чтение мелких файлов (скорость) • С каждой итерацией замедляется (пример - PageRank) • OutOfMemoryError
• executor.memory, driver.memory, executor.memoryOverhead, driver.memoryOverhead
• Нельзя сохранять модели (нужно писать свои сериализаторы) • Чтобы его понять, нужно начать в него коммитить
Особенности Apache Spark • Сериализация: Kryo VS Java Serializer – Kryo меньше в 5-7 раз
(разница в shuffle write) • При работе с длинными списками – collection.mutable.MutableList
– ловится StackOverflowError из сериализатора • GroupByKey – не производит локальной агрегации, альтернатива
- ReduceByKey/AggregateByKey • При тяжелых джоинах имеет смысл увеличивать
spark.shuffle.memoryFraction (0.2 по дефолту) • Если нужно сделать join двух RDD, в случае, если одна из них огромная, лучше использовать broadcast variable и сделать MapSide Join
• Map vs MapPartition – во втором случае меньше накладных расходов, т.к. работаем не с каждым RDD, а с партицией целиком
• spark.default.parallelism лучше подбирать так, чтобы время выполнения одного таска было 2-3 секунды
Выводы
• Apache Spark чаще хочется применять в двух случаях:
• для ETL-операций, где разница в производительности с классическим MR невелика
• для решения задач на больших графах
• В случае же задач LSML лучше все по-максимуму свести к Vowpal Wabbit / Python
Вопросы?
Спасибо за внимание!