python

Интервью с программистом из Тинькофф Банка Андреем Степановым о языке Python и ML

  • четверг, 13 июля 2017 г. в 03:11:55
https://habrahabr.ru/company/it_people/blog/332870/
  • Программирование
  • Машинное обучение
  • Python
  • Блог компании IT-People


Серию интервью с докладчиками PyCon Russia продолжает разговор с разработчиком-аналитиком из Тинькофф Банка Андреем Степановым. Мы поговорили с Андреем о месте Python в инфраструктуре банка, о машинном обучении и о технологии распознавания речи.



— Андрей, как ты пришел к разработке на Python?

— В основном, как и многие в моей отрасли, через ML. Но это будет не совсем честный ответ. Питоном я увлекался до этого, можно даже сказать, со школы. А еще был классный курс в ШАДе. Поначалу меня пугал синтаксис, до этого я изучал лишь C-подобные языки, и после них казалось, что полагаться на пробелы и табы для структурирования программы не совсем разумно. Но потом привык, понравилась простота, а через некоторое время пришло понимание, какой же это на самом деле богатый и многогранный язык, какие сумасшедшие вещи можно с ним делать. Это не то, что приходится часто делать на работе, но приятно осознавать, что инструмент, с которым ты работаешь, достаточно гибок и мощен.

— У тебя интересная должность — разработчик-аналитик. Чем занимаются разработчики-аналитики? Над чем ты сейчас работаешь?

— Нас, разработчиков-аналитиков, в банке не очень много. Это что-то среднее между специалистом по работе с большими данными и промышленным разработчиком. Здесь надо и код уметь писать красивый и поддерживаемый, и с данными уметь работать, ML эксперименты проводить, анализировать результаты и соответствующим образом обновлять математические модели. Ну, или искать новые подходы к решению задачи, если текущие не работают. А если работают, и со стороны бизнеса все ок, то пробовать реализовать прототип для продакшена. Соответственно, стек технологий очень широкий. Работа интересная и довольно трудоемкая, очень много приходится читать доков про новые технологии и вообще в принципе следить за новостями в области ML и выбранных технологий для продакшен стека.

Сейчас я работаю на проекте по распознаванию речи для банка.

— Какие технологии использует Тинькофф? Много ли у вас ML? Какое место в инфраструктуре занимает Python?

— Из тех, что используем мы: Python, Tensorflow, Docker, Protocol Buffers, GRPC, Cython. У других команд, конечно, может быть другой стек технологий.

ML много, в продакшене особенно ценятся простые и быстрые, хорошо интерпретируемые ML модели. Сейчас развиваем и модный Deep Learning. Распознавание речи, диалоговые системы — все это как раз использует глубокие нейросети. Применение нейронных сетей может дать в будущем качественный скачок в создании клиентских продуктов и сервисов, поэтому мы уделяем им отдельное внимание.

Python в инфраструктуре наших ML решений пока занимает роль языка для проведения экспериментов и тренировки первоначальных моделей. В нём есть все для ML продакшена, и мы пытаемся исследовать эту тему. В идеале хотелось бы иметь инструмент, который позволит аналитикам экспортировать обученные модели и предоставлять быстрый внешний API для их расчета. Для Deep Learning что-то такое отчасти уже есть, я сейчас говорю про Tensorflow Serving. Было бы круто, если такой инструмент существовал для всех часто используемых ML моделей.

— В RnD вообще не страшно, а должно быть? :) Ребятам, которые ближе к персональным данным и деньгам, наверное, страшнее, но у них там и внешнего контроля над процессом больше.

— Насколько я знаю, Тинькофф стал первым в России, кто внедрил у себя технологию распознавания клиентов по голосовому слепку. Это так? Ты принимал участие в разработке? Расскажи поподробнее про эту фичу?

— Если я правильно понял, вы говорите про совместный проект с NICE Systems. Мы внедрили распознавание по голосу в 2014 г, это произошло до того, как я пришел работать в Тинькофф.

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

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

— Стоит ли ждать, что голосовые помощники и голосовые технологии станут нормальными собеседниками?

— Со временем, думаю, да. Но сколько времени должно пройти для этого, никто не знает.

Сейчас всё, даже с учетом последних наработок в области GPGPU, упирается в вычислительные способности современного железа и разработку эффективных нейросетевых архитектур. Основная проблема заключается даже не в тренировке, хотя и в этой области развитие железа помогло бы, а в предоставлении миллионам пользователей вычислительного времени для обсчёта нейросети на их данных. Представленные недавно Tensor Processing Unit (TPU) от Google и специализированные вычислительные юниты для Deep Learning в GPU ядре новой архитектуры от NVIDIA позволяют частично решить эту проблему, но должно пройти еще много времени, чтобы эти технологии освоили разработчики и ученые.

Да, человечество сделало огромный шаг в области AI по сравнению с тем, что было, например, 10 лет назад, но до полноценного искусственного интеллекта, думаю, еще далеко.

— На твой взгляд, в каком направлении будут развиваться эти технологии в ближайшие годы?

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

— Ты наверняка знаешь, что происходит в мире финтеха. Какова роль Python в этой отрасли?

— Python зарекомендовал себя как отличный язык для экспериментов с ML. В продакшене не все так просто, я сейчас в основном про скорость работы. Но computationally-intensive часть кода всегда можно реализовать на Cython или как C extension. Тогда проблем со скоростью быть не должно. У Python очень классное комьюнити, и возникшие потребности можно всегда решить внешними пакетами.

— Какие инструменты ты используешь для организации работы (в том числе для планирования времени, организации рабочего пространства и т.п.)?

— Я предпочитаю почти пустой рабочий стол с минимальным количеством самого необходимого. Для планирования использую листок бумаги и голову, иногда Google Keep для долгосрочных задач.

— Ты читаешь какой-нибудь профессиональный блог? Какие информационные ресурсы ты мог бы порекомендовать коллегам для развития скиллов?

— Если про ML и Deep Learning, то мне нравятся блоги Andrej Karpathy и WildML. Они, правда, уже давно не обновлялись. Еще есть классный блог про Tensorflow от одного француза. Также мне очень понравилась видеолекция от David Beazley про метапрограммирование в Python 3. А еще у Python-а и стандартной библиотеки очень классные доки, я всегда нахожу в них что-то новое.

17 июля на PyConRu Андрей проведет большой мастер-класс «Распознавание речи на Python без PhD» на котором расскажет о том, как написать и натренировать свой простой движок для распознавания речи с Tensorflow и нейросетями в максимально сжатые сроки.



Спасибо нашим спонсорам, которые делают конференцию возможной: золотому спонсору — компании Adcombo, партнеру энергии и хорошего настроения компании ЦИАН, серебряным спонсорам — Rambler&Co и ДомКлик, бронзовому спонсору — MediaScope. Спасибо за поддержку Python Software Foundation.