Привет, Хабр! Меня зовут Станислав Маскайкин, я архитектор аналитических систем ВТБ. Сегодня я расскажу о том, почему мы перевели нашу систему подготовки отчётности с Oracle SuperCluster на российскую Arenadata DB. Как мы выбирали решение, почему не взяли чистый опенсорс, а также о некоторых результатах такой миграции под катом.
Несколько лет назад банк ВТБ объединился с Банком Москвы и ВТБ 24. Каждый из банков имел собственную ИТ-инфраструктуру с отдельным аналитическим контуром. После объединения получилось, что в банке одновременно существуют три разных ИТ ландшафта.
Само по себе владение тремя разными системами это тройные затраты на инфраструктуру, поддержку и развитие. Но в нашем случае было ещё несколько факторов.
С точки зрения законодательства любой банк должен регулярно сдавать отчётность проверяющим органам. После объединения эту отчётность мы должны были сдавать уже по единому ВТБ. Имея три разрозненные системы, решать эту задачу можно было разве что вручную.
Исторически ВТБ24 был ориентирован на работу с физическими лицами, ВТБ на работу с юридическими лицами, а Банк Москвы на работу и с первыми, и со вторыми.
На момент объединения этих банков обязательная отчётность формировалась в следующих системах:
Единое хранилище данных (ЕХД) хранилище данных Банка Москвы, реализованное на SuperCluster M8 и ETL-инструменте Informatica Power Center.
Система подготовки отчётности хранилище данных ВТБ24, реализованное на Oracle SuperCluster M8 с программным обеспечением Diasoft Flextera BI. Данные для этой системы готовились в другом хранилище корпоративном хранилище данных (КХД), реализованном на СУБД Teradata и ETL-инструменте SAS Data Integration. КХД, в свою очередь, получало данные из оперативного хранилища данных, реализованного на Oracle SuperCluster M8. А туда они реплицировались из автоматизированных банковских систем при помощи инструмента Oracle Golden Gate.
Корпоративное информационное хранилище хранилище данных ВТБ, реализованное на Oracle Exadata X8-2 и ETL-инструменте Informatica Power Center.
Чтобы не формировать обязательную отчётность по объединённому ВТБ в ручном режиме, были созданы интеграции между хранилищами данных.
Это привело к ещё двум большим проблемам:
Увеличилось время получения данных, что часто приводило к срыву сроков предоставления информации.
По правилам ЦБ РФ отчётность за очередной месяц сдаётся в течение первых четырех дней следующего месяца. В банке под это задействуются огромные вычислительные мощности. Если первые дни месяца попадают на рабочие дни (как в марте), мы даже не имеем возможности вернуться и что-то пересчитать это риск для банка не сдать отчётность вовремя. Повышение доступности данных на этом уровне играет огромную роль.
Из-за большого количества расчётов в хранилищах и копирования данных выросло количество инцидентов с качеством этих данных, что тоже очень сильно влияет на сроки предоставление отчётности.
Ещё один момент: многие компоненты нашей инфраструктуры, такие как Oracle SuperCluster, на котором у нас реализована большая часть аналитического ландшафта, попали под End of life. Они были сняты с поддержки производителем и больше не развивались, т.е. обновление необходимо было в любом случае.
Проблема окончания поддержки коснулась не только системы подготовки отчётности, но и озера данных на платформе Oracle Big Data Appliance. К тому моменту а происходило все в 20182019 годах сотрудники ВТБ уже в полной мере оценили data-driven подход и потребляли достаточно много данных. Поэтому с точки зрения бизнеса банка система была критичной. Т.е. перед нами стояла более глобальная задача масштабов всей инфраструктуры.
Параллельно в объединённом ВТБ началась масштабная цифровая трансформация, охватившая все уровни IT, начиная от создания новых ЦОДов и объединения сетей, и заканчивая унификацией автоматизированных банковских систем и созданием омниканальной платформы для фронтальных решений. Всё это кардинально меняло внутренний IT-ландшафт банка.
Поэтому мы задумались не просто об обновлении продукта, решающего частную задачу сбора отчетности, а об изменении аналитического ландшафта и подходов по работе с данными.
Логичная идея создание единого аналитического контура, в рамках которого все данные будут находиться в едином хранилище данных и доступны для всех пользователей в удобном виде. Это привело нас к решению о построении платформы данных ВТБ.
Что такое платформа данных? Для себя мы определили её так: это набор сквозных интегрированных технологических решений (технологическое ядро), которые являются основой для разработки и функционирования сервисов по работе с данными банка ВТБ.
Главная часть платформы данных технологическое ядро. Это системные компоненты, которые переиспользуются на всех уровнях платформы данных.
Мы выделили 6 компонентов технологического ядра:
Управление данными.
Управление качеством данных.
Управление доступом.
Аналитические справочники.
Корректировки.
ETL Framework.
Концептуальная архитектура платформы данных выглядит следующим образом:
Ядром платформы данных является СУБД, на которой реализовывается хранилище данных. Далее расскажу об этом подробнее.
Поскольку платформа данных содержит персональные данные о клиентах и банковскую тайну, требования по надёжности и безопасности были ключевыми. Однако они не лишали нас вариантов выбора решений, которые могли бы нам подойти, было много.
Мы не просто подбирали систему по набору функций, мы смотрели в будущее. С точки зрения бизнеса нам выгоднее было искать продукт, на развитие которого мы сможем оказывать влияние. При этом разработка собственного инструмента (где все стратегии в наших руках) всё-таки не входила в наши планы. Это слишком трудозатратный подход, да и влияние других игроков рынка мы рассматривали как позитивное. Не только мы должны являться триггером для появления новых функций. Коллеги по рынку другие клиенты разработчика могли бы принести в такой продукт интересные идеи. По мере обновления версий мы получим технологическое развитие.
Мы рассматривали всех крупнейших производителей подобных решений: Oracle Exadata, Teradata, Huawei. Оценили отечественные разработки практически все, что есть на рынке. Нам показался интересным опенсорс, тем более для банка это не первый заход в тему открытого исходного кода.
В принципе, можно было бы купить железо, скачать открытый код и собрать собственную платформу данных. Но для нас это означало серьёзные риски: нужны были компетенции, чтобы доработать всё это до уровня энтерпрайза. А на момент старта проекта у нас не было уверенности в успешном завершении подобного мероприятия. Поэтому мы сформулировали ещё один критерий поставка решения в виде программно-аппаратного комплекса (ПАК), чтобы совместная работа железа и программных инструментов была протестирована с учётом версий. Так мы хеджировали риски, связанные с недостаточной экспертизой в опенсорсных решениях внутри ВТБ на момент старта проекта.
При выборе платформы мы учитывали следующие критерии:
функциональность
качество поддержки
отсутствие санкционных рисков
возможность гибкого масштабирования
надёжность
безопасность
наличие Road Map развития платформы и возможность на него влиять
стоимость владения совокупные затраты на программно-аппаратный комплекс на горизонте 10 лет (TCO5).
Если взять последний критерий, то даже с учётом стоимости всех контуров Arenadata DB и самого проекта миграции мы получали существенную экономию на фоне Oracle SuperCluster.
В итоге по совокупности факторов мы выбрали Arenadata DB.
Перед тем, как принимать окончательное решение, мы провели серию технологических испытаний, чтобы проверить систему на работоспособность и определить параметры сайзинга для целевого решения.
В итоге нами были проведены следующие проверки.
Функциональное тестирование:
Сложность изменения запросов. Процедура предусматривает запуск исходного, не переработанного скрипта и контроль ошибок выполнения. В случае наличия ошибок, они исправляются и скрипт запускается повторно. От количества исправлений зависит оценка сложности.
Отказоустойчивость и отключение компонентов:
Отключение дисковых устройств на уровне БД для проверки стабильности работы кластера.
Отключение питания одного блока питания на серверах для проверки стабильности работы кластера.
Отключение сетевого подключения для имитации выхода из строя узла кластера в ходе тестирования отмечается, продолжил ли работать кластер, и фиксируется степень деградации производительности).
Совместимость со средствами резервного копирования банка:
Проведение цикла резервного копирования и восстановления БД на СРК Veritas Netbackup:
Полное резервное копирование БД
Инкрементальное резервное копирование БД
Восстановление БД
Управление и качество работы системы:
Перезагрузка кластера: фиксация успешного выполнения процедуры перезагрузки.
Мониторинг и управление: субъективная балльная оценка от 0 до 5.
Генерация тестового отчёта: прогон запроса изсистемы подготовки отчётности в Arenadata DB для анализа качества результата генерируемого отчёта результаты выполнения отчёта должны быть идентичны.
Нагрузочное тестирование:
Скорость загрузки данных
Интеграционное тестирование:
Интеграция с ПО Infomatica Power Center
Интеграция с Oracle BI
Интеграция с QlikView 12.
В ходе тестирования кластера Arenadata DB показал высокую производительность как на синтетических тестах, так и на реальных нагрузках.
Ниже приведено сравнение скорости выполнения запросов по сравнению с текущим Oracle Super Cluster T5-8.
Тестирование проводил системный интегратор IBS Platformix.
Скорость выполнения синтетического запроса Jmeter (сек) |
|
Arenadata DB (сек.) |
Oracle (сек.) |
160.3 |
1291 |
Кластер показал высокую скорость загрузки данных через ETL-инструмент Informatica Power Center: 200 Мбит/с.
В ходе тестирования была также осуществлена интеграция с основными BI-инструментами, используемыми в Банке ВТБ (Oracle BI и QlikView), и протестирован их функционал.
В QlikView на простейших SQL-запросах протестированы соединение с БД и выборка данных с последующей загрузкой в модель BI-инструмента.
Результаты выполнения представлены в таблице ниже.
Тест 1 |
Тест 2 |
|
Драйвер |
ODBC PostgreSQL35W |
ODBC PostgreSQL35W |
Запрос |
select * from user.test1 // 3 коротких поля |
select e.* from dds.accounts e where e.entry_dt ='2019-02-03' -and e.partition_source_system_cd ='00006' and e.src_deleted is null |
Строк |
20480000 |
45 920 |
Затраченное время |
0:58 |
2:59 |
Скорость загрузки в модель, строк в сек. |
353103 |
257 |
При выполнении тестов была замечена особенность: получение первых строк данных из БД происходило с задержкой примерно в 23 секунды. После этого скорость выборки данных из БД и их доставки в QlikView становилась очень высокой.
Предположительно данная особенность связана c неоптимальной настройкой коннектора.
Нефункциональное тестирование показало, что кластер не имеет единой точки отказа и сохраняет свою функциональность при отказе любого из компонентов.
Цель теста |
Предварительные условия |
Процедура |
Результат |
Тестирование отказа диска с данными |
Отказ диска эмулируется физическим извлечением диска или логическим отключения дискового уст-ва из работающего сервера. |
Подключиться к серверу Провести процедуру unmount для физического диска Проверить доступность данных |
Данные доступны |
Тестирование отказа кэширующего диска |
Отказ диска эмулируется физическим извлечением диска или логическим отключения дискового устройства из работающего сервера |
Подключиться к серверу Провести процедуру unmount для физического диска Проверить доступность данных |
Данные доступны (Отказ кэширующего диска не приводит к потере данных) |
Тестирование включения кластера после эмуляции аварии |
Отказ сервера при выполнении SQL запроса к базе данных, эмулируется отключением электропитания работающего сервера |
Подключиться к серверу Выполнить SQL запрос Выключить 1 ноду Перезапустить выполнение SQL |
Данные получены при повторном SQL запросе |
Благодарю Дениса Степанова и Никиту Клименко, экспертов IBS Platformix, за предоставленные результаты тестирования.
Наша цель это миграция на Arenadata DB всех существующих хранилищ банка ВТБ.
Но в качестве пилота мы запустили перевод систем сбора обязательной отчётности проект, где обновление было наиболее критичным.
Arenadata новая для нас платформа, а в перспективе она должна была стать стратегически важным элементом архитектуры. Поэтому мы выстроили партнёрство с компанией-производителем максимально плотно, вплоть до выравнивания планов по развитию. В рамках этого партнерства часть функционала, который был нам необходим для сбора обязательной отчетности, реализовали чуть раньше. Доработки позволили нам развернуть Arenadata на разных ЦОДах, обеспечив таким образом георезервирование.
Arenadata принципиально не создает под нас отдельное решение, а немного модифицирует стандартную поставку, так что другие участники рынка тоже могут пользоваться наработками, реализованными под одного из клиентов. От такого подхода выигрывают все: и коллеги, которые могут использовать наши идеи, и мы, поскольку наша платформа не закуклится внутри инфраструктуры, а будет обновляться в соответствии с веяниями рынка.
С глобальными сложностями в ходе проекта мы не сталкивались. Да, было много переговоров, в том числе по вечерам, когда мы придумывали схемы коммутации серверов и т.п. Но не было нерешаемых вопросов. Только сложные инженерные задачи.
Сейчас система сбора обязательной отчетности уже частично в продакшене - мы завершаем тестирование последних форм.
Помимо экономии на стоимости владения, мы получили эффект от увеличения скорости расчета ряда форм в разы. Это дает нам более высокую доступность данных - по нашим оценкам в два раза.
Поскольку мы уже видим результаты и детали взаимодействия, около полугода назад стартовал наш основной проект - миграция на продукты Arenadata центрального единого хранилища данных и озера данных. Помимо Arenadata DB, мы используем Arenadata Streaming на базе Apache Kafka и Arenadata Hadoop на базе Apache Hadoop. В ближайшее время первые результаты пойдут в продакшен.
Целевая архитектура платформы данных к концу 2022 годаОдновременно с обновлением системы сбора отчетности мы наращивали экспертизу внутри банка. Как я упоминал выше, на момент старта мы не были уверены, что сможем запустить такое решение из чистого опенсорса с нуля. Все это время мы плотно работали с подрядчиками, которые поставляли нам необходимую экспертизу, а также через обучение и тренинги развивали экосистему партнеров. Это наш резерв по разработке, который мы сможем подключить к развитию проекта в будущем.
Я сказал Постой Я сказал: Спиди, нам нужен селен. Ты найдёшь его там-то и там-то. Пойди и принеси его. Вот и всё. Что же ещё я должен был сказать?
Ты не говорил, что это очень важно, срочно?
Зачем? Дело-то простое.
Я посылал его к другому селеновому озеру на этот раз с приказом добыть селен во что бы то ни стало. Он принёс его через сорок две минуты и три секунды, я засёк время.
Господин сначала создал людей самый несложный вид, который легче всего производить. Постепенно он заменил их роботами. Это был шаг вперёд. Наконец, он создал меня, чтобы я занял место ещё оставшихся людей. Отныне Господину служу Я!
Не верит, грустно согласился Пауэлл. Это же рассуждающий робот, чёрт возьми! Он верит только в логику, и в этом-то всё дело
В чём?
Строго логическим рассуждением можно доказать всё что угодно смотря какие принять исходные постулаты. У нас они свои, а у Кьюти свои.
Конечно, но дело-то не в этом. Нельзя же, чтобы он продолжал нести эту чепуху про Господина.
А почему бы и нет?
Потому что это неслыханно! Как можно доверить ему станцию, если он не верит в существование Земли?
Он справляется с работой?
Да, но
Так пусть себе верит во что ему вздумается!
Правильно. Теперь слушай тут вот какая логика! Донован начал загибать волосатые пальцы. Первое: новый робот прошёл все испытания в лаборатории. Второе: Ю. С. Роботс гарантировала, что он пройдёт и полевые испытания на астероиде. Третье: вышеупомянутых испытаний робот не выдерживает. Четвёртое: если он не пройдёт полевых испытаний, Ю. С. Роботс теряет десять миллионов наличными и примерно на сотню миллионов репутации. Пятое: если он не пройдёт испытаний и мы не сможем объяснить почему, очень может быть, что нам предстоит трогательное расставание с хорошей работой.
Я и говорю. Команды, отдаваемые одновременно по шести каналам! В обычных условиях один или несколько пальцев выполняют несложную работу, которая не требует пристального наблюдения за ними. Ну, точно так же, как наши привычные движения при ходьбе. А в чрезвычайных обстоятельствах нужно немедленно и одновременно привести в действие всех шестерых. И вот тут что-то сдаёт. Остальное просто. Любое уменьшение требуемой от него инициативы, например появление человека, приводит его в себя. Я уничтожил одного из роботов, и Дейву пришлось командовать лишь пятью, инициатива уменьшилась, и он стал нормальным!
Мы с вашим молодым мистером Блэком приготовили небольшой сюрприз. Видите ли, пространство между мной и роботами было залито не гамма-лучами, а инфракрасными. Обычным тепловым излучением, абсолютно безобидным. Нестор-10 знал это и ринулся вперёд. Он ожидал, что и остальные поступят так же под действием Первого закона. Только через какую-то долю секунды он вспомнил, что обычный НС-2 способен обнаружить наличие излучения, но не его характер. Что среди них только он один может определять длину волны благодаря обучению, которое он прошёл на Гипербаэе под руководством обыкновенных людей. Эта мысль не сразу пришла ему в голову, потому что была слишком унизительной для него. Обычные роботы знали, что пространство, отделявшее их от меня, гибельно для них, потому что мы им это сказали, и только Нестор-10 знал, что мы лгали. И на какое-то мгновение он забыл или просто не захотел вспомнить, что другие роботы могут знать меньше, чем люди Комплекс превосходства погубил его.
О том, что вы должны были понимать, почему роботу давать это задание нельзя. Вы же сами сказали: несовершенство робота приходится компенсировать изобретательностью и разумом человека. Именно так, молодой человек, именно так. Роботы лишены изобретательности. Их интеллект ограничен и может быть полностью просчитан. В этом, собственно, и состоит моя работа.
Получив приказ,точный приказ, робот его выполняет. Если приказ неточен, он не в состоянии исправить ошибку сам. Вы ведь сами говорили об этом, вернувшись с корабля. Так как же посылать робота искать неисправность, если мы сами не знаем, в чем она состоит, а значит, и не можем дать ему точного приказа? Найди неисправность такой приказ можно дать только человеку, но не роботу. Возможности человеческого мозга, пока по крайней мере, точному просчёту не поддаются.
И если бы робот не был надёжнее человека, всё было бы в порядке. К сожалению, на Ю. С. Роботс считали своим долгом сделать робота надёжнее человека. Роботу было приказано крепко схватить рычаг, притянуть его к себе и держать. Крепко! Это слово было выделено, повторено, подчёркнуто. И робот выполнил приказ. Но вот незадача: робот раз в десять сильнее человека, в расчёте на которого был сконструирован рычаг.
Вы хотите сказать
Я не хочу сказать, а говорю, что рычаг погнулся. Погнулся вполне достаточно для того, чтобы сместить спусковой механизм. И когда тепло рук робота сместило термоэлемент, контакта не произошло
С 2019 года в России работает система быстрых платежей (СБП) возможность переслать деньги в любой банк участник системы по номеру телефона и, что не менее важно, новый способ для юрлиц принимать платежи по QR-коду. Мобильный банк сейчас в кармане у многих, и мы подумали: почему бы не сделать такой продукт, который позволит легко, быстро и c низкой комиссией принимать платежи от покупателей и делать это там, где удобно?
Сказано сделано. За три месяца полностью на удалёнке мы разработали мобильное приложение и провели пилот, в рамках которого обкатали сервис в четырёх городах, а уже сейчас он доступен по всей России. Платежи можно принимать через обычный смартфон, просто сгенерировав QR-код и показав его покупателю для оплаты. Размер комиссии, в зависимости от вида деятельности, составляет 0,4% или 0,7% от суммы платежа. О концепции продукта, его разработке и многом другом мы хотим рассказать в этой статье. Заходите, будет интересно.
Не будем лукавить приём платежей через QR-код не является чем-то инновационным. У всех на виду Китай, где этот вариант оплаты стал чуть ли не главным. И когда Центробанк заявил о подобной возможности как одной из важных фич своей СБП, мысль стала работать.
QR-коды уже давно используются повсеместно даже банально на квитанциях ЖКХ. И у нас родилась идея: а что если платёж через СБП поможет снизить комиссию за обслуживание? Надо просто сделать правильную и удобную обёртку сервиса так клиенты смогут принимать платежи от физических лиц по QR-коду. Win-Win!
Увы (кому-то ура), но тотальная удалёнка наша новая реальность. Поэтому и набирать команду, и работать пришлось дистанционно. Изначально на проекте было около 10 человек. Мы внедрили Scrum и постепенно наращивали численность команды. Сейчас над проектом трудится около 30 человек, поделённых на 3 команды так проще планировать спринты.
Всего от старта разработки до выхода в App Store и Google Play у нас ушло чуть больше 3 месяцев. В бэкенде, написанном на Kotlin, реализована микросервисная архитектура. Он размещён на серверах ВТБ, а фронтендом является само приложение в версиях под iOS и Android.
Изначально разработанный в рамках быстрого MVP сервис являлся монолитом. Но сейчас мы пилим его на микросервисы и переходим на так называемый Release Train, подразумевающий выход обновления продукта с заданной периодичностью. Мы начинаем с релизов раз в месяц и планируем затем перейти на двухнедельные.
Новый продукт получил название ВТБ Бизнес QR. Для работы с ним предпринимателю нужно а) иметь расчётный счёт в ВТБ; б) установить на смартфон приложение и и, в общем-то, всё.
После подключения к СБП можно скачивать приложение и регистрироваться в нём. После этого для генерации QR-кода в приложении необходимо ввести сумму и назначение платежа. В чеке можно указать сразу несколько позиций.
Две чашки кофе и один QR-кодПокупатель считывает код из мобильного приложения любого банка, подключённого к СБП (полный список банков, работающих в системе, можно посмотреть здесь во вкладке Оплата по QR), и оплачивает счёт. Статус платежа сразу отображается в ВТБ Бизнес QR, а зачисление на расчётный счёт происходит в течение 15 секунд.
Историю транзакций можно посмотреть на отдельном экранеПриложение является бесплатным для клиента он платит только комиссию в размере 0,4% для образовательных, потребительских и ещё ряда категорий товаров (полный список на сайте продукта) и 0,7% для всех остальных.
ИП в статусе самозанятых с помощью этого сервиса могут отправлять покупателю чек, вести учёт доходов от безналичных и наличных операций, получать квитанции для уплаты налогов. А ещё режим самозанятости можно подключить прямо через приложение. Кроме того, этой категории предпринимателей не нужно устанавливать кассу, так как чек создаётся прямо в приложении.
Для первой стадии MVP мы выбрали 4 города, получили фидбэк и дополировали базовую функциональность. Сейчас вторая стадия, в рамках которой мы сняли ограничения по территориальному присутствию, так что подключиться к сервису может любой желающий.
Немного статистики: за два месяца после масштабирования количество пользователей выросло в 15 раз до 1500, а география расширилась ещё больше до 300 населённых пунктов. В топ-6 регионов входят Москва, Санкт-Петербург, Новосибирск, Барнаул, Красноярск и Хабаровск. Наиболее активно приложение используется для оплаты покупок в розничной торговле, парикмахерских, салонах красоты и туристических агентствах. Размер максимальной транзакции составил 200 000 руб., средний чек 3 000 руб.
Во время пилота наша основная задача заключается в сборе максимального фидбэка от клиентов и сети. Мы проводим короткие и глубинные интервью, анкетирование и, конечно же, активно интегрированы в поддержку.
На текущий момент общая схема выглядит так: клиент может позвонить на горячую линию в службу поддержки или обратиться в офис банка. Если вопросы типовые, то сотрудник офиса или службы поддержки самостоятельно отвечает на вопросы клиента. Если вопрос более сложный, то заводится заявка на консультацию, которая обрабатывается в течение часа. Иногда бывают сложные запросы на них мы стараемся ответить в течение дня. Кроме того, мы планируем добавить в приложение чат и сейчас активно работаем над этим.
Не хотим выглядеть излишне самонадеянными, но на текущий момент фидбэк по проекту преимущественно положительный. Поэтому мы готовимся к расширению функциональности наиболее востребованными функциями. Среди них ролевая модель, позволяющая осуществлять приём платежей под нескольким учётными записями клиента в рамках одной компании; каталог товаров для упрощения формирования QR-кода для корзины товаров; возвраты платежей; push-уведомления и много других мелких фич.
Отступление. Почему дообучить, а не переобучить? Термин переобучение модели имеет двоякое толкование: среди специалистов он означает дефект модели, когда модель хорошо предсказывает, фактически повторяет прогнозируемый параметр на обучающей выборке, но гораздо хуже работает на внешней выборке данных. Естественно, такая модель является браком, поскольку данный дефект не позволяет ее применять.
В своём проекте мы предложили заменить традиционное обучение сотрудников как очное, так и по инструкциям или видео, интерактивным форматом. Он совместим с системами, с которыми работают пользователи. А в банке как раз внедрялось несколько новых систем, так что для обучения работе с ними нужно было подготовить сотрудников.Нашу технологию, которая помогает обучаться быстро и без отрыва от работы, протестировали корпоративное подразделение банка, департамент малого и среднего бизнеса, а также розничное подразделение. Тестирование прошло отлично, планируем сделать HintEd общебанковской системой.
На акселератор мы пришли с платформой для встраивания в мобильное приложение банка ленты персональных Stories, которую можно настроить с учётом интересов и трат конкретного клиента. В результате мы запустили с ВТБ проект персональных анимированных итогов 2019 года.Клиенты получили детальный персональный отчёт о тратах в различных категориях и зарубежных поездках. Иногда такой отчёт становится большим сюрпризом для человека, который не особо контролирует свои траты. Это реальная забота о клиентах: банк становится ближе к своим пользователям. Нашим главным заказчиком стало CRM-подразделение банка. В планах внедрение в банке полного функционала платформы.
Привет, Хабр! Команда ВТБ запустила серию подкастов о передовых решениях финтеха Деньги любят техно. Журналист, технологический обозреватель Марина Эфендиева будет обсуждать с экспертами банка, рынка, учеными и бизнесменами перспективы и сложности финтеха: внедрения технологий на основе Big Data, машинного обучения, искусственного интеллекта, вопросы кибербезопасности и защиты данных, перспективные технологические специальности, голосовых помощников и многое другое.
В первом выпускезаместитель президента-председателя правления ВТБ Вадим Кулик и директор Физтех-школы прикладной математики и информатики д.ф.-м.н. Андрей Райгородский обсуждают, почему банки вРоссии так любятData science, можно ли стать дата-сайнтистом за три месяцаигде учиться, чтобысоздатьуспешную карьеру. Под катом основные темы этой беседы и ссылка на сам подкаст.
Тривиальный, но важный вопрос: почему именно банковский Data Science сегодня занимает передовые позиции?
По словам Вадима Кулика, сегодняшние тренды это новый этап в решении вопросов, которые стояли перед банковским сектором еще в 90-х. Тогда жесткая нехватка какой-либо информации о клиентах усложняла процесс выдачи потребительских кредитов и выход на B2C-рынок в целом.
Решая важный для финансовой устойчивости вопрос кому дать кредит, банки параллельно соревновались друг с другом в том, кто быстрее одобрит кредит и выдаст повторный.
Поэтому ВТБ уделяет такое внимание подходу Data Fusion, который предполагает объединение, обезличивание данных из разных источников и их обработку. По этому поводу недавно прошлабольшая конференция.
Хорошей иллюстрацией применения данного подхода может служить СП ВТБ и РостелекомаПлатформа больших данных, которое уже предоставляет рынку продукты на основе Big Data для увеличения эффективности и развития бизнеса.
Андрей Райгородский ответил на ещё один очень важный вопрос: можно ли стать дата сайентистом за 3 месяца, как сейчас предлагают многие онлайн-платформы. Он также рассказал о том, какова сейчас потребность в этих специалистах.
Страна очень требует большого количества людей, которые разбираются в том, что такое данные, как их можно обрабатывать, какие существуют методы. Есть такие хайповые слова, как искусственный интеллект, машинное обучение, нейронные сетки и так далее. В принципе, неудивительно, что люди начинают этим торговать. Это очень востребованный рынок, очень много компаний сейчас предоставляют рабочие места для людей, которые занимаются такого рода анализом, аналитикой. Но тут надо разбираться, что-то можно сделать за три месяца, но топовым специалистом за этот период ты точно не станешь,сказал Райгородский.
По его словам, существуютхорошие онлайн-курсы по аналитике данных. Но стоит различать уровень квалификации, подходящий для решения некоторого ограниченного круга прикладных задач стандартными методами, и уровень, на котором строится повестка завтрашнего дня.
МФТИ (Московский физико-технический институт) лидер этого направления в России фокусируется на фундаментальном обучении и готовит кадры для будущего. При этом есть и специальные нишевые программы например,Школа глубокого обучения, которая заработала в онлайн-формате ещё до того, когда это стало ковидным мейнстримом.
Главной особенностью МФТИ можно считать взаимодействие прикладного и фундаментального. В наши дни это связка между коммерческой индустрией, которая формирует запрос, и академической наукой, которая даёт фундаментальные математические решения. Отличный пример такого симбиоза созданная в начале 2021 года лаборатория ВТБ при МФТИ.
Современный мир устроен так, что во многих сферах а в финансовой в первую очередь умение собирать и анализировать данные становится главным фактором роста. Скорость этого роста такова, что не позволяет только сиюминутные задачи. Нужно уметь формировать повестку будущего. Как выразился Андрей Райгородский, нельзя упускать фундаментальное в гонке за количеством кадров: цель не в том, чтобы снесло крышу, а в том, чтобы потолка не стало. А что вы об этом думаете? Делитесь мнениями в комментариях.
А вот и сам подкаст:
Вы наверняка знакомы с ситуацией, когда при обращении в какую-либо крупную организацию приходится подавать целый пакет документов, точнее пакет их сканов. И это в век цифры! Теперь посмотрите на это глазами второй стороны и представьте, что у вас миллионы таких заявок со сканами, и они не содержат информации о границах документов. Апокалипсис? Всё придётся сегментировать вручную? К счастью, существуют алгоритмы автоматической сегментации потоков многостраничных документов. Здесь мы расскажем о новом подходе в сегментации с использованием модели BERT.
Итак, потоки необходимо разделить на отдельные документы сегментировать, чтобы далее с ними было удобно работать. После сегментации разделённые документы, как правило, добавляются в систему документооборота. Поэтому часто вместе с задачей сегментации возникает задача классификации документов присвоение документу метки одного из конечных наборов классов, что упрощает дальнейшую навигацию в системе документооборота.
В классификации документов модель BERT (Bidirectional Encoder Representations for Transformers) уже применялась ранее. Но для задачи сегментации, насколько нам известно, это первая работа с использованием этой языковой модели.
Кстати, в банковской деятельности классификация документов используется не только при работе со сканами или фотографиями документов физических лиц, а ещё и для сортировки накопленных фондов документов, для фильтрации отзывов клиентов с целью улучшения качества обслуживания, для сортировки платёжных документов, для дополнительной фильтрации новостных потоков и для многого другого.
Cегментация потоков документов (Page Stream Segmentation PSS) и сопутствующая задача классификации (Document Image Classification DIC) исследовались многими авторами. В работе Wiedemann, Heyer (2019) сделан обзор многих таких исследований, и среди них выделены два подхода к PSS и DIC: с помощью системы правил (Rule-Based Systems RBS) и с применением машинного обучения.
Системы RBS (Karpinski and Belaid, 2016; Hamdi at el. 2017) подразумевают выделение из распознанного текста с помощью регулярных выражений специальных дескрипторов, определяющих границы документов в потоке. Дескрипторами могут быть приветственные фразы, названия частотных сущностей, номера страниц, layout-признаки: размеры шрифтов, расположение сущностей на странице и др. RBS может оказаться довольно эффективным для однородных (homogeneous) датасетов с хорошим качеством сканов и определённой структурой документов, встречающихся, в частности, в бизнес-документации (счета, накладные, письма и т.п.). Но для RBS необходимо составлять вручную правила для выделения дескрипторов, что является несомненным минусом на датасетах с сильно разрозненными тематиками (heterogeneous datasets).
Подходы с применением машинного обучения (Rusinol at el. 2014; Daher, Belaid, 2014; Agin at el. 2015) и глубокого машинного обучения (Harley at el. 2015; Noce at el. 2016; Gallo at el. 2016; Wiedemann, Heyer, 2019) кажутся более привлекательными, поскольку не требуют глубокого погружения в суть текстов документов, как в RBS. Обучение в этих подходах в основном проводилось на текстовых и визуальных признаках и их комбинациях. Также применялось объединение (fusion) отдельных моделей на текстовых и визуальных признаках, когда одна модель может уточнить результат другой модели и в итоге улучшить общий результат.
В работе Harley at el. (2015) для классификации документов из датасета RVL-CDIP, введённого в этой же работе, используются глубокие свёрточные нейросети CNN на визуальных признаках. В работах Noce at el. (2016) и Gallo at el. (2016) для классификации документов применяются нейросети и трансфер-лёрнинг. В работе Gallo at el. (2016) классификация (DIC) строится только на визуальных признаках, но для повышения качества используются признаки соседних страниц. При этом автоматически решается задача сегментации (PSS): если предсказанный класс текущей страницы отличается от класса предыдущей, значит, начался новый документ. Стоит отметить, что сегментация (PSS) на основе классификации (DIC) имеет большой недостаток: она не разделяет документы одного и того же класса. Если в датасете сильно доминирует какой-либо класс, то сегментация (PSS) на основе классификации (DIC) практически бесполезна, поскольку уже разделённые потоки одного класса необходимо повторно разделять.
В работах Daher, Belaid (2014), Agin at el. (2015), Hamdi at el. (2018), Wiedemann, Heyer (2019) для нахождения границ документов в потоках довольно эффективно используется бинарная классификация: для каждой пары соседних страниц из потока модель предсказывает, является ли следующая страница в паре продолжением документа (SD Same Document) или начался новый документ (ND New Document). В работе Wiedemann, Heyer (2019) задача PSS решается с помощью бинарной классификации (SD/ND) с использованием комбинации текстовых и визуальных признаков и с применением глубоких нейросетей.
В нашей работе мы также будем использовать бинарную классификацию для определения границ документов в потоке. Причём для пары соседних страниц мы будем генерировать текстовые признаки с помощью модели BERT.
Модели машинного обучения на основе BERT получили большую популярность, поскольку с их помощью были улучшены, и порой существенно, оценки многих задач NLP (Natural Language Processing).
Модель BERT сначала предобучают на широких корпусах текстов, а затем используют для решения конкретных задач, в том числе и на небольших датасетах. Во время предобучения модель решает две задачи: MLM (Masked Language Model) и NSP (Next Sentence Prediction). В задаче MLM случайно метится (маскируется) определённая доля токенов (слов или частей слов) входной последовательности, и задача состоит в том, чтобы восстановить значения токенов, которые были замаскированы. Задача NSP это бинарная классификация на парах предложений (или спанов текстов), когда нужно предсказать, является ли второе предложение (или спан текста) логичным продолжением первого. При решении конкретных задач предобученный BERT используют для трансфер лёрнинга, извлекая признаки из текста. В случае файн-тюнинга модель BERT делают составной частью специализированной модели, и его вес меняется вместе с весом этой модели. Более подробно о принципах построения этой модели мы рассказывали в нашем предыдущем посте о классификации документов.
Касательно нашей задачи: зачастую начало текста текущей страницы многостраничного документа является логичным продолжением конца текста предыдущей страницы и модель BERT, предобученная на задаче NSP, может улавливать сложные контекстные зависимости этих кусков текстов. Мы предполагаем, что сможем извлекать с помощью BERT сильные текстовые признаки на парах страниц для бинарной классификации (SD/ND).
Мы будем решать задачу сегментации PSS на нашем закрытом датасете (Documents for Credit Dataset DCD), составленном из документов, предоставляемых компаниями для получения кредита в Банке ВТБ.
DCD был накоплен за продолжительный период. Сканирование документов проводилось потоками, как правило, один поток это набор документов от одной компании. Потоки сегментировались в полуавтоматическом режиме. DCD включает около 63 тыс. уже сегментированных одностраничных и многостраничных документов, суммарно около 232 тыс. страниц.
Бизнес-подразделениями банка были выделены около 300 категорий документов. Из них 10 базовых категорий: договор аренды, выписка из реестра участников, устав компании, свидетельство о постановке на учет в налоговом органе, вопросник для юридических лиц, паспорт РФ, лист записи ЕГРЮЛ, свидетельство о государственной регистрации юридического лица, приказы/распоряжения, решения/протоколы, а другие менее значимые документы отнесем к категории Иное.
Поскольку у нас не так много оригинальных неразделённых потоков (метки принадлежности к потокам не сохранялись после разделения), мы вынуждены были генерировать потоки заново из уже сегментированных документов, чтобы они были приближены по составу к потокам, поступающим на сегментацию:
Согласно этим правилам мы сгенерировали 10000 потоков для Train, 2000 потоков для Dev, 2000 потоков для Test.
Потоки из Train мы случайным образом перемешали, выставили потоки друг за другом и получили один длинный поток, в котором пары соседних страниц (вернее, извлечённые из них признаки) и их метки (Same Document или New Document) будут, соответственно, входами и целевыми метками нашей будущей модели бинарной классификации. Аналогично из потоков получаем входы и целевые метки для Dev и Test.
Document lengths (pages) | Train | Test | Dev |
1 | 24953 | 3075 | 2752 |
2 | 10170 | 1251 | 1135 |
3 | 3680 | 452 | 422 |
4 | 2549 | 310 | 279 |
5 | 1857 | 221 | 187 |
6 | 1246 | 165 | 153 |
7 | 895 | 116 | 105 |
8 | 912 | 89 | 98 |
9 | 968 | 120 | 92 |
>=10 | 4453 | 536 | 515 |
Single-page documents | 24953 (48%) | 3075 (49%) | 2752 (48%) |
Multi-page documents | 26730 (52%) | 3260 (51%) | 2986 (52%) |
Total documents | 51683 | 6335 | 5738 |
Total pages | 188504 | 22553 | 21022 |
# new document (gen. pairs) | 133539 (49%) | 26879 (62%) | 26879 (64%) |
# same document (gen. pairs) | 136817 (51%) | 16218 (38%) | 15284 (36%) |
Для решения задачи сегментации PSS мы будем использовать бинарную классификацию SD (Same Document) и ND (New Document), описанную выше во введении. В качестве признаков наша модель получает эмбеддинг пары соседних страниц, составленный из визуальных эмбеддингов каждой из страниц, и одного общего текстового эмбеддинга, полученного сразу для пары. Число пар страниц по каждой выборке Train/Dev/Test можно посмотреть в таблице 1.
Визуальный эмбеддинг каждой страницы вектор длины 512 мы получаем как выход предпоследнего слоя CNN ResNet34, He at al. (2015).
Текстовый эмбеддинг, общий для пары страниц, получаем с помощью модели RuBERT (Russian, cased, 12-layer, 768-hidden, 12-heads, 180M parameters) от DeepPavlov. Для этого на вход модели подаем вектор из 512 токенов следующего вида: на первом месте CLS-токен, потом N (информационных) токенов, соответствующих спану текста конца первой страницы из пары, далее (разделяющий) SEP-токен, потом M (информационных) токенов, соответствующих спану текста начала второй страницы из пары, и потом снова SEP-токен. Суммарное число информационных токенов, которое можно разместить во входном векторе, не более 509: N + M <= 509. Мы хотим как можно эффективнее использовать возможности модели BERT, поэтому стремимся максимально заполнить входной вектор модели токенами.
Схема получения текстовых признаков для пары страниц. Ti,j токен с номером i в тексте страницы j. Для удобства отображения отсчёт токенов страницы 1 идёт с конца.
Поскольку RuBERT предобучен на задачу NSP, то CLS-эмбеддинг (вектор длины 768) должен содержать в себе наиболее полную информацию, является ли второй текст логическим продолжением первого. Его и возьмём в качестве общего эмбеддинга для пары страниц.
Бейслайн
Итак, для каждой пары страниц два визуальных эмбеддинга (два
вектора длины 512) и один текстовый эмбеддинг (вектор длины 768)
объединяются в один общий визуально-текстовый эмбеддинг (вектор
длины 1792). Далее на таких эмбеддингах строится бинарная
классификация SD (Same Document) / ND (New Document) на основе MLP
(Multi Layer Perceptron) с одним скрытым слоем нейронов длины 896,
dropuout 0.3. Это наш бейслайн.
Общая схема модели
Основная модель
Следующим шагом мы провели дообучение (further-pretraining) модели
RuBERT на обеих задачах MLM и NSP на нашем датасете DCD. Повторно
сняли визуально-текстовые признаки, как в бейслайн, и на них
построили бинарную классификацию на основе модели MLP с одним
скрытым слоем нейронов длины 896 и dropout 0.3. В итоге получили
основную модель улучшенного качества.
Число пар | Accuracy | Kappa | |
43097 | 0.9669 | 0.9294 | |
Пары хотя бы c одним одностр. док-м | 19188 | 0.9771 | - |
Пары с обеими страницами из многостр. док-тов | 23909 | 0.9587 | 0.9072 |
Число пар | Accuracy | Kappa | |
43097 | 0.9819 | 0.9615 | |
Пары хотя бы c одним одностр. док-м | 19188 | 0.9898 | - |
Пары c обеими страницами из многостр. док-тов | 23909 | 0.9756 | 0.9450 |
Даже без дообучения модель BERT даёт приемлемое качество 0.9669. А после дообучения на нашем датасете, как и ожидалось, качество ещё немного улучшилось до 0.9819, при этом существенно увеличилась kappa.
Задача сегментации набирает популярность, и назрела необходимость в составлении общедоступного и достаточно большого датасета на английском языке, содержащего несколько десятков тысяч многостраничных документов, на котором можно будет объективно сравнивать оценки нашего и других подходов.
При этом в тот период (90-е) в России появилось достаточно много людей с хорошим техническим образованием и с высоким IQ, которые остались без работы. Банковскую отрасль в нашей стране сформировали бывшие технари с крутым фундаментальным образованием и опытом разработки инноваций.Да я и сам бывший технарь.
Думаю, что в скором времени большая часть банков начнёт тестировать систему нативного взаимодействия, то есть управления своим счётом через голос и голосового помощника.Думаю, что в 2021 году многие выйдут на рынок с пробными версиями таких помощников.
Звучит футуристично, но мы реально работаем над цифровыми сотрудниками, более того, строим модели, задача которых строить модели.То есть машинная логика, производящая машинную логику. У нас уже были весьма успешные пробные запуски пусть в массовую практику они пока не пошли, но с точки зрения построения моделей опыт был полезный и позитивный. Мы потихоньку возвращаемся к этой теме больших ресурсов пока не вкладываем, сейчас неподходящее для этого время. Но всё же с учетом появившихся новых технологий и новой математики считаем это не первостепенным, но перспективным направлением.