Создатель Open Data Science о Slack, xgboost и GPU

в 10:44, , рубрики: big data, gpu, kaggle, machine learning, ods, open data science, slack, xgboost, Блог компании JUG.ru Group, машинное обучение, Натекин, открытые данные

Сообщество Open Data Science (ODS) уже известно на Хабре по открытому курсу машинного обучения (OpenML). Сегодня мы поговорим с его создателем об истории ODS, людях и наиболее популярных методах машинного обучения (по версии Кaggle и проектам индустрии). За интересными фактами и технической экспертизой — прошу под кат.

Создатель Open Data Science о Slack, xgboost и GPU - 1


Алексей Натекин natekin . Основатель ряда проектов, связанных с машинным обучением и анализом данных. Диктатор и координатор Open Data Science — крупнейшего в Восточной Европе онлайн-сообщества Data Scientist-ов.

Как появилась идея создания сообщества? С чего все началось? Почему выбор пал на Slack и кто стоял у истоков?

Алексей Натекин: Дело было в 2014 году, когда подходил к концу третий набор на нашу бесплатную образовательную программу в DM Labs (DM: Data Mining). Мы уже прошли материал и хотели перейти к совместной работе над проектами. Это была первая итерация веселых задач — анализ порнотегов, определение депрессии в соцсетях, игровые данные с Доты. Сразу была концепция, что проекты надо делать открытыми и привлекать к движухе не только участников курсов, но и более шарящих ребят.

Поэкспериментировав с колхозными чатиками во ВКонтакте и самопальным Вордпрессом, мы выяснили, что все это для нормальной работы не годится. К счастью, уже в начале 2015 года стал потихоньку набирать известность Slack, и мы воспользовались им в качестве площадки для проектов и общения. Он оказался очень удобным, и мы почти сразу на нем же и остановились.

В тот момент мы много не думали о том, что это все надо обернуть в какую-то красивую идеологию, и просто назвали это дело Open Data Science. Эта фраза встречалась только в одной конференции (так и называющейся Open Data Science Conference), а связка из открытой науки и совместного просвещения в DS (Data Science) — и других научить, и самому что-то узнать — была хорошим базовым вариантом, чего мы хотели. Все-таки Open Data и Open Science уже были, оставалось только самим придумать и реализовать недостающее звено.

Создатель Open Data Science о Slack, xgboost и GPU - 2

Мы стартовали как проектный чатик, в котором быстро возникло много экспертных и технологических каналов, также связанных с DS дискуссий. Можно сказать, что фокус больше сместился в локальный Stack Overflow на русском. Проекты жили своей жизнью, а активность перешла в общие дискуссии.

К счастью, мы быстро собрали большую массу экспертизы по основным, связанным с DS направлениям и технологиям, и в ODS сформировался первый костяк людей. В любой момент можно было спросить что-то по интересующему тебя направлению и получить дельный совет от разбирающегося в этом человека.

На тот момент профессиональные сообщества по DS в том виде, в котором они есть сейчас, если и были, то представляли собой либо аудиторию каких-то регулярных митапов по одному направлению, либо оказывались закрытыми и сильно привязанными к конкретному месту (например, студенты ВУЗов).

Мы сразу были за то, чтобы объединять и объединяться, поэтому начали интегрироваться с митапами и разными группами: Moscow Independent DS Meetup, ML-тренировки (начавшиеся до ODS после SNA-хакатона в Питере), митапы по R, Big Data и потом Deephack, Deep Learning Meetup, DS Meetup из Mail.ru и многие другие.

Занятный факт: на одной из зимних посиделок мы узнали, что на этом митапе кончилась плата, и, чтобы его не прибрали к рукам очередные Big Data-спамеры, мы резко подорвались оплатить потерянный Mail.ru аккаунт MDSM — оплата все еще капает с моей карточки :)

Так исторически сложилось, что самые активные ребята, с которыми мы совместно строили ODS, также являлись организаторами. Поэтому мы не только помогали друг другу со спикерами, пиаром и оргвопросами, но и со своей стороны быстро начали придумывать и проводить новые мероприятия и форматы. Среди них и DataFest, как самая крупная в Восточной Европе и СНГ DS конференция, и DS Case Club, как бесценная по контенту серия мероприятий про реальную пользу DS в бизнесе, и data-завтраки со своим необычным, но так полюбившимся людям форматом.

И, конечно, мы скооперировались с компаниями: например, с Яндексом сделали серию мероприятий Data & Science, а со Сбербанком — Sberbank Data Science Journey. По последним подсчетам, у нас накопилось более 20 регулярных мероприятий по всему СНГ.

