История возникновения профессии
Появление ML-инженеров обусловлено развитием машинного обучения — направления, первые идеи которого появились в 50-х годах прошлого столетия. Тогда еще не было подходящих условий для развития этой науки: мировой объем создаваемых данных был небольшим по сравнению с сегодняшними показателями, как и вычислительная способность компьютеров. Поэтому профессия зародилась только в 90-годы, когда стали появляться мощные графические процессоры. Начиная с 2000-х ML-инженеры занимались научной деятельностью и решали задачи крупных компаний.
В 2010-х интернет был достаточно развит, рос объем данных (тогда термин Big Data стал использоваться широко), появлялись новые алгоритмы, что породило больший интерес бизнеса и научного сообщества к машинному обучению, тем самым стимулируя его развитие.
Сейчас же люди ежедневно взаимодействуют с плодами работы ML-инженеров — умными колонками или нейросетями, а компании используют, например, системы рекомендаций.
Чем занимается специалист по машинному обучению
Спектр задач, решаемых ML-инженером, зависит от его квалификации, места работы и конкретного проекта, однако в целом его можно описать так:
- постановка целей;
- сбор данных из нескольких источников, очистка (работа с пропусками, дубликатами), преобразование, анализ, разметка;
- разработка модели — выбор алгоритма, обучение, оценка качества работы;
- оптимизация модели, устранение ошибок, тестирование.
В качестве примера результатов деятельности таких специалистов можно привести умные колонки, например SberBoom от Сбера. В основе их работы лежат несколько ML-технологий:
- чтобы колонки могли понимать людей (то есть распознавать речь), используются алгоритмы, преобразующие звуковые сигналы в текст, применяются акустические и речевые модели;
- когда текст распознан, устройству нужно понять его смысл — для этого используется NLP (Natural Language Processing — обработка естественного языка);
- с помощью уже обученной модели формируется ответ в текстовом формате, который затем преобразуется в аудио с использованием модели синтеза речи — эта технология называется TTS (Text-to-Speech, синтез речи);
- качество работы колонок постоянно повышается за счет развития технологий и обучения на новых, более качественных и многочисленных данных.
Сколько зарабатывают ML-инженеры
Как и во многих других сферах, заработок ML-инженера напрямую зависит от его квалификации, опыта, особенностей компании и ее местоположения. Хотя сейчас последняя характеристика имеет меньшее значение, так как распространен удаленный формат работы. По опыту и навыкам IT-специалистов можно разделить на четыре группы.
- Junior. Имеет опыт около 1 года, есть навыки работы с библиотеками для обработки данных. Он способен собрать и подготовить данные, построить относительно простую модель. Выполнение задач контролируется более опытными членами команды. В крупных городах доход джунов начинается от 80 тысяч и достигает 150 тысяч.
- Middle. Имеет опыт от 2 до 5 лет, умеет работать с продвинутыми инструментами, способен самостоятельно построить модель машинного обучения и оценить ее с помощью метрик, понимает запросы бизнеса. Заработок таких специалистов — 200–350 тысяч рублей.
- Senior. Обычно такие специалисты имеют опыт более 5 лет, но иногда достигают этого уровня раньше. Senior самостоятельно решает широкий спектр задач, владеет Python, SQL, фреймворками TensorFlow, PyTorch, scikit-learn, берет на себя ответственность за координацию команды и может спланировать полный цикл разработки модели. Доход от 300 до 500 тысяч рублей.
- Team Lead. Здесь важны не только опыт, технические знания, но и софт-скилы, ведь тимлид отвечает за управление командой, поддержку и мотивацию ее участников, своевременное выполнение проектов. Доход ML-инженеров такого уровня может превышать 500 тысяч рублей.
Что можно сказать о перспективах профессии? Машинное обучение продолжит развиваться по многим причинам: из-за роста объема данных в мире, использования искусственного интеллекта в бизнесе, внедрения машинного обучения в повседневную жизнь. Поэтому в ближайшее время потребность в ML-инженерах не будет уменьшаться, а зарплаты будут скорее расти.
Какие навыки потребуются
В первую очередь ML-инженеры должны обладать набором технических навыков (в разных компаниях требования могут различаться).
- Программирование. Сейчас основной язык в сфере машинного обучения — Python, так как он содержит максимальное количество подходящих инструментов и библиотек. Поэтому сначала лучше выучить его, но также пригодятся знания SQL, C++, Java.
- Математические знания. В особенности — линейная алгебра, теория вероятностей (на продвинутом уровне), математический анализ, методы оптимизации. Нужно знать, как применять указанные области в машинном обучении.
- Навыки работы с данными. Сбор, обработка, преобразование, анализ.
- Знание библиотек и фреймворков. К ним относятся инструменты для анализа данных, например: Python-библиотеки NumPy, Pandas, Matplotlib. Библиотеки для машинного обучения: TensorFlow, PyTorch, Keras, scikit-learn. Инструменты для автоматизации развертывания и управления: FastAPI, Flask, Docker. Облачные платформы: AWS, Microsoft Azure, Cloud.ru и Yandex Cloud.
- Алгоритмы машинного обучения. Виды регрессий, глубокое обучение: архитектуры нейросетей, методы (обучение с учителем и без), NLP.
- Знание английского языка. Это нужно для изучения документаций, научных статей: их не всегда корректно переводят.
Кроме этих навыков, понадобятся софт-скилы:
- умение работать в команде. Это одно из самых важных требований ко всем специалистам в сфере IT, так как проекты обычно выполняются совместно с другими сотрудниками: разработчиками, менеджерами, аналитиками и так далее. Важно уметь слушать коллег и аргументированно объяснять свою позицию, находить компромиссы. Если команда взаимодействует эффективно, то все ее участники получают бесценный опыт, который будет полезен при выполнении последующих проектов;
- терпение, способность находить, признавать ошибки и работать над ними. Сложности в работе возникают часто: это могут быть плохо подготовленные данные, трудности при выборе правильного алгоритма, низкая точность итоговой модели, задачи, в решении которых у специалиста еще нет опыта. Чтобы справиться с подобными проблемами, нужно относиться к ним как к части профессии: не бояться их, а спокойно искать решение;
- соблюдение сроков, навыки планирования. Стоит быть готовым к параллельной работе в рамках одного или нескольких проектов, а также к строгим дедлайнам. При этом лучше всегда заранее выделять время на отдых, хобби, развитие: изучение новых инструментов, подходов, посещение конференций.
Как стать ML-инженером
В первую очередь стоит выписать необходимые знания и навыки, а затем отметить, какие из них уже освоены, какие нужно подтянуть, а какими овладеть с нуля. Далее нужно подумать о подходящем формате (скорее нескольких форматах) обучения:
- университет — лучший способ получить фундаментальные знания по многим областям IT-сферы, однако чтобы углубиться в профессию, придется изучать много материала самостоятельно;
- курсы — способ получить специальность быстро, изучая только нужные темы, но есть вероятность приобретения некачественного или бесполезного курса. При выборе стоит опираться на отзывы на независимых площадках, программу обучения;
- самостоятельное обучение — бесплатный способ, который особенно хорош в начале: человек может понять, интересна ли ему специальность, готов ли он заниматься этим каждый день. Требует самодисциплины и разработки программы обучения — для этого лучше воспользоваться дорожной картой, например этой.
- занятия с ментором — обучение со специалистом, имеющим практический опыт, индивидуальный подход к ученикам. Однако это довольно затратный способ обучения, а также нередко возникают трудности с поиском ментора.
Далее рассмотрим примерный алгоритм получения профессии, который должен соблюдаться вне зависимости от выбранного формата:
- Изучение Python — переменные, операторы, условные конструкции, типы и структуры данных, циклы, функции, рекурсия, обработка файлов и исключений, ООП. Знание Python — это основа, на которой будет строиться дальнейшее обучение, поэтому лучше сразу углубиться в тонкости работы с этим языком.
- Освоение библиотек — NumPy: создание, модификация, операции над массивами, операции с матрицами, работа с файлами. Pandas: Series и DataFrame, способы создания этих объектов, операции чтения и записи CSV-файлов, функция groupby(). Matplotlib для визуализации данных: построение различных видов диаграмм, форматирование строк, настройка легенды.
- Алгебра, матанализ и статистика — матрицы, векторы, распределение вероятностей, производные, интегралы, меры дисперсии и центральной тенденции.
- Алгоритмы машинного обучения — линейные, логистические, лассо- и ридж-регрессии, деревья решений; методы случайного леса, опорных векторов, градиентного спуска и его модификации.
- Глубокое обучение — понятие и архитектуры (CNN, RNN, GAN и другие) нейронных сетей, функции активации, метод обратного распространения ошибки, фреймворки TensorFlow или PyTorch.
- MLOps — фреймворк Flask для развертывания моделей, работа с ML Space от Cloud.ru — платформой для обучения и развертывания моделей, AWS и его приложениями, например, AWS Rekognition и Amazon Textract.
- Git — создание репозиториев, коммиты, знакомство с рабочей директорией, ветки и интеграция с сервисами для хостинга IT-проектов (например, GitVerse), совместная разработка. Для изучения основ Git есть множество бесплатных курсов.
После изучения этих направлений можно переходить к поиску стажировки или даже первой работы. Стажировка предполагает, что специалист только начинает работать, поэтому стажеры получают опыт от более опытных коллег, выполняют относительно простые задачи (для некоторых это минус) и могут получить офер. Также стажировка — это возможность попробовать себя в крупной компании, где было бы трудно сразу получить место в штате. При этом обычно стажировки не оплачиваются или оплачиваются низко, а также длятся недолго — до 3 месяцев. Работа же, наоборот, предполагает наличие достаточно высокой зарплаты, больший спектр задач и полноценную ответственность за выполнение проектов. К минусам можно отнести трудности в поиске работы без опыта (особенно в крупных компаниях) и сокращение времени на обучение.
Важно помнить, что и после трудоустройства ML-инженеру нужно постоянно повышать свою квалификацию: изучать новые инструменты, научные труды, участвовать в конференциях, работать над open source проектами, взаимодействовать с сообществом коллег.