Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
ETL со Spark
Next
Download to read offline and view in fullscreen.

1

Share

Download to read offline

Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++

Download to read offline

ОСОБЕННОСТИ LARGE SCALE MACHINE LEARNING ЗАДАЧ И APACHE SPARK

Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++

  1. 1. ОСОБЕННОСТИ LARGE SCALE MACHINE LEARNING ЗАДАЧ И APACHE SPARK Крот Александр, 2015
  2. 2. Кто: Крот Александр •  ОАО Вымпелком (Билайн) •  Задачи машинного обучения, анализ графов, обработка больших данных, визуализация •  Аналитический центр Правительства РФ •  Анализ СМИ, соц. сетей, открытых данных, рекомендательная система •  МФТИ •  Построение моделей веб-графов, случайных графов •  Askeroid •  Разработка рекомендательной системы поисковых движков •  MLClass.ru •  Сообщество ученых по данным al.krot.kav@gmail.com Mlclass.ru vk.com/akrot ru.linkedin.com/pub/alexander-krot/85/659/ab7/en
  3. 3. Что: особенности Apache Spark •  Large Scale Machine Learning •  Масштабы •  Примеры задач •  2 подхода •  Линейные модели •  Machine Learning over Map-Reduce •  Реализация существующих ML-алгоритмов в модели MR •  Инструменты •  Vowpal Wabbit •  Apache Spark •  Особенности Apache Spark
  4. 4. 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 - вычисления)
  5. 5. LSML: примеры задач •  1 000 000 объектов •  Задачи на kaggle.com, tunedit.org •  Обучающие выборки – опросы, средний бизнес. Классические задачи ML •  10 000 000 объектов •  Обучающие выборки – часть текущей клиентской базы, кол-во признаков 10^5 и более •  Анализ текстов, изображений и видео •  Ресурсоемкие алгоритмы вроде ансамблей (Random Forest) •  100 000 000 000 объектов •  Моделирование белков
  6. 6. LSML: 2 подхода •  Линейные модели – Wovpal Wabbit •  Расширение признакового пространства •  Hashing Trick •  Выбор функции потерь (hidge, loss, etc.) •  Активное обучение (out-of-core, данные можно подавать потоком, причем с нескольких машин) •  Machine Learning over Map-Reduce – Apache Spark •  Как переписать текущие алгоритмы в модели вычислений Map- Reduce? •  Что делать с IO-оверхедом в случае итеративных алгоритмов? (большинство алгоритмов ML и на графах)
  7. 7. Реализация ML-алгоритмов в MR
  8. 8. Реализация ML-алгоритмов в MR
  9. 9. Реализация ML-алгоритмов в MR
  10. 10. Инструменты: 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
  11. 11. Инструменты: 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 •  Нельзя сохранять модели (нужно писать свои сериализаторы) •  Чтобы его понять, нужно начать в него коммитить
  12. 12. Особенности 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 секунды
  13. 13. Выводы •  Apache Spark чаще хочется применять в двух случаях: •  для ETL-операций, где разница в производительности с классическим MR невелика •  для решения задач на больших графах •  В случае же задач LSML лучше все по-максимуму свести к Vowpal Wabbit / Python
  14. 14. Вопросы? Спасибо за внимание!
  • ssuserc70e92

    Jun. 5, 2015

ОСОБЕННОСТИ LARGE SCALE MACHINE LEARNING ЗАДАЧ И APACHE SPARK

Views

Total views

608

On Slideshare

0

From embeds

0

Number of embeds

10

Actions

Downloads

11

Shares

0

Comments

0

Likes

1

×