8 вопросов специалисту про карьеру в ML: все про стек, собесы, рост в профессии и как туда свитчнуться
Запускаем в Adviser «Карьерную Википедию», где будем собирать гайды от состоявшихся специалистов. Первый выпуск, конечно же, про Machine Learning — самую главную сферу IT в 2024 году.
Сегодня наш собеседник — Анна, Lead Machine Learning Engineer. Выбрали для разговора с ней 8 самых важных вопросов о карьере в ML: как сделать карьерный свитч в желанную сферу, что для этого нужно прокачать, как проходить собесы, что читать, учить, смотреть и как дальше развиваться в профессии.
Примечание Adviser
В статье есть ссылки партнеров. Это значит, что если вы что-то покупаете с нашей помощью — вы также поддерживаете dev.by. (Вот другой способ).
При этом редакция и авторы независимы в выборе темы, концепции материала, фокуса описания, подхода к услугам или товарам. Прежде чем что-то советовать, мы много читаем и смотрим по теме, говорим с экспертами.
Редакция может выражать свое мнение и пробовать всё на себе.
Если рекомендательный материал обновляется, мы указываем, что и когда поменялось, в самом начале.
— Расскажи про то, как ты пришла в IT
Еще со школы моим любимым предметом была математика. И хотя были разные мысли по поводу будущей карьеры, было решено пойти учиться на математика-программиста. Математика, потому что нравилась, и получалась, а программирование, потому что уже тогда было понятно, что в Беларуси (и не только) с этой профессией все неплохо.
Я училась на ФПМИ БГУ, в середине обучения нужно было выбрать дополнительную специализацию. Я выбрала кафедру математического моделирования и анализа данных просто из-за программы по телевизору, где показывали ученых из Швеции, которые внедряли на улицах городов умные системы светофоров и таким образом оптимизировали дорожное движение. В программе прямо звучало, что все это делается при помощи методов математического моделирования, я очень впечатлилась и решила, что мне непременно нужно так же.
Впоследствии оказалось, что именно эта кафедра в программу обучения включает те предметы, которые являются базой для современного ML — математическая статистика, статистический анализ данных, временные ряды.
Начало моей карьеры — это автоматическое тестирование. Я устроилась программистом на позицию Junior сразу после окончания второго курса и проработала примерно год на полставки. Писала тесты на C и запускала их на устройствах под Linux. За этот год поняла, что в офис всегда успею, а вот в науку может и нет, уволилась и несколько лет работала в университетской лаборатории по изучению временных рядов.
Всерьез думала начать заниматься исследованиями в этой области, даже пошла в магистратуру с прицелом на аспирантуру. Но уже ближе к окончанию магистратуры поняла, что мне очень хочется видеть, как можно решить при помощи математических методов настоящие, а не теоретические задачи. Так я поняла, что мне нужен бизнес — и стала искать работу.
С учетом моей специализации, смотрела что-то вроде Data Analyst. Не уверена, что тогда — в 2015–2016 году — профессия Data Scientist, а тем более Machine Learning Engineer уже существовала. Точно также, не уверена, что в те годы много кто работал с нейронными сетями в принципе. Мне кажется, это был просто один из алгоритмов, который, к тому же, было и сложнее тренировать, чем статистические вещи.
Начала свою карьеру как Junior (позже Middle) Data Analyst, через несколько лет в той же компании просто поменяла титул на Data Scientist — сначала Midde, потом Senior. Сейчас работаю как Lead Machine Learning Engineer, хотя сама думаю, что все эти красивые названия описывают происходящее во время каждодневной работы только отчасти. Был период, когда меня называли R&D Specialist. В принципе, я готова называться любым образом, лишь бы проекты были интересные.
— Из какой сферы ты пришла в ML? Что это был за путь, что пришлось подтянуть или доучить?
Формально я не меняла сферу и, напротив, мой путь движения был очень логичным. Начала со статистики, каких-то статистических алгоритмов машинного обучения, типа линейной регрессии или кластеризации. Потом довольно органично в мою жизнь вошли нейронные сети, глубокое обучение — а с ними Big Data, GPU, MLOps. Сейчас, наверное, неизбежно, погружаюсь в NLP. С определенного момента становится уже не так важно, какую именно специализацию выбираешь, потому что основы вообще-то общие.
Но учиться приходится на ежедневной основе. Был период в карьере, когда я формально не училась — не проходила какие-то курсы несколько лет, — но все равно требовалось постоянно читать статьи. В Machine Learning уже есть база, которую нужно обязательно знать всем: например, выучить статистику и Calculus, пройти базовые специализации по выбору от Deep Learning AI.
Чем глубже погружаешься в какую-то область, тем ближе к краю исследований подбираешься. И в итоге приходишь к тому, что многие ответы на твои вопросы содержатся только в статьях, или, что еще веселее — в чатиках и на форумах.
Я никогда не училась Computer Vision & Deep Learning систематически, потому что стала работать в сфере в 2018 году — сразу же с очень практической задачи. И так и прыгала по разным задачам и моделям. Когда в 2023 году меняла работу и решила поднять свои навыки, оказалось, что одной из лучших инвестиций в знания было просто пойти еще раз на курс по Computer Vision.
Прослушала лекции обо всех алгоритмах, которые уже знаю и применяю, по порядку — и в голове все выстроилось в гораздо более полную и четкую картинку. Так я решила, что даже имея большой опыт в чем-то, не нужно стесняться учиться снова и снова. В процессе открываются новые перспективы уже известного знания. Ну, а еще важнее — все это применять на практике.
— Какие навыки или знания, полученные в других областях IT, пригодились тебе в ML?
Хороший вопрос, ведь я почти не работала в других областях! Если говорить о знаниях, полученных за время работы в автоматическом тестировании, то супер-важным является знание и работа с bash и командной строкой.
Также Linux как операционная система. Сейчас куча графических пакетов для ML и многие вещи пишутся в Jupyter Notebooks или скриптах. Но очень важно мочь настраивать сервера, общаться с DevOps или знать низкоуровневые команды, которые помогут решить легко формулируемую задачу быстрее, чем если под это придется писать скрипты на высокоуровневых языках.
Из университетской лаборатории я принесла осознание того, что вообще-то модели могут и не работать. В науке обычно все идет не так, как хочется, а потом после 10 неудачных попыток случается одна, которая продвигает исследования вперед. В ML ситуация похожая: чем более развитая технология — тем проще. Например, современные модели уже можно тренировать без опасения, что они «не сойдутся» благодаря многим приемам, заложенным во все современные архитектуры и фреймворки по умолчанию. Хотя на заре нейронных сетей большим успехом было то, что модель в принципе начала сходиться.
При переходе из Data Analysis в Data Science с собой берется вообще весь багаж знаний. Меняются масштабы, размеры моделей и количество данных, необходимых для их обучения. Но все базовые вещи: про репрезентативность выборки, выбор параметров обучения, необходимость измерения и сравнения результатов — все это нужно.
— Какие навыки важно прокачивать сегодня тем, кто хочет прийти в ML с опытом работы в других областях ИТ? Без чего точно не обойтись?
Желающим сменить сферу, как мне кажется, важно понимать математику. В теории, без математики можно быть программистом в некоторых из областей. Но в ML требуется понимать все те основы, которые, например, дают в вузе: это Calculus, Linear Algebra + матричные вычисления, Probability & Statistics. К счастью, нет необходимости идти в университет снова, чтобы это выучить — сейчас есть много качественных и чаще всего бесплатных курсов и YouTube.
Я бы сказала, что необходимо потратить на это время, но не стоит засиживаться и год учить математику, достаточно посвятить 2-3 месяца. После заложенной базы стоит хотя бы первоначально сосредоточиться на одной из областей ML и развиваться уже непосредственно в ней. Позже можно будет переключиться.
Сейчас принципиально выбор, наверное, стоит между Compute Vision, Natural Language Processing, Audio & Speech. Само собой, все еще важными остаются анализ Tabular Data. И наверняка есть много других областей, с которыми я не работала, и поэтому их тут не упомянула.
В общем, погружение в область — это снова прохождение какого-то базового большого курса с основами. И потом я бы рекомендовала уже искать стажировку/internship, умело управляя вашими сильными сторонами из предыдущего опыта и новоприобретенными знаниями.
В сфере ML очень большое значение имеют разные конкурсы, соревнования и хакатоны. И я думаю, что это тоже может быть отличным вкатыванием в сферу.
— Какие инструменты и библиотеки для машинного обучения ты используешь в своей работе чаще всего?
В базе, конечно, Python и bash. Так как я все же чаще работаю с Computer Vision, то PyTorch (еще Tensorflow, но в последнее время очень редко с ним сталкиваюсь) — тут есть torchvision и torchaudio, для задач CV и Audio Processing. Для задач NLP это HuggingFace с их библиотекой transformers и огромным количеством моделей и датасетов.
База, конечно, это NumPy, Pandas и OpenCV. А еще некоторые модели — теперь уже отдельные самодостаточные инструменты. Например, такие как Whisper или Stable Diffusion.
Подавляющее большинство пакетов, с которыми я работаю — это собранные с GitHub удачные реализации нужных мне технологий. Вообще, умение работать с open sources — еще один необходимый навык. В открытом доступе очень много крутых проектов, и у меня есть ощущение, что все нынешние AI-based бизнесы просто нашли классное применение тому, что другие люди создали и открыли для использования.
— Как готовиться к собеседованиям? На что сделать упор, чтобы успешно пройти интервью?
Самая главная вещь в собеседованиях по Data Science — не притворяться тем, кем не являешься. Нет людей, которые могут знать все технологии. И нет ничего стыдного в том, чтобы в этом признаваться. Зато за те технологии, которые знаешь, придется «пояснить». Можно написать в своем CV все то, что косвенно встречалось в проекте, который случайно скачал с GitHub и просто запустил, но если не вникал в суть — это не даст большой ценности. За каждым успешным решением стоит понимание: а что же тут происходило.
Во все большие компании собеседование обязательно будет включать часть, где придется писать на Python, поэтому культура кода и немного практики в быстром решении небольших задачек — хорошая идея. Я сейчас говорю не только про LeetCode, я сама, например, люблю дать на собеседовании готовые куски кода, которые нужно незначительно модифицировать. По тому, пишет ли человек отдельную функцию для подсчета среднего значения, или помнит, что можно вызвать np.mean (), сразу можно увидеть многое.
Поэтому мое подобие рецепта успеха (а я не могу сказать, что прошла 100% собеседований, на которые попадала, тем не менее, проходила успешно собеседования несколько раз за последний год) выглядит так:
- быть готовым высокоуровнево рассказать о своих прошлых успехах (в том числе учебных или больше связанных с доведением продукта до прода, чем с тренировкой модели),
- быть готовым написать код, похожий на тот, что вы писали в рабочих или учебных проектах,
- не забывать повторять все те математические основы, про которые я уже упоминала, потому что на их обсуждении обычно и строится среднее собеседование.
И да, не стесняйтесь читать форумы, типа GlassDoor, где пишут о том, каков процесс в конкретных компаниях. И не забывайте искать Engineering-блоги ML-отделов вашего места мечты — в них могут упоминаться технологии, которые вы сможете выучить конкретно под собеседование.
— Как ты видишь будущее профессии специалиста по машинному обучению? Какие навыки и знания будут востребованы через 5 лет?
О, сейчас ответ на этот вопрос не даст никто! Думаю, все, кто давал прогнозы летом-осенью 2022 года (до выхода ChatGPT) — все свои прогнозы уже признали недостоверными и пересмотрели. Я тоже не возьмусь загадывать сильно наперед. Возможно, через 5 лет за всех нас код уже будут писать LLM, а мы все станем одной большой службой поддержки.
Можно сказать наверняка, что люди, умеющие интерпретировать происходящее внутри черных ящиков моделей, все еще будут востребованы. Не уверена, станет ли специализация внутри ML более критичной вещью, или наоборот, специалисты станут мультимодальными и должны будут уметь и решать задачи со зрением, и с текстами и с аудио. В любом случае, для нас как для людей, важен принцип start small, but continue consistently — выбрать цель и двигаться к ней постепенно.
Думаю, что soft skills в итоге перевесят hard skills в такой сфере, как Machine Learning или Artificial Intelligence. Но я открыта к обсуждению этого вопроса с заинтересованными.
— Твои рекомендации тем, кто хочет глубже погрузиться в тему ML: что смотреть, слушать, читать?
Сейчас много качественной информации на тему ML. Определенно, стоит уделить внимание классикам — Andrew Ng и Andrej Karpathy, оба активно занимаются просветительской деятельностью в сфере и не собираются останавливаться.
Для тех, кто любит email-рассылки, есть AI Edge, The Batch от DeepLearning.ai, The Algorithm от MIT Technology Review, The Gradient. Хотя мне бывает тяжело их читать.
А вот лента в LinkedIn для меня работает. После определенного периода настройки и подписки на инфлюэнсеров (Julien Chaumond, CNO HuggingFace, Ron Kohavi (рассказывает про A/B тесты), Navdeep Singh, автор NeetCode). Вероятно, у меня хороший нетворк там, но лента обычно радует меня интересными статьями и выходящими новыми технологиями.
Второй важный источник информации для меня: Телеграмм-каналы. Существует довольно большое количество авторских и сборных каналов по AI/ML и нишевым технологиям. То ли они пишут интереснее, то ли просто понятнее, потому что большинство из них на русском, но читать мне гораздо проще, чем рассылки.
Книг я читаю ограниченное количество, курсы прохожу тогда, когда они неоднократно попадает ко мне в закладки, а Youtube обычно сразу добавляю в «Смотреть позже» и потом просто выбираю случайно, а дальше лента настраивается под меня.
Читать на dev.by