...

вторник, 3 декабря 2019 г.

Говорят, все аналитики больших данных идут в телеком. А что они там делают?

Самые большие телеком-компании нашей страны давно перестали считать себя исключительно телеком-компаниями — теперь это одни из главных игроков ИТ-индустрии. Они вынуждены меняться потому что меняется мир. Телефоны в нем называются телефонами по традиции, и функцию звонков туда добавляют, кажется, только по привычке. День, когда выйдет телефон без возможности «позвонить голосом», никто и не заметит.

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

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

В этом выпуске мы поговорили с сотрудниками отдела больших данных в МегаФоне — что они делают, какие используют инструменты и как нанимают людей. Кстати, судя по оценке на «Моём круге», сотрудники ценят МегаФон за комфортные условия труда, интересные задачи, современность используемых в работе технологий и за отличные отношения в коллективе.



Что делает отдел аналитики



Рабочие будни датасаентистов МегаФона. Наши большие данные позволяют нам работать на террасе

Наше подразделение называется «Аналитика больших данных». Мы занимаемся тем, что извлекаем из данных пользу. У нас есть большое количество продуктов, которые вовлекают людей в нашу систему — «Своя карта», «Свой кешбек», «Мегафон ТВ», «Мегафон Музыка», и многие другие. Мы подбираем оптимальные предложения, то есть работаем не от продукта, а от абонента и его потребности.

Большое количество задач связано с сохранением абонентов. Рынок телеком-услуг сейчас растет медленно, и мы нацелены на удержание нашей абонентской базы путем максимально релевантно персонализированного сервиса. Например, несколько лет назад на основе больших данных мы сделали новую тарифную линейку.

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



Сильна ли бюрократия в большой корпорации


Мы все работаем в одном офисе, но у нас есть отделы и команды в Нижнем Новгороде и в Екатеринбурге. Разные проекты разбиты по командам. Поскольку на одну команду идет определенный проект и он не пересекается с другой командой — нам не мешает то, что мы находимся в разных городах.

Безусловно есть бюрократия. От нее никуда не деться — МегаФон большая машина. Но наш отдел достаточно изолированный, и все проекты связаны только с нашими данными. Иногда нужно интегрировать наработки других отделов, но сейчас этого становится все меньше и меньше. В основном мы просто берем нашу базу данных, наш Hadoop или Oracle, и строим на них модель. Получается, мы обходим бюрократию стороной, потому что не построили ее внутри отдела.

Конечно, есть внешние требования. Менеджер прорабатывает их с продакт-оунером, приходит к старшему аналитику, затем менеджер, тимлид и аналитик совместно обсуждают сроки и этапы разработки. Договоренности фиксируются в Jira, также мы ведём Confluence, это наша внутренняя Вики. Конечно, пользуемся Gitlab.

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

Затем мы предоставляем результат, запускаем тестовый набор кампаний, который через некоторое время показывает, эффективно ли использовать нашу модель или лучше оставить как было. Если мы принимаем решение, что модель действительно работает лучше, мы делаем на ее основе продукт, и заказчик им пользуется. Большой бюрократии здесь нет — исключительно постановка задачи бизнес требований для продукта.

В этом году мы ввели процесс code review для всех ключевых этапов data science-проекта и уже видим результаты: качество кода многих ребят существенно улучшилось. Дальнейшие планы по улучшению процесса разработки — внедрение инструмента DVC (Data Version Control), что позволит версионировать проект целиком, включая датасеты.



Как технологии используются



Егор Кузнецов, аналитик больших данных МегаФона. Выступление на конференции Data Fest, весна 2019

Большие данные — это не только сами данные, но и весь программно-аппаратный комплекс над ними, который помогает принимать решения и извлекать пользу. Дата саентисты, которые приходят к нам из компаний, где мало данных, элементарно не используют те инструменты, которые используем мы. К примеру, мы очень любим экосистему Hadoop. Большое количество данных у нас лежит в кластере, а не в классической базе данных.

Big Data — это не просто базы данных, такие как Oracle, MySQL или MongoDB. Big Data — это целый комплекс программного обеспечения по работе с ними. Для работы с большими данными необходимо понимать, как устроен Hadoop, знать особенности работы со Spark, Hive, HDFS. Часто аналитики данных, приходящие к нам, не использовали ранее в своей работе эти инструменты. В этом случае мы обучаем их тем навыкам, которых им не хватает.

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

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

Мы работаем на Python, в основном используем Jupiter Notebook на наших выделенных серверах для разработки. Там много памяти и процессоров, поэтому мы можем считать большие объемы данных и строить модели. Данные мы получаем из двух источников. Один из них — Oracle Exadata, второй — Hadoop. Мы получаем данные на сервер с Пайтоном, там строим модель, используем разные библиотеки, такие как Pandas, NamPy, Scikit-learn. Для расчетов в Hadoop используются PySpark и Hive, для моделирования — библиотеки Scikit-learn, Xgboost, LightGBM, PyTorch и другие.

В некоторых задачах появляются нейронные сети. Последний раз мы использовали PyTorch. У нас есть отдельные сервера с GPU, и мы можем на них обсчитывать нейронные сети. Когда нужна более сложная аналитика, линейные модели и алгоритмы — бывает, что их нет в Python библиотеках. Тогда мы используем R — в редких случаях, когда задача действительно сложная, связанная с эластичностью или с дистрибьюцией продукции.



Python vs R


С Python ты можешь сделать решение, которое сразу пойдет в продакшн, потому что у Пайтона есть огромная инфраструктура. И когда девопс получает к себе на вход R, у него начинается головная боль.

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



Что делать, если никто не знает Hadoop


image
Егор Кузнецов на конференции Data Fest

Если мы будем искать только тех, у кого есть опыт с Hadoop, мы никого не найдем. Это редкий скилл, он встречается у людей, которые уже поработали в крупных компаниях. Конечно, для тимлида этот пункт необходим. Но если у человека большой опыт построения моделей без Хадупа, он тоже может пройти.

Есть администраторы, девопсы, которые его настраивают, раскатывают на огромное количество серверов и потом поддерживают. Это сложно, здесь нужен большой опыт. И нужно знать хотя бы базовый набор команд чтобы начать с ним работать. Это как пользоваться командной строкой в Линуксе — нужно понимать саму концепцию работы. Тогда ты сможешь выгружать данные к себе на локальный сервер, подгружать их себе на Пайтон и работать.

Но если дело доходит до сложных вещей, близких к продакшену, нужно изучать нюансы и алгоритмы, работу с Map Reduce, оптимизации в стандартных программах от Hadoop. Например, Хайф — это такой SQL, который работает над Хадупом. То есть это не реляционная база как Oracle. Можно программировать и так же, как в оракле, но если ты понимаешь нюансы оптимизации запросов с помощью Map Reduce, то твои задачи будут считаться в десятки раз быстрее.

Месяца за три можно освоить Hadoop только на уровне клиента и без проблем его использовать. У нас сильные машины, и мы не экономим на них. Но вряд ли получится сразу писать самые оптимальные запросы и оптимально хранить данные — этому надо учиться дольше.



Стажировки, как способ бороться с дефицитом специалистов


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

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

Есть несколько вариантов трудоустройства к нам. Мы рады крутым специалистам, но рынок маленький, и крутых специалистов не так много. Мы это прекрасно понимаем, поэтому у нас есть внутри своя программа стажировки. В основном на нее идут старшекурсники и недавние выпускники, которые связаны с программированием и математикой. Нам нужно чтобы стажер представлял, что такое программирование на скриптовом языке — Python или R. Первый сильно предпочтительнее в нашем технологическом стеке.

Рекрутер проводит телефонное интервью, задает определенные вопросы. По ответам мы понимаем, сможет или не сможет гипотетический сотрудник выполнить наши задания. Пять-десять человек мы приглашаем к нам в офис и даем тест на сорок минут. В тесте есть вопросы по поводу языка программирования, опыта использования разных утилит, по машинному обучению и аналитике. Если все хорошо, то следующий этап — техническое задание. Мы даем неделю на его выполнение, и оцениваем код и презентацию решения кейса.

Это задание на мультиклассы, которое максимально приближено к сфере телекома — предсказание того, что у человека есть несколько сим карт. Стажер должен за несколько часов написать классификатор, который выдаст скор по каждому из объектов из тестовой выборки. Этот скор мы сравниваем в общей системе и ранжируем стажеров по количеству баллов, которое они получили.

Безусловно это не единственный критерий. Наши аналитики проводят очные собеседовании, узнают мотивацию, почему человеку интересно пойти именно в Data Science, что он уже для этого сделал, задают технические вопросы и, безусловно, смотрят код. Код — это очень важная часть процесса, потому что человек будет писать систему, которую будут изучать и улучшать другие аналитики.

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

Стажировка в среднем длиться три месяца. К стажеру прикрепляется ментор, который помогает в решении его задач. Он занимается реальными задачами из беклога. Они могут быть не столь приоритетными, но это задачи, которые мы собираемся делать в будущем. Обычно они уже либо формализованы, либо мы помогаем их четко поставить для стажера, чтобы у него был четкий ориентир. Также у нас регулярно проходят массовые курсы, к примеру, и сейчас вся наша команда ходит на курсы по Hadoop. Наши стажеры регулярно проходят офлайн и онлайн обучение. Мы сотрудничаем с New Pro Lab, Big Data Team, GeekBrains, Data Gym и другими.

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

Поиск опытных специалистов проходит следующим образом:


  1. Double-chek резюме или профиля кандидата тимлидами и рекрутером.
  2. Личное собеседование с тимлидом, где есть технические и не только вопросы: теория вероятности, статистика, машинное обучение, опыт использования разных утилит, ожидания самого кандидата.
  3. Если собеседование хорошо прошло для обеих сторон, мы запрашиваем портфолио кандидата (личные проекты и код) или просим решить наше техническое задание, чтобы посмотреть код и узнать ход решения задач. Техническое задание также связано с телекомом: необходимо предсказать, есть ли у абонента несколько сим-карт. Срок выполнения задания определяет сам кандидат, но обычно это не больше недели. Один наш сотрудник решил задание в тот же вечер и через неделю вышел к нам на работу.
  4. Встреча с директором по аналитике больших данных, обсуждение задач и условий.

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

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

Это самое интересный для аналитика — ты учился в университете, написал новый алгоритм, закодил его, применил научные методы, алгоритм начал работать и действительно приносить какую-то пользу.

Это вызывает больше всего эмоций.

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий