Привет, Хабр!

Мы продолжаем серию статей про Data Science задачи, решаемые нами в Центре развития финансовых технологий.

В прошлых статьях (тут, а также тут) мы рассказывали про решение задач премодерации контента, но не вдавались в детали того, с помощью какого инструментария мы это делали.

Сегодня же речь пойдет о том, что помогает нам решать эти задачи, а именно - про нашу Data Science экосистему.

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

Описание решения

Итак, наши главные требования к программной составляющей экосистемы на старте работ звучали так:

  • Решение должно быть построено на базе программных решений с открытым кодом (Open Source).

  • Решение должно поддерживать горизонтальное масштабирование.

  • Решение должно иметь простую архитектуру с возможностью развертывания в сжатые сроки.

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

  • Решение должно позволять хранить данные в реляционном и nosql форматах.

Для имплементации этих задач мы выбрали следующие программные компоненты:

  1. Kubernetes как среда контейнеризации.

  2. JupyterHub + JupyterLab в качестве рабочего места DS. При этом однопользовательские сервера JupyterLab создаются в отдельных контейнерах, для входа реализована интеграция со службой контроля доступа.

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

  4. MLFlow как инструмент управления жизненным циклом ML-моделей, а также Data Science экспериментами.

  5. GitLab SCM как система контроля версионности, GitLab CI как средство реализации процессов непрерывной интеграции, Nexus как хранилище бинарных артефактов моделей машинного обучения и прокси-репозиторий PyPi (репозитория библиотек Python).

  6. Стек ELK как инструментарий сбора и анализа логов, а также обеспечения требований информационной безопасности (ИБ) по мониторингу событий ИБ.

  7. Grafana как средство технического мониторинга состояния кластера, а также визуализации и мониторинга результатов ML-моделей.

  8. А также MPP СУБД Greenplum, как хранилище результатов работы прототипов и экспериментов.

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

Все вышеперечисленные инструменты формируют следующий архитектурный ландшафт:

Функциональная архитектура нашей DS-экосистемы
Функциональная архитектура нашей DS-экосистемы

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

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

  • Выбор одного из заранее собранных окружений. 

    Для этого мы завели три окружения при этом каждое последующее включает в себя библиотеки из предыдущих окружений:

    • Для дата аналитиков. Сюда включили базовые библиотеки для анализа данных (numpy, pandas, matplotlib, seaborn)

    • Для DS (sklearn, xgboost, catboost, lightgbm, scipy, библиотеки для работы с текстовыми данными: nltk, gensim, pymorphy2 и другие)

    • А также окружение для DS (Deep Learning), включающее в себя библиотеки для работы с нейросетями (torch, tensorflow, transformers).

  • Установка библиотек из прокси-репозитория PyPi (размещенном в Nexus). Библиотека устанавливается в текущий экземпляр однопользовательского сервера JupyterLab.

  • Выбора параметров однопользовательского сервера JupyterLab (CPU, RAM). При этом в зависимости от роли пользователя установлены ограничения на выбор ресурсов. Максимальное доступное количество ресурсов на одного пользователя сейчас установлено в размере 64 ядра CPU и 256 GB RAM.

В качестве основного источника информации для прототипирования используется Корпоративное Озеро Данных на базе экосистемы Hadoop, консолидирующее в себе внутренние системы Банка и внешние источники.

Для хранения результатов работы прототипов и экспериментов используется Massive Parallel Processing СУБД Greenplum.

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

Надо сказать, что при разработке моделей машинного обучения мы руководствуемся принципами MLOps. В качестве инструмента по управлению Data Science экспериментами мы используем MLFlow, что позволяет нам логировать метрики и параметры модели, а также различные артефакты экспериментов, принимать решения о внедрении моделей, а также выполнять ретроспективный анализ процесса изменения метрик ML-моделей.

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

Немного про задачи

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

DS экосистема позволяет нам понять кто наш клиент, прогнозировать склонности и интерес наших клиентов к продуктам, предсказывать их будущее поведение и многое другое.

Планы на будущее

В настоящее время мы планируем активно развивать направление искусственного интеллекта в РСХБ. Как следствие, мы планируем реализовать более тесное взаимодействие инструментов с платформой клиентских данных (CDP), а также с площадками экосистемы РСХБ в онлайн режиме. Более того, в связи с расширением скоупа задач в части NLP и CV мы планируем задействовать возможности GPU для увеличения вычислительной мощности кластера.