Экспансия не заставила себя долго ждать — мы делились наработками и стартовали наши мероприятия и развитие DS в других городах и странах: сперва Москва с Питером, потом Екатеринбург, Новосибирск, Нижний Новгород и Калининград, затем Украина с Киевом, Львовом и Одессой, Белоруссия с Минском и еще все новые и новые города по СНГ.

Сейчас в админо-организаторской команде 35 человек из 4-х стран. Есть активные участники, собирающиеся на встречи в США, Германии, Норвегии и Израиле, но мы еще работаем над глобализацией. Так у нас в Slack 7,5 тысяч человек из 20-ти часовых поясов, более 3-х тысяч из которых заходят хотя бы раз в неделю. Так что глобальный потенциал есть.

Есть ли у нас аналоги и конкуренты? Было бы очень круто, если бы в том виде, в котором мы выросли, в мире был хоть один аналог — мы бы с ним скооперировались. К сожалению, в США, которые считаются лидером в DS/ML, ничего аналогичного нам по духу нет и вряд ли появится.

Митапы захламлены платным маркетинговым мусором, локальные сообщества очень жестко привязаны к университетам и компаниям (отдельная тусовка в Гугле, отдельная — в Амазоне, отдельная — в Фейсбуке и так далее). А на Machine Learning Meetup найти тех, кто занимается собственно машинным обучением, сложно — на 100 человек, как правило, и 10 не найдется: сплошь интересующиеся, зеваки, евангелисты и пиарщики. Зато на профильных конференциях действительно мировой уровень, и случайных людей почти нет.

AI Researchers slack, созданный сразу после прошлогодней конференции NIPS, который собрал за 9 месяцев 1000 человек и где в первую неделю видели Ian Goodfellow, по сути, мертв: в нем 24 тысячи сообщений. У нас в неделю пишется под 30 тысяч сообщений, а суммарно их — почти 1,5 млн. Есть KDnuggets, как эдакая DS блог-платформа. Можно сказать, что самое крупное общающееся DS сообщество обитает на Kaggle (не удивлюсь, если у нас сообщений больше, чем у них). Но аналога, совмещающего и площадку, и мероприятия, и прочие инициативы вроде обучения мы пока не видели.

— Фраза «Стакать xgboost-ы» превратилось в мем, так что же такое xgboost и зачем его нужно стакать? Алексей Натекин: Xgboost — это конкретная реализация алгоритма градиентного бустинга. Сам алгоритм используется повсеместно как крайне мощная модель общего назначения — и в production, включая поисковики Яндекса, Mail.ru, Microsoft и Yahoo, и на соревновательных площадках — как Kaggle. Xgboost — это, во-первых, очень эффективно написанный код, позволяющий учить модели быстрее и продуктивнее. А во-вторых, в xgboost добавлены дополнительные плюшки и регуляризация, чтобы сами деревья были устойчивее.

Сам xgboost достаточно хорош, чтобы использовать его без каких-либо махинаций. На Kaggle, да и вне его, это стало no-brainer-решением, которое достают с полки и знают, что оно, как правило, дает очень хороший результат. Вот так вот: бесплатного ланча, конечно, не существует (прим., это отсылка к No Free Lunch Theorem), но xgboost попробовать в очередной задаче стоит.

Однако на Kaggle основная задача — получить наилучший результат в рейтинговой таблице. Неоднократно этот наилучший результат сводился к десяткам людей, борющихся за третий, четвертый и пятый знаки после запятой, пытаясь выбить хоть немного дополнительной точности. Давно известен способ с точностью выскребать такие крохи — с помощью алгоритмов стакинга и многоуровневого ансамблирования.

Если очень аккуратно и грамотно обучить вместо одной модели пару десятков, а над их предсказаниями — еще пару десятков, таким образом удается соскрести еще немного точности. Цена этого — куда большие вычислительные затраты, которые никто в здравом уме не будет повторять на практике, но на Kaggle никто не обещал здравый ум и реалистичность задач.

Таким образом, зачастую решение победителя — человека, занявшего первое место, представляло собой несколько слоев застаканных xgboost-ов. Xgboost — потому что мощно и быстро. Застаканных — потому что надо занять первое место.

Фраза «стакать xgboost-ы» — это, по сути, насмешка над бессмысленной и беспощадной сутью Kaggle-конкурсов, многие из которых можно решить грубой силой и жутким, с точки зрения практической пользы, решением. Но, тем не менее, выигрышным на Kaggle.

