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

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




    Алексей Натекин 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 уже были, оставалось только самим придумать и реализовать недостающее звено.



    Мы стартовали как проектный чатик, в котором быстро возникло много экспертных и технологических каналов, также связанных с 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 октября:

    • +45
    • 8,7k
    • 5
    JUG.ru Group 1 299,50
    Конференции для взрослых. Java, .NET, JS и др. 18+
    Поделиться публикацией
    Комментарии 5
    • +6

      Не воспринимайте вопрос как провокационный, реально интересно — если сформировалось такое сильное и уникальное сообщество, то почему не появляются реальные применения в бизнесе? Пока осведомленность где-то на уровне 'давайте проведем хакатон, чтобы прощупать почву'. Бума вакансий тоже нет, отдельные случаи только. Кейсов успешного внедрения тоже мало по моему мнению. Не слышно про какие-то бомбовые проекты, которые взорвали App Store/Google play. Стаканием xgboost'ов особо никого не впечатлишь же.

      • +9

        Интересно откуда берется предубеждение что нету реальных применений в бизнесе? :) Взять хотя-бы несколько видеозаписей с проведенных нами DS кейс-клубов — как и что работает в играх, телекоме, ритейле и тяжелой индустрии. Вдовесок к этому, в ноябре буду презентовать в другом месте архитектурную карту из нескольких десятков кейсов и применений в одном только банкинге (которые тоже будут широко доступны). Применения поискать не сложнее чем писать что их нет :)


        Про бум вакансий — опять же — ищущий да обрящет :) За последнюю неделю у нас опубликованы вакансии Одноклассников, EMBL, "МаксимаТелеком", iPavlov, Game Insight, Datalytica и Сколтеха. Если их не искать то действительно ни бума ничего не найти. О том что их раз в 5 больше чем 2 года назад думаю говорить бессмысленно — никто же проверять не будет.


        И еще, кажется Вы путаете людей которые "давайте проведем хакатон чтобы прощупать почву" и несколько тысяч видавших виды землекопов этой самой почвы.

        • +5

          Предубеждение основывается на инфопотоке, в основном Хабр, несколько групп в ВК, чат ML Boot camp. В этих местах новостей про успешные кейсы практически нет. Курс на слуху, вопросов нет, сам проходил — понравилось!
          Если кейсы есть, и есть чем парировать вопрос, это очень хорошо, но опять же тема для размышлений открывается, если идея популяризация сообществу не чужда — если интересующийся темой (я) видит мало, то много ли видит обыватель?

      • +2
        По поводу обучения решающих деревьев на gpu — на самом деле, уже довольно давно большая часть формул ранжирования яндекса учится как раз на gpu (чтобы понять, насколько давно вот статья про это аж 2013 года www.osp.ru/os/2013/08/13037858 Ускоряется обучение при переходе на gpu в десятки раз (ускорение зависит от функции потерь), это как раз связано с тем, что большую часть времени при обучении деревьев занимают весьма маленькие и локальные задачи: посчитать производные, построить гистограмки, обратить матрицу. А за счет того, что поставить N видеокарт можно в одну систему, они еще и заметно проще масштабируются — не нужно собирать CPU кластер с отличной сетью и/или RDMA.
        Совсем-совсем скоро будет большой анонс gpu версии нашего catboost, но бета версию уже можно найти в репозитори: github.com/catboost/catboost/tree/master/catboost/cuda
        • 0
          Так это же статья на Великом и Могучем. Янки ее и прочесть-то не смогли бы)

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое