DOU Labs: як EPAM створив DLab — інструментальний сервіс для фахівців Data Science

В рубриці DOU Labs ми запрошуємо IT-компанії ділитись досвідом власних цікавих розробок та внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на editors@dou.ua.

Я — Software Engineering Manager та керівник внутрішніх проектів EPAM Big Data Competency Center. Вже більше 10 років я працюю в ІТ-індустрії на проектах з різних бізнес-доменів: retail, finance, travel & hospitality, e-commerce тощо. У цій статті хочу більш докладно розповісти про проект — DLab. Його призначення підкреслює гасло: «Let your data scientist think about data and nothing but data».

Ідея

Як правило, такі продукти, як DLab, ініційовані потребами ринку, коли не вистачає якісних інструментів, або ж де ціна та політика ліцензування комерційних продуктів стримують розвиток галузі.

Сьогодні більшість компаній, котрі еволюціонують в «digital», частіше вдаються до аналізу внутрішніх та зовнішніх даних. Різноманіття вхідних даних та їхні обсяги, захист даних, наявність «sensitive» інформації, відсутність обчислювальних потужностей, інструментарію та можливості «експерементувати» з даними, не боячись «покласти» інфраструктуру та втратити дані, — унеможливлюють будь-яку аналітику та ускладнюють роботу data science та machine learning експертам.

Власне з цих та інших причин ми створили DLab — інструментальний акселератор у вигляді self-service для Data Scientist-ів, котрий допомагав би їм швидко розгортати потужні аналітичні «пісочниці» в «клаудах» без жодних DevOps-навиків. При потребі користувачі можуть додавати обчислювальні потужності, використовувати зручний інтерфейс для встановлення додаткових бібліотек та залежностей, взаємодіяти в межах команди та водночас не перейматися за безпеку середовища та даних.

Наш продукт є крос-платформеним та може встановлюватись на Amazon, MS Azure та Google Cloud. Задача DLab — забезпечити можливість data scientist-ам брати участь у проектах на стадії аналізу, пришвидшувати прийняття аналітичних рішень, не чекаючи моменту, коли остаточна інфраструктура буде доступною та архітектура буде узгоджена.

Чому вирішили зробити продукт open-source? За своєю суттю, DLab — такий собі оркестратор або панель керування, що поєднує безліч інструментів. Всі інструменти, технології та фреймворки, які увібрав у себе DLab, є у відкритому доступі: MongoDB, Docker, Angular, Jupyter, Zeppelin, RStudio, Git, LDAP, Python, Spark, Scala тощо. Ми вирішили розробити DLab як систему з відкритим кодом і під відкритою ліцензією (Apache 2.0), щоб допомогти іншим розробникам, data scientist-ам, фахівцям з machine learning зосередитись на обробці даних, тренуванні моделей та дослідженні даних, не переймаючись комерційною стороною продукту та проблемами ліцензування.

Команда

Розробка DLab стартувала в грудні 2016 року, коли наші колеги з EPAM Data Practice побачили потребу в такому рішенні. Зараз в команді працює три devops-інженери, front-end розробник, java-розробник, інфраструктурний архітектор і проектний менеджер. Вся команда знаходиться у Львові. Більшість вимог та побажань була сформована спеціалістами Data Science та Machine Learning, також ми тісно співпрацювали з фахівцями з інших галузей. Продукт є вже достатньо зрілим (10 релізів за 1 рік), але водночас «живим» — він постійно вдосконалюється.

Проектна команда DLab

Можливості сервісу

DLab — це self-service, кінцевими користувачами якого є безпосередньо Data Scientists. Але і працівники суміжних спеціалізацій або просто члени однієї команди, наприклад QA/QC інженери чи інші фахівці, які працюють з даними, також можуть вільно ним користуватися. Розгорнувши продукт у хмарі (Amazon, MS Azure та незабаром у GCP), вони отримують робоче середовище з простим та зрозумілим веб-інтерфейсом.

Ключові можливості DLab:

  • інтеграція з необхідними для роботи аналітичними інструментами, такими як Jupyter, Zeppelin, RStudio, TensorFlow, Spark тощо;
  • підтримка різних мов програмування (Python, Scala, R, Java);
  • можливість встановлення різноманітних бібліотек та фреймворків;
  • можливість під’єднати Spark кластер (або ж Cloud Data Engine, такий як EMR на AWS, Data Proc на GCP, HDInsight на MS Azure) і додати обчислювальних потужностей, коли потрібно обробляти великий обсяг даних і локальних ресурсів не вистачає;
  • інтеграція з Azure Data Lake;
  • безпека даних at rest та in motion;
  • аутентифікація через LDAP, Cloud Identity Management Services, SSO;
  • персональні та спільні сховища даних (AWS S3, Azure Blob storage, Azure Data Lake, Google buckets);
  • фінансові звіти по утилізації клауд-середовища;
  • можливість використання Spot Instances, Low priority та Preemptible VMs для економії коштів на AWS, Azure, GCP інфраструктурі відповідно.

DLab дає можливість ефективної роботи як для індивідуальних користувачів, так і для команд, надаючи спільний та водночас закритий від інших репозиторій. Безпека даних, захищений доступ, «сек’юрний» периметр гарантують будь-якому розробнику те, що його дані «не витечуть» на зовні.

Що всередині

Щоб зрозуміти, як працює DLab, пропонуємо розглянути діаграму з логічною архітектурою та головними компонентами сервісу (на прикладі AWS реалізації):

На діаграмі представлені основні компоненти DLab. Так виглядає розгорнута інфраструктура та візуалізована взаємодія між елементами системи.

Головні компоненти сервісу:

  • Self-service node (SSN);
  • Edge node;
  • Notebook node (Jupyter, Rstudio, Zeppelin, etc.);
  • Data engine cluster;
  • Data engine cluster as a service provided with Cloud.

Self-service node (SSN)

Створення Self-Service node — це перший крок для розгортання сервісу DLab. Саме SSN є базовою нодою, з якої починається встановлення середовища. Вона містить такі ключові сервіси та компоненти:

  • DLab Web UI — веб-інтерфейс користувача для управління всіма компонентами DLab;
  • MongoDB — база даних, яка містить частину конфігурації DLab, персональні налаштування користувача, системні метадані;
  • Docker — застосовується для розгортання інфраструктури;
  • Jenkins — встановлюється на SSN ноду та може використовуватись для менеджменту інфраструктури як альтернатива Web UI.

Edge node

Створити Edge node — це наступний крок, який користувачеві потрібно зробити після входу в DLab. Він використовується як проксі-сервер та шлюз SSH для користувача. Завдяки Edge node користувачі можуть отримати доступ до Notebook через HTTP і SSH. Edge Node має попередньо встановлений веб-проксі-сервер HTTP.

Notebook node

Наступний крок — налаштування Notebook node (або Notebook server). Це сервер з попередньо встановленими програмами та бібліотеками для обробки даних, очищення та перетворення даних, математичного моделювання, Machine Learning тощо.
Аналітичні інструменти DLab, які інсталюються на Notebook node:

  • Jupyter
  • RStudio
  • Zeppelin
  • TensorFlow + Jupyter
  • Deep Learning + Jupyter.

Також Apache Spark встановлюється для кожного з аналітичних інструментів, зазначених вище.

Data engine cluster

Після розгортання Notebook node користувач може створити для нього такі кластери:

  • Data engine — автономний Spark кластер.
  • Data engine service — платформа клауд-кластерів (EMR для AWS, HDInsight для MS Azure або ж Google Dataproc). Це спрощує використання Hadoop та Apache Spark під час процесу обробки та аналізу величезної кількості даних. Додавати кластер необов’язково і потрібно лише у випадку, якщо для задача потребує додаткових обчислювальних ресурсів.

Досвід використання DLab

Ми вже встановили DLab для кількох клієнтів EPAM, протестували його на внутрішніх проектах в середовищах AWS і Azure. Зараз активно розробляється та тестується інтеграція з GCP.

Крім встановлення та налаштування DLab замовнику, ми проводимо воркшопи та тренінги. Команда неодноразово робила Proof Of Concept, інтегровуючи DLab в екосистему замовника, або ж на ізольованому середовищі. Подібні консультації, тренінги та загалом спілкування з замовниками — надзвичайно корисні, оскільки нерідко трапляється ситуація, коли замовник постійно отримує величезний потік даних (з сайтів, внутрішніх та зовнішніх сховищ та сервісів, різноманітних логів, відгуків користувачів в соціальних мережах, баз даних тощо), проте не завжди розуміє, як і яку користь ці дані можуть йому принести.

Ми завжди отримуємо зворотній зв’язок від аналітиків та machine learning експертів наших клієнтів, які використовують DLab для внутрішніх потреб. Такі фідбеки зазвичай переростають у реалізацію нового функціоналу або ж у покращення того, що вже існує.


Якщо вас зацікавила розробка DLab і ви хочете приєднатися до проекту на волонтерських засадах, ознайомтеся, будь ласка, із файлом — CONTRIBUTING.md. Ми співпрацюватимемо зі спеціалістами з будь-якими знаннями та вміннями, які готові удосконалювати веб-інтерфейс, документацію, код, писати тести або ж просто вносити пропозиції та реалізовувати їх у середовищі DLab.

Докладну інформацію про архітектуру, можливості та особливості розгортання DLab можна знайти в корені проекту чи в навчальних відео на DLab Community. Також ви можете завітати на сайт проекту — DLab.

LinkedIn

16 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

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

Непонятно, в чем отличие от HDinsight и Amazon EMR. Какую часть «сложной» для DS работы, не покрытой облачными сервисами, берет на себя DLab?

сто шагов в E̶P̶A̶M̶ DLab......

Наспрвді значно менше: встановити DLAB, залогінитись, створити Edge і почати працювати :)

Ожидал увидеть поющих танцующих роботов

Это к Стоше.

И не полезут они в эту тему. Они больше будут в большими массивами данных работать для толстых финансовых клиентов.

IBM Cloud та Intel® AI DevCloud плануються?

Недавно придумали такую тему как Docker контейнеры. Раз сделал/скачал и не паришся вообще за енваермент. Посему реально смысл как то не очень вижу.

Docker-контейнери в теорії виглядають добре, а в реальному житті з ними бувають проблеми. Наприклад, у нас час від часу падали ноди у Cassandra-кластері, коли використовували Docker-контейнери для Cassandra. Перейшли на bare metal — проблеми зникли.

Видимо потому что Java только недавно научилась нормально жить в докере

Java aps вообще все через жопу работаю, так что вопросы тут не к докеру)

Основна ціль — дозволити data scientists займатись аналітикою та моделюванням, не прибігаючи до допомоги DevOps. Можливість використовувати веб інтерфейс та робити все «в один клік» власне і є перевагою.
Ми використовуємо Docker для розгортання та подальшим управлінням інфраструктурою, конфігурації та встановлення софта. Docker легко не вирішує всіх цілей котрі стояли перед командою, таких як інтеграція з існуючими екосистемами замовниками, розгорання secured периметру для користувачів, аутентифікація, інтеграція з AD, SSO, тощо. Окрім того реалізовано дуже багато функціоналу, наприклад «колаборація» між командами, не говорячи про фунціонал білінг ріпорту. DLab це повноціннa end-to-end платформа з зрозумілим то простим веб-інтерфейсом.

1) докер ставиться доволньо быстро и тоже в пару кликов.
2) я сильно сомневаюсь что «інтеграція з існуючими екосистемами замовниками, розгорання secured периметру для користувачів, аутентифікація, інтеграція з AD, SSO, тощо.» делается в один клик, а так же то что это должен делать DS. А если все же будет, то траблы как бы возникают те же что и при работе руками.
3) я писал все это руками за 2 часа. и не вижу никаких проблем для дева сделать тоже самое. А DS как не прискорбно но должен быть девом, а иначе он просто не сможет работать, так как например банально не сможет распаралелить тренировку на кластер, или оптимизировать пайплайн. У вас же какойто аморфный DS которого в жизни я наверно и не встречал.

Подписаться на комментарии