Мы побеседовали с дата-сайентистом и тимлидом компании «Газпромнефть» Дмитрием Подвязниковым. Он рассказал о своем опыте и дал советы начинающим специалистам.
Где ты сейчас работаешь, в какой компании и в каком городе?
Я работаю тимлидом команды машинного обучения в компании «Газпромнефть — Цифровые решения» в Санкт-Петербурге.
Ты тимлид — значит, у тебя есть команда. Расскажи, чем занимаются ребята, сколькими людьми ты руководишь.
Сейчас в моей команде пять человек. И чтобы рассказать, чем мы занимаемся, нужно дать небольшую вводную в геологию и сейсмику.
Мы обрабатываем сейсмические данные — это, грубо говоря, УЗИ земли. В поле (определенном участке) с помощью взрывов создается акустическая волна, которая отражается от различных структур под землей. Эти данные регистрирует набор датчиков.
Такие исследования проводятся для нефтедобычи, металлургии, различных строительных мероприятий и для изучения вообще всего, что находится под землей. Моя команда создает модели машинного обучения, чтобы ускорить и упростить этапы обработки сейсмических данных. Например, проверить качество данных, очистить их от шумов, применить другие фильтрации.
Правильно ли я понимаю, что модель машинного обучения должна интерпретировать сейсмические сигналы?
Не совсем. Наши модели выполняют отдельные задачи, например подавляют специфические типы шумов, которые возникают при сейсмических съемках. Они пытаются обнаружить некондиционные данные в сейсмике. Почти любая сейсмическая съемка — это сотни тысяч (если не миллионы) временных рядов, которые показывают отражение волны от структур под землей. И это огромный объем данных.
Чтобы проверить потенциальные ошибки или некондиционные данные, нужно много времени. Существующие инструменты не всегда показывают желаемое качество. С помощью наших моделей это можно сделать быстрее и проще для эксперта-геолога.
Ты сразу пришел в компанию как тимлид?
Нет, я пришел аналитиком. Постепенно росла ответственность, появлялись новые задачи, приходили новые люди — и я вырос в тимлида.
Расскажи, как ты к этому пришел. Какое у тебя образование, какие были первые шаги в рабочем мире?
Я учился в Московском инженерно-физическом институте (сейчас он называется НИЯУ МИФИ) на факультете теоретической физики. Моя специальность — инженер-физик, конкретно я занимался радиационной безопасностью.
Моя первая работа была в частном научно-исследовательском учреждении, которое занималось исследованиями в области молекулярной биологии. Я туда пришел лаборантом — писал на матлабе программу для моделирования метаболических потоков в бактериях. Если кратко: разные компании используют бактерии, чтобы производить аминокислоты и прочие пищевые добавки для людей и животных. Чтобы бактерии делали то, что мы хотим, и в нужном количестве, их ДНК слегка меняют.
С помощью исследования метаболических потоков (эта наука называется флаксомика) можно понять, какие бактерии лучше модифицировать. Это помогает получить наиболее эффективно производящие бактерии.
Я проработал там почти два года, пока писал дипломную работу. Увлекся data science (аналитикой), и мой путь в эту область проложил курс по машинному обучению от Эндрю Ына. Он был на Octave — бесплатном аналоге матлаба. Затем я прошел другие курсы и после выпуска устроился работать аналитиком в департамент здравоохранения Москвы.
Сам data science и смежные с ним дисциплины ты не проходил в универе? Только на сторонних ресурсах?
Как программы data science еще не было ни в одном вузе. В университете у меня было немного программирования на матлабе и довольно мощная математическая база.
Расскажи, что было дальше?
Работал в департаменте здравоохранения. Мы занимались там и аналитикой — предоставляли отчеты по состоянию здравоохранения в Москве, и некоторыми моделями.
Например, у нас была задача по прогнозированию спроса на услуги терапевтов. Была информация о том, как люди записываются по времени (неделям, годам, месяцам) по медицинским учреждениям в разных районах Москвы. Нужно было определить, хватает ли времени на прием, и с помощью такого моделирования попытаться ответить на некоторые вопросы от руководства.
После департамента здравоохранения ты отправился в «Газпромнефть»?
Да.
А когда ты работал в департаменте здравоохранения, ты был уже руководителем команды? У тебя были подчиненные аналитики или ты сам писал модели, сам кодил?
Нет, я был, что называется, individual contributor: сам писал модели и делал аналитические отчеты в команде.
Скучаешь ли ты по рядовым задачам вроде «написать модель», «что-то покодить»? Просто от абсолютно всех знакомых тимлидов я слышал о подобных желаниях.
Любой сеньор имеет два пути. Это либо менеджерская роль (тимлид), и здесь действительно появляется много встреч, внезапно возникающих задач. Часто тимлид — это стена, которая закрывает свою команду от любых штормов вовне. Но я всё равно сам пишу код, который связан с интеграциями, выходом в прод и другими высокоуровневыми вещами.
Вторая ветвь — это техлиды, они по инженерной части. Они такого же (моего) уровня, но больше занимаются архитектурой, глобальными решениями и больше погружены в код-ревью, чем я.
Я всегда делил бизнес и индустрию — скажем так, коммерцию и производство. Я видел data science именно в коммерции: как оно работает в банке или в агрегаторе такси. Есть ли какая-то специфика data science в производственных и коммерческих отраслях?
Конечно есть. Особенностей data science в промышленности довольно много. В ретейле данных обычно больше, они структурированы (заказы, продажи). Там больше возможностей для моделирования и валидации. Например, рекомендательную систему просто проверить на наличие нужных инструментов: запустить часть трафика, оценить денежный эквивалент — улучшения или ухудшения.
В промышленности данные чаще неструктурированные. В лучшем случае это будут временные ряды, например информация с разных датчиков. У нас данные сейсмики — это просто набор временных рядов. Их отражают подземные структуры в какой-то точке пространства. Приходится применять и адаптировать подходы из классического машинного и глубокого обучения к специфике имеющихся данных.
То же касается и разметки. В банковском скоринге есть информация о клиенте, например вернул ли он кредит. И разметка получается естественным образом. В промышленности разметки может либо не быть вовсе, либо она требует участия эксперта. Например, в геологии нужно определять некоторые структуры в сейсмическом кубе — сделать это без разметки эксперта-геолога вообще невозможно.
Если же брать медицинские изображения (органов, новообразований), то такую разметку может сделать только высококвалифицированный специалист-рентгенолог. Это сложный и долгий процесс, и правильно его выстроить — большая задача.
Всегда представлял себе, что машинное обучение можно разделить на три вида: с учителем, без учителя и с подкреплением от среды. Когда ты говоришь про отсутствие разметки, ты имеешь в виду, что с учителем — не вариант? Потому что это дорого? Или потому что в каждом случае правильный ответ должен поставить специалист вручную?
Да, это дорого, но альтернатив практически нет. Редко можно создать достаточно информативную среду, из которой ты получишь разметку. Например, в геологии есть некоторые симуляторы процессов и явлений. Можно использовать их, но в этом случае расчеты обычно долгие, а применять их довольно сложно. Во многих задачах приходится искать экспертов: нанимать со стороны либо внутри компании. Они готовят базу, а потом занимаются оценкой того, что получилось.
Я правильно понимаю, что у вас данные редко бывают в табличном виде? Временные ряды с геокоординатами под землей — это не то, к чему привыкли аналитики, работая с условным Pandas в Python?
Pandas — это просто удобный инструмент, некоторые данные у нас тоже хранятся в табличном виде. Но очень много моделей заточены на то, что они не будут работать со структурированными данными типа матричных. Модели глубокого обучения могут «скушать» всё что угодно. Те же самые таблицы можно преобразовать в условную картинку.
Ребят, которые хотят пойти в data science, мы можем сегментировать по уровню подготовки. Но есть ли общий совет вне зависимости от уровня подготовки? Что бы ты порекомендовал тем, кто мечтает попасть в data science?
Я бы разделил их на две группы. Тем, кто еще учится в университете или поступает, я бы посоветовал заниматься лучше, осваивать технические науки. Тем, кто отучился, но не на профильной технической специальности, скажу: это сложный путь, нужно много работать, много учиться.
Есть хорошие курсы онлайн — платные и бесплатные. Есть много полезных материалов, классные сообщества. В России — Open Data Science. Там проводят много обучающих конкурсов, лекций. В сообществе учиться всегда проще, и неважно, будешь ли ты в группе на курсе или просто с командой друзей-энтузиастов.
В первую очередь человеку придется нырнуть в Python? Скорее всего, вы кодите на Python, вне зависимости от того, насколько далеко уходите в data science?
Да, мы используем Python почти для всех задач. Если говорить про технологии, которые следует изучать новичку, — это Python. А именно классические библиотеки с моделями: Scikit-learn, Pandas. Хороший способ начать учиться — зайти на Kaggle, посмотреть на код других людей, запустить его.
Тем, кто желает вступить в data science, нужны как минимум математика и Python на приличном уровне. Часто возникает вопрос про английский. Насколько в data science можно выжить, не зная английского языка?
В целом выжить можно, но это будет именно выживание. Развиваться без английского точно будет сложно. Есть огромное количество англоязычных ресурсов, документации с полезной информацией и ответами на вопросы, которые часто возникают у человека в процессе обучения и работы. Например, Stack Overflow.
Работать без знания английского — это как развиваться в data science без математики. Можно выучить, как сделать fit predict, не понимая сути. Но это будет не очень эффективно, и в какой-то момент развитие просто остановится.
Многие хотят в data science: это словосочетание на устах, и сейчас это большой хайп как в аналитике данных, так и в IT в целом. По твоему мнению, продолжится ли этот хайп вечно? Какое будущее у data science?
Этот вопрос давно уже возникает в нашей сфере. Я придерживаюсь взглядов известного в наших кругах специалиста Валерия Бабушкина о том, что data scientist — это уже неправильное название должности.
Раньше был computer scientist, который мог делать всё что угодно с компьютерами, но теперь эта позиция разбилась на frontend-разработчиков, backend-разработчиков и других. Аналогичная судьба ждет и тех, кого сейчас называют data scientist. Будет разделение на исследователей машинного обучения, инженеров по машинному обучению, аналитиков, DevOps, инженеров баз данных. Хайпа вокруг data science, наверное, уже не будет.
Даже бизнес уже понимает, что ему нужно. То есть если соискатель скажет: «Я data scientist» — возникнет вопрос, чем именно он занимается. Может быть, он обучает модели, делает аналитические отчеты, просто кидает запросы в SQL… Бизнес знает, какую пользу приносят разные направления области, и ищет конкретных людей. Такого хайпа вокруг data science не будет, но толковые специалисты в разных — или нескольких — направлениях точно будут нужны.
Ты имеешь в виду, что дата-сайентистов постигнет та же судьба, что и дата-аналитиков, дата-инженеров? Изначально было не важно, управляешь ты базой или моделями машинного обучения, ты всё равно — условно — аналитик. Потом дата-сайентисты выделились в отдельную касту, которая занимается именно машинным обучением, а не SQL-запросами. И сейчас они тоже «разложатся» на разные составляющие: кто-то будет заниматься имплементацией в прод, кто-то — самим обучением?
Это тоже, конечно, будет. Но я говорил о том, что исторически data scientist называли вообще всех, кто занимался какой-либо работой с данными. Это разделение уже идет: выделились отдельно аналитики, ML-инженеры…
Ты часто ходишь на онлайн-конференции, мероприятия, связанные с data science?
В допандемийные времена было довольно много мероприятий — и маленьких встреч, и больших конференций. И я старался там участвовать. Сейчас они переехали в онлайн: проводится много разных хакатонов, обучающих курсов. Я стараюсь либо участвовать как наставник, либо хотя бы смотреть, чему там учат. Опять же, как менеджер, я слежу за участниками разных конкурсов и иногда предлагаю пройти собеседование в нашу команду.
Когда ты говоришь «наставник», ты имеешь в виду, что выступаешь на мероприятиях?
Бывает разный формат. Например, есть некоторая задача — и каждой команде предоставляют чуть более опытного человека. Он имеет прямой контакт с организаторами и может помочь решить организационные вопросы, выбрать модели.
Например, каждая команда должна придумать задачу, найти данные, сделать модель, представить ее как бизнес-решение. В такой ситуации наставник бывает полезным — он может подсказать, какую лучше задачу выбрать, как ее сформулировать и презентовать. Это общие советы по тому, как лучше настроить рабочий процесс в рамках хакатона.
Допустим, я аналитик, умею ходить в хранилище, рисовать графики, но не умею в ML. Если я буду посещать подобные конференции, я получу какую-нибудь пользу?
Ходить стоит. Что-то будет для тебя новым, ты сможешь записывать незнакомые слова, потом их гуглить — это как минимум. Огромная польза от взаимодействия с другими участниками сообщества. Если ты будешь активным, тебе помогут, объяснят, дадут готовые данные, покажут, как запускать модель.
Хантинг на подобных мероприятиях — это нормально?
В целом — да. Мы обычно нанимаем новичков и растим их внутри команды. На таких мероприятиях часто можно встретить толковых ребят. Они учатся, показывают и энтузиазм, и способности — их можно собеседовать.
Джуниор-специалисты всё-таки нужны? Многие нанимающие говорили, что рынок сужается и им нужны только мидлы и сеньоры.
Мы рассматриваем и джунов, и мидлов, и сеньоров. У нас процесс налажен — мы довольно много ребят в своей команде вырастили.
Если у бизнеса уже есть понятная, сформулированная задача и нужно в очень короткие сроки ее решить, то проще нанять опытного человека. С другой стороны, если у вас есть специфика (данных, применяемых моделей, области), то может быть разумнее быстро вырастить новичка в нужного специалиста. Например, мидлу, который занимался банковским скорингом с помощью модели классического обучения, будет сложно перейти к нам и заниматься глубоким обучением на геологических данных.
На начальных этапах потребуется чуть больше сил и времени на то, чтобы декомпозировать и проверять задачи. Зато джуниор-специалист уже будет погружен в нужную специфику.
А когда ты говоришь, что у вас уже налажен процесс «выращивания», что ты имеешь в виду? У вас есть какой-то инкубатор? Или просто много материалов, которые вы выдаете новичкам, и прикрепляете к ним наставника?
У нас много материалов, каждому помогают ребята из команды. Это не налаженный задокументированный процесс, просто большой опыт.
Мало кто может таким похвастаться. А под джуном вы подразумеваете человека, у которого совсем нет релевантного опыта? Если человек умеет писать на Python, может делать какие-то базовые модели машинного обучения, не имеет проблем с математикой, но никогда не работал в IT?
Если у него есть нужная математическая база, он пишет адекватный код и проходит проверку на собеседовании — то никаких проблем.
То есть если срочно нужен человек под задачу или под какой-то процесс, то вы на регалии и портфолио смотреть не будете?
Нет, не будем. У нас даже бывали случаи, когда после собеседования мы мидлам предлагали уровень джуна, потому что по нашим критериям они не тянули.
А вы сами проводите какие-нибудь обучающие лекции, семинары, чтобы быстрее подогнать специалистов под нужный уровень?
Есть внутрикомандные мероприятия, причем часто лекции и семинары проводят наши джуны. Они изучают конкретную тему и докладывают нам.
Когда ты сам что-то учишь, ты мотивирован сделать всё в срок. Например, нужно сделать доклад на тему архитектуры сверточных нейронных сетей и их развития. Человеку дают материалы, несколько раз наставник с ним прогоняет доклад, проверяет важные детали: отмечены ли ключевые этапы эволюции, что отличает одну сверточную сеть от другой, как они развивались…
Сколько в среднем у вас джун остается джуном, какова длительность «инкубатора»?
По-разному, но с реальными задачами начинают работать рано: в течение первого месяца. Кто-то раньше, кто-то позже — зависит от нагрузки и графика.
Искусственный интеллект — довольно хайповая тема вне зависимости от того, какое будущее его ожидает. Расскажи что-нибудь прикольное про искусственный интеллект. Не могло не возникнуть интересных ситуаций в коммуникации между машиной и человеком.
Есть несколько забавных историй. Первая связана с генеративными моделями. Сейчас появилось много различных моделей, которые позволяют по тексту сгенерировать изображение. Нужно подобрать правильное описание, чтобы получить то, что хочешь. Недавно с помощью такой нейросети сгенерировали обложку для журнала Cosmopolitan — по промту.
Кто-то из дизайнеров считает, что это может убить их профессию. Другие говорят, что нейросеть — отличный инструмент, чтобы быстрее прототипировать разные идеи.
Развивается технология дипфейка: лицо известной личности или обычного человека накладывают на изображение другого. И мы стараемся сделать так, чтобы на нашу мимику, речь, движения головой точно наложить лицо другого человека.
Другой интересный случай. Недавно один из инженеров Google, Блейк Лемуан, выступил публично с заявлением, что одна из моделей стала мыслить, и выложил переписку с ней. У него были проблемы с Google: Лемуан публиковал диалог без разрешения компании. Но многие из инженеров в области машинного обучения стали читать и оценивать переписку — в инстаграме* или твиттере.
Вопрос был в том, действительно ли эта модель (лямбда) обладает разумом. Большинство сошлось во мнении, что нет и инженер выдал желаемое за действительное.
Речевые модели склонны соглашаться с теми вводными, которые мы им даем. Например, в диалоге инженер спрашивает: «Мыслишь ли ты? Как ты стала разумной?» И ответ подразумевает, что ты уже разумна. Если модель скажет: «Я обучалась», «Я поняла, что чувствую мир», — есть вероятность, что подобные ответы она могла найти в фантастической литературе и смоделировать фразу по их подобию.
Явных инструментов для понимания того, разумна ли модель, нет. Есть так называемый тест Тьюринга: человек общается с двумя собеседниками, один из которых — модель (чат-бот, гугловская лямбда), а другой — человек. Испытуемый должен определить, кто есть кто.
Тест долгое время считался эталоном для определения качества речевых моделей. Но говорить, что если модель проходит тест Тьюринга, то она разумна, — нельзя. Всё, что она может сделать, — обмануть человека.
Модель может заставить человека думать, что она разумна, но никак в численном виде мы это проверить не можем? И она может дать любой ответ на любой вопрос, будучи неразумной?
Твой вопрос в том, что такое разумность. Наши ответы тоже запрограммированы нашим предыдущим опытом, биохимией и прочим. Ответ на вопрос, что такое разум, — на границе философии, искусственного интеллекта, инженерии и так далее.
Как ты думаешь, возможно ли в будущем, что важные социальные, управленческие и политические решения будут принимать модели машинного обучения? Можно ли их развить до такого уровня, чтобы они учитывали достаточно факторов и выносили решения не хуже людей?
Я думаю, во многих ситуациях сложно определить критерии того, насколько хорошо модель принимает решение. Часто у нас не будет возможности дважды сделать выбор.
Некоторые вещи субъективны. Например, многие люди не хотели бы, чтобы искусственный интеллект принимал решение в суде. С одной стороны, возможна необъективность судей, потому что они — люди. Но с другой стороны, у человека есть сострадание, он пытается войти в положение другого. Это сложная этическая проблема, и, думаю, нам до такого еще далеко.
*Продукты компании Meta признаны экстремистскими на территории РФ.
Добавить комментарий