— Говорят, что xgboost показывает отличные результаты в практических приложениях. Можешь ли ты привести пример, где xgboost действительно на порядок сильнее конкурентов? И есть ли какая-то рационализация, почему это происходит на таких данных?

Алексей Натекин: Смотря что считать конкурентом. Вообще, градиентный бустинг лежит под капотом такого широкого числа приложений, что сложно собрать их все: это и антифрод/антиспам, и всевозможные прогнозы в финансовых компаниях, и поисковые системы крупнейших компаний, как я писал выше. Ну и Kaggle задачи, несмотря на всю свою игрушечность в постановках, в большинстве конкурсов, где данные не сильно разреженные и не являются картинками, тоже, как правило, выигрываются градиентным бустингом + каким-то ансамблированием поверх, особенно когда нужно выжать дополнительную точность.

Сказать, что бустинг на порядок сильнее конкурентов, нельзя, так как ни в одном из бизнес-приложений никто не расскажет, какие результаты были у тех или иных моделей на реальных данных. Да и сам результат бустинга часто является не то чтобы на голову выше ближайших конкурентов: случайного леса, нейронок или SVM.

Просто бустинг лучше всего проработан с точки зрения реализаций и является очень гибким семейством методов, ввиду чего подстроить бустинг под конкретную задачу — несложное дело. А про рационализацию — почему именно бустинг работает и в чем фишка — могу порекомендовать пару своих (1, 2) туториалов и один — Александра Дьяконова.

— В анонсе твоего доклада на Smartdataconf отмечается, что люди ожидают от xgboost такого же ускорения на GPU, как и нейросети. Можешь ли интуитивно рассказать, за счет чего нейросети получают такой прирост производительности?

Алексей Натекин: Как размышляет рядовой дата сатанист-стахановец интеллектуального труда? Вот есть нейросетки, для них сделали классное железо и топовые видеокарты с тысячами специально оптимизированных ядер. А Nvidia сама говорит: наше железо продвинет и ускорит AI, что бы это ни значило. Отсюда нереалистичные ожидания того, что GPU можно использовать и в более широком круге задач.

В нейросетях основная часть операций, выполняемых как при обучении, так и при предсказании — матричные умножения. Сейчас честнее сказать, что это работа с тензорами, но суть та же: нужно очень много рутинных матричных операций.

GPU для этого идеально подходят, так как тут больше вычислительных ядер при меньшей стоимости и энергопотреблении. А на отсутствие расширенного набора функций можно смело не обращать внимание.

Но из-за этого на GPU становится сложно сортировать массивы и делать рекурсивные вычисления, зато рассчитать свертку и перемножить матрицу — очень дешево. Отсюда встает насущный вопрос: а что будет, если мы попробуем на GPU начать учить деревья решений, так повсеместно используемые на практике? И насколько осмыслена эта затея by design, что называется?

— И почему это не происходит в случае с xgboost и другими алгоритмами машинного обучения и что нужно сделать, чтобы использовать GPU для обучения?

Алексей Натекин: GPU отлично подходит для тех алгоритмов, которые адаптированы под GPU. Вы же не будете, как я уже писал, строить на GPU индексы? Для более широкого применения GPU в остальных задачах машинного обучения, кроме нейросетей, надо придумать эффективные реализации алгоритмов под GPU. Либо, что более вероятно, вдохновившись уже имеющимися версиями CPU-алгоритмов, создать на их основе новые алгоритмы, подходящие для эффективного вычисления на GPU. Либо дождаться более широкого релиза Intel phi, про который ходят разные легенды. Но это уже не GPU и совсем другая история.

— И в завершение, вопрос по железу: на какие параметры стоить обратить внимание при покупке GPU-карт для машинного обучения? Что сейчас используют люди из top Kaggle?

Алексей Натекин: По факту, покупают в основном 1080Ti, так как у них наиболее оптимальное соотношение цены, скорости и 11 гигабайт памяти. Из Titan X и 1080Ti выбирают последний. Датасеты все равно давно в память не помещаются, поэтому чем больше памяти, тем больше всего можно запихнуть в обработку. Но вообще всем интересно, что будет в следующем поколении карточек: как только они появятся, их надо будет покупать очень быстро.


Если вы так же болеете машинным обучением и анализом данных, как и мы, вам могут показаться интересными вот эти доклады нашей грядущей конференции SmartData 2017, которая пройдет в Питере 21 октября:

Автор: MaxJoint

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js