Как мы готовим будущих специалистов по большим данным

    В эту субботу стартует наша программа “Специалист по большим данным”: она получилась такой насыщенной, что, кажется, в ближайшие три месяца у слушателей не останется никакого свободного времени. В этом посте я расскажу, как именно мы будем растить специалистов по Big Data, и как будет построен процесс обучения во время первого месяца.



    Центральный кейс на этот период — создание DMP-системы. DMP (data management platform) анализирует интернет-логи пользователей и, исходя из их поведения в сети, присваивает этим людям различные свойства или причисляет к определенным классам. Например, правильно настроенная DMP-система может определить пол и возраст человека и узнать, является ли он гаджетоманом или, скажем, фанатом люксовых фешн-брендов. Этот кейс мы разрабатываем совместно с компанией Data-Centric Alliance, они используют большие данные для настройки рекламных кампаний.

    Работа в командах

    На нашем Дне открытых дверей мы рассказали, что слушатели будут работать над кейсами в командах. Некоторые были недовольны: “Зачем нам это надо! Что, если я попаду в одну команду со слабаком, и он будет тянуть меня назад!?”. Другие переживали: “У меня недостаточно знаний, что я буду делать в команде с сильными разработчиками?”. Логично? Да, но в реальной жизни анализ больших данных — это не индивидуальный, а командный вид спорта, одиночкам тут непросто. Мы же поставили перед собой цель погрузить слушателей в условия, максимально приближенные к боевым.

    Команды меняются раз в месяц, и все слушатели получат не только ценный опыт командной работы над проектом, но и хорошие связи с однокурсниками. Учиться к нам пришли основатели IT-компаний, технические директора и опытные разработчики — так что эти связи будут не менее полезными, чем знакомства с именитыми преподавателями.

    Data Management Platform в четыре шага

    В течение первых 4 недель слушатели будут создавать свою DMP-систему, и на каждой неделе группа будет выполнять одно под-задание, продвигая вперед весь кейс.

    Итак, вот план:

    • Первая неделя: каждый слушатель самостоятельно разворачивает небольшой Hadoop-кластер
    • Вторая неделя: нужно предобработать 1ТБ веб-логов и корректно загрузить их в таблицу HBase
    • Третья неделя: Начинаем анализировать логи — пока без машинного обучения. Берем детерминированные заранее правила и выделяем классы пользователей.
    • Четвертая неделя: Machine learning over Map-Reduce. Строим DMP-систему по анализу веб-логов!


    Баллы, рейтинг, бейджи

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

    У каждой подзадачи будет минимум два уровня сложности: первый — просто ее решить, второй — решить с дополнительными условиями. За такие достижения мы будем давать специальные бейджи и дополнительные баллы. На заметку тем, кто поставил перед собой цель найти новую работу: такие “ачивки” очень интересуют наших партнеров-работодателей.



    Итоговая DMP-система должна будет вычислять портрет пользователя с определенным коэффициентом точности. Это реальная задача интересная бизнесу, и ребята из Data-Centric Alliance готовы компенсировать четверть стоимости обучения команде, которая создаст хорошо работающее решение. Команда, которая сможет показать выдающееся решение, получит компенсацию до 50%. Повышение точности классификации на 5% повышает отдачу от рекламной компании на 30%, говорит Александр Петров, руководитель отдела R&D Data-Centric Alliance и по совместительству руководитель первого месяца курса.

    Аудиторные и практические дни

    Занятия проходят три раза в неделю — по вторникам, четвергам и субботам. Каждый вторник и четверг — аудиторные занятия. Они построены так, чтобы максимально вовлекать слушателей в работу (в противовес старомодной университетской лекции), все строится на решении задач и разборе кейсов. Цель аудиторных занятий — объяснить методику решения задач, показать, как работают все необходимые инструменты, и дать критический взгляд на теорию и основные концепции. По нашему опыту, такой формат дает глубокое понимание и хорошие рабочие навыки.

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

    Каждый вторник команда будет получать задачу, на решение которой дается неделя. По субботам — дни консультаций. Двери Digital October будут открыты с 11 утра, команды могут приходить, чтобы вместе работать над решением задачи. С 16:00 начинаются офисные часы тьюторов-семинаристов, которые смогут проконсультировать команды, ответить на конкретные вопросы и помочь, если кто-то зашел в тупик. Сами задачи можно будет проверять автоматически, загружая код на специальную платформу.

    Задачи, тесты и коллоквиумы

    Все задачи мы будем решать на облачных ресурсах, которые для каждой команды будут развернуты в AWS (мы стали партнерами Amazon Web Services и поэтому сможем давать слушателям большие вычислительные мощности). На решение каждой из четырех подзадач дается 1 неделя, это “мягкий дедлайн”. Если команда не сдаст задачу в этот срок, то еще одну неделю можно будет сдаться, но уже с штрафом в 30%. Тот, кто пропустит несколько дедлайнов, теряет возможность получить сертификат о прохождении курса.

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

    Как видите, у нас не концлагерь, но все довольно жестко. Мы хотим выпускать специалистов, в компетенциях которых мы уверены, и достижениями которых мы сможем гордиться в будущем. Записаться на программу все еще можно, осталось полтора места.

    Метки:
    • +3
    • 14,1k
    • 8
    New Professions Lab 71,10
    Образование в области технологий
    Поделиться публикацией
    Комментарии 8
    • 0
      А что значит «осталось полтора места»?
      • 0
        Значит, что одно место свободно и еще одно условно занято)
    • +1
      Я поддерживаю инициативу выпускать крутых спецов, но здесь конкретный подвох.
      Весь мир переходит на Spark, а мы учим умирающий Hadoop 1.0.
      На задаче, где не нужен Hadoop (спокойно можно за неделю сделать систему на gnu parallel + scikit learn. Ну конечно там с параллельным обучением не ахти, но еще большой вопрос — оно в этой задаче нужно?)
      У Mahaout-а нету шансов выжить — посмотрите хотя бы какую поддержку Спарк получает: www.datanami.com/2015/02/25/apache-spark-ecosystem-continues-to-build/?utm_source=rss&utm_medium=rss&utm_campaign=apache-spark-ecosystem-continues-to-build

      Имо намерения самые хорошие, но в результате что получится — большой вопрос.
      • +2
        И это всё за 180к.
      • +2
        Весь мир переходит на Spark, а мы учим умирающий Hadoop 1.0.

        Может я невнимательно читал, но я не увидел, где в статье идёт речь про Hadoop 1.0?

        На задаче, где не нужен Hadoop (спокойно можно за неделю сделать систему на gnu parallel + scikit learn [...])

        Фишка всей инфраструктуры Hadoop-а состоит в использовании HDFS и вычислений над локальными данными (вычисления и данные лежат на одной ноде). Насколько я понимаю, GNU Parallel не предоставляет абстракции хранилища, а SciKit Learn не умеет использовать свойство локальности, так что сравнение некорректно.

        У Mahaout-а нету шансов выжить — посмотрите хотя бы какую поддержку Спарк получает

        Опять же, не понятно, откуда появился Mahout, но в любом случае, сравнивать его с самим Spark-ом будет неправильно: Spark — вычислительное ядро, Mahout — библиотека машинного обучения, которая уже скоро как год официально транслирует вычисления на Spark:

        We are building our future implementations on top of a DSL for linear algebraic operations which has been developed over the last months. Programs written in this DSL are automatically optimized and executed in parallel on Apache Spark.

        Можно сравнить Mahout со Spark MLlib, но вроде как у Mahout-а всё ещё остаётся несколько интересных алгоритмов, которых нет в MLlib, так что хоронить его рано.
        • 0
          О, отлично, что кто-то решил ответить наконец :)

          1) 1.0 — я имею ввиду, что без Spark, у меня была инфа, что спарк включат в Хадуп, но это пока не случилось.

          2) Ну я неплохо понимаю фишку, но так же понимаю и все накладные расходы + очень крутую кривую обучения. И если у вас по сути одноразовая задача + она наивно-параллельна (это не совсем ваш случай, но практически такой) — то гораздо проще *очень* быстро все сделать на более простых инструментах. Вы же сначала все в базу заливаете, а потом 1 раз по ней обучитесь, и зачем столько страданий?

          ScikitLearn не паралелится — он на одном узле. Если его использовать для скоринга — то просто кучу процессов на каждом узле можно запустить, а потом забрать данные куда надо, или прямо из узлов уже писать в СУБД. Для параллельного обучения он не годится.

          3) Ну а какое вы параллельное обучение сверху map-reduce запустите, если не Mahaout?

          4) А что хорошего есть в Mahaout, причем качественного? Я пытался на нем делать ALS — и там ни производительность, ни качество алгоритмов не соответствовала рекламным заявлениям.

          P.S. В общем такое впечатление, что будете стрелять базукой (старой модели) по воробьям. И как бы не получилось такой ситуации: aadrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html
          • 0
            1) 1.0 — я имею ввиду, что без Spark, у меня была инфа, что спарк включат в Хадуп, но это пока не случилось.

            Я думаю, речь шла не о самом Apache Hadoop, а о крупных дистрибутивах типа CDH. И туда Spark уже включили.

            И если у вас по сути одноразовая задача + она наивно-параллельна

            Честно говоря, я слабо представляю наивно-параллельную задачу для больших данных. Возьмём, например, обычную линейную регрессию и SGD для её решения: чтобы обучить одну общую модель, а не несколько отдельных на каждом узле, после каждой итерации так или иначе придётся где-то собирать дельты, а затем рассылать обратно обновлённые параметры. А это значит, что не только SciKit Learn, но и вообще любые одномашинные библиотеки вам здесь мало помогут. По крайней мере, придётся влазить в сам алгоритм, а чем тогда это сложнее использования инфраструктуры Hadoop-а — непонятно.

            Вы же сначала все в базу заливаете, а потом 1 раз по ней обучитесь, и зачем столько страданий?

            Один ли? Тот же SGD предполагает большое количество итераций по одним и тем же данным, и если у вас их достаточно много (а иначе бы мы вообще не говорили про Hadoop, верно?), то вам эти данные придётся либо вручную раскладывать по нодам, делая своё подобие HDFS, либо каждый раз тягать их по сети к вычислительным узлам. Хотите сказать, что это проще, чем поставить CDH5 с готовым HDFS и Spark? :)

            Ну а какое вы параллельное обучение сверху map-reduce запустите, если не Mahaout?

            Я не знаю, есть ли другие библиотеки машинного обучения на классическом MR (подозреваю, что есть и много), но я вполне успешно запускал на нём свои алгоритмы без использования каких-либо библиотек вообще.

            Я пытался на нем делать ALS — и там ни производительность, ни качество алгоритмов не соответствовала рекламным заявлениям.

            А что вы подразумеваете под качеством алгоритмов? Качество результатов? Ну так оно скорее зависит от правильности подхода и входных данных. А на чём вы выбранный алгоритм запустите, в общем-то, всё равно.

            P.S. В общем такое впечатление, что будете стрелять базукой (старой модели) по воробьям. И как бы не получилось такой ситуации: aadrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html

            Во-первых, есть такое подозрение, что вы подумали, будто я как-то связан с авторами статьи. Так вот, я не.
            Во-вторых, статья довольно известная, но прекращать её читать можно сразу после слов:

            Since the data volume was only about 1.75GB containing around 2 million chess games, I was skeptical of using Hadoop for the task

            Как правильно догадался автор, с объёмом данных меньше 2Гб Hadoop является жесточайшим overkill-ом. В общем-то, объёмы до 6-8Гб я вообще предпочитаю загружать в память и работать с ними напрямую через Pandas или что-нибудь пободное — и удобнее, и гибче. А вот когда у вас данных становится не 2Гб, а пол терабайта в день, и гонять каждую порцию приходится по три десятка раз, вот тогда вы и начинаете задумываться про распределённое хранилище, локальность вычислений и тому подобные прелести.
            • 0
              Спасибо за развернутый апдейт.

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

              На parallel поднимал все очень быстро, конечно быстрее Hadoop и Spark

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

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