Как стать автором
Обновить

Как мы строили Data Science экосистему в Россельхозбанке

Время на прочтение4 мин
Количество просмотров3.2K

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

Мы продолжаем серию статей про 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 для увеличения вычислительной мощности кластера.

Теги:
Хабы:
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Публикации

Информация

Сайт
www.rshb.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия
Представитель
Юлия Князева