Как стать Machine Learning Engineer

Для начала давайте определимся в чем разница между Machine Learning Engineer и Data Scientist. Если Data Scientist может больше работать над моделированием и сосредотачиваются на тонкостях алгоритмов, то Machine Learning Engineer более часто работает над развертыванием той же модели в производственной среде, которая будет взаимодействовать с пользователями или на автоматизации процесса обучения, мониторинга, сбора признаков. Очень часто в компаниях эти две обязанности выполняет один специалист.

В этой статье мы рассмотрим какие навыки нужны Machine Learning Engineer.

Востребованность

Machine Learning Engineer в 2022 году входит в топ 10 высокооплачиваемых профессий. Зарплаты в США от $115 тысяч до $171 тысячи в среднем в год. Самими же востребованными специалистами стали Machine Learning инженере в области Natural Language Processing. Их зарплата в среднем составляет 160 227 долларов США. Источник

В исследованиях дата-профессий по рынку Казахстана и России к сожалению не разделяют специалистов Machine Learning Engineer и Data Scientist по уровням зарплат. Поэтому будем ориентироваться на Data Scientist.

В Казахстане средняя зарплата составляет 682 тысячи тенге в месяц. Более подробно можно почитать в исследовании.

В России спрос на Data Scientist вырос на 93%, что же касается зарплат то рост составил 11%. Вилки зарплат для Data Scientist: для джунов 20 — 200, для мидлов 60 — 300, для синьоров и лидов от 100 — 700 тысяч рублей. Подробнее тут.

Распределение зарплат по грейдам
Распределение зарплат по грейдам

Чем занимается Machine Learning Engineer

Machine Learning Engineer гораздо чаще занимается выкаткой модели в продакшен. Именно в этом навыке больше всего различаются инженеры по машинному обучению и специалисты по обработке и анализу данных.

Можно считать, что позиция Machine Learning Engineer, это на самом деле инженер по эксплуатации моделей машинного обучения. Но это заблуждение, инженер по машинному обучению может сосредоточиться не только на операционной деятельности и эксплуатации моделей, но и на работе и оптимизации алгоритмов машинного обучения.

В то время как некоторые компании предпочитают всестороннего Data Scientist, который способен как работать с алгоритмами машинного обучения так и внедрять эти решения в продакшен. Но всё таки многие компании предпочтут разделить эти две роли. Одному человеку может быть сложно сделать все от начала до конца, поэтому наличие двух специалистов, один из которых занимается построением модели, а другой — ее развертыванием, часто является более эффективным подходом.

Что должен уметь Machine Learning Engineer

Machine Learning Engineer это инженерная специализация, которая сочетает в себя computer science и data science области. Это требует от него знаний основ computer science, алгоритмов, структур данных. Уметь писать продуктовый и поддерживаемый код покрытый тестами. При этом следует учесть, что иногда для Machine Learning Engineer важно знание отдельных областей data science для построения эффективных систем. Например: Computer Vision или Natural Language Processing. Существует также множество инструментов, которые необходимы для работы. Такие как Docker, Flask, MLFlow, Airflow, FastAPI и это лишь некоторые из них.

Отдельно выделю облачные платформы: AWS, Google Cloud, Azure. Облачные сервисы сейчас крайне популярны и всё больше компаний, проектов и стартапов работают в облаках.

Алгоритмы и структуры данных

Алгоритмы и структуры данных играют критически важную роль в разработке и оптимизации систем машинного обучения. Они используются для обработки и анализа больших объемов данных, проектирование ML систем и разработку сложный API.

Некоторые из основных причин, по которым алгоритмы и структуры данных являются важными для машинного обучения, включают в себя:

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

Рекомендую курсы:

Программирование на Python и C++

Python и C ++ являются языками программирования, которые наиболее часто используются в работе Machine Learning инженером. Что подтверждают оба исследования:

Навыки Machine Learning инженера
Навыки Machine Learning инженера
Топ 25 навыков Machine Learning инженера
Топ 25 навыков Machine Learning инженера

Python и библиотеки машинного обучения, такие как scikit-learn, Pytorch и другие, позволяют разработчикам быстро создавать и обучать модели машинного обучения. C++ же можно использовать для написания более оптимизированного кода и ускорения работы моделей машинного обучения.

C++ более сложный языком программирования, чем Python, но он обеспечивает значительно более высокую производительность. Это делает его хорошим выбором для решений, где производительность играет важную роль.

Остановимся чуть более подробно на преимуществах C++:

Быстродействие: C++ является компилируемым языком, что повышает производительность по сравнению с интерпретируемыми языками, такими как Python.

Многопоточность: C++ обладает широким набором библиотек, которые могут использоваться для создания параллельных приложений и выполнения вычислений в нескольких потоках.

Низкоуровневое программирование: C++ позволяет иметь более тонкий контроль над аппаратными ресурсами компьютера, чем высокоуровневые языки, такие как Python. Это позволяет лучше оптимизировать код для работы с памятью и другими аппаратными ресурсами.

Надежность: C++ — это язык со строгой типизацией и статической проверкой типов. Это означает, что он может помочь предотвратить многие типичные ошибки программирования, такие как неправильное использование указателей и выход за пределы массивов.

Интеграция: C++ может использоваться для написания библиотек, которые могут быть использованы из других языков программирования, в том числе из Python. Это позволяет использовать преимущества C++ в производительности и многопоточности в системах машинного обучения, написанных на других языках программирования.

Рекомендую курсы:

Инструменты

Кроме необходимых базовых навыков работы, так же требуется опыт работы с инструментами data и software инжиринга. Например: Git, Docker, Flask, MLFlow, Airflow, FastAPI.

Остановимся на одних самых популярных инструментах:

Docker: Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Он может быть использован для создания изолированных сред для запуска моделей машинного обучения, что облегчает их развертывание и масштабирование.

Git и GitHub: Git — это система управления версиями, которая позволяет отслеживать изменения в коде. GitHub — это хостинг-сервис для Git-репозиториев. Они оба широко используются для разработки и совместной работы над проектами машинного обучения.

FastAPI — это современный веб-фреймворк для Python, предназначенный для создания быстрых и эффективных API. Он использует современные технологии Python, такие как типизация данных и асинхронность, для создания высокопроизводительных веб-сервисов.

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

Рекомендую курсы:

Облачные платформы

Облачные сервисы сейчас крайне популярны и всё больше компаний, проектов и стартапов работают в облаках. Среди навыков для Machine Learning это чаше является плюсом для роста заработной платы:

Облачные платформы
Облачные платформы

Облачные сервисы очень полезны для machine learning инженеров, так как они предоставляют готовую инфраструктуру и инструменты для обучения моделей и развертывания приложений машинного обучения.

Некоторые из наиболее популярных cloud-сервисов для машинного обучения включают в себя: Amazon Web Services (AWS): AWS предоставляет множество услуг и инструментов, которые могут быть полезны для машинного обучения, включая Amazon SageMaker, который предоставляет средства для обучения, оптимизации и развертывания моделей машинного обучения. Кроме того, в AWS есть множество других сервисов, таких как хранилище данных, вычислительные ресурсы, базы данных и т.д.

Microsoft Azure: основной продукт для ML Azure Machine Learning, который помогает в обучении моделей и создания приложений машинного обучения. У Azure также есть базы данных, хранилище данных и другие сервисы.

Google Cloud Platform (GCP): Google Cloud AI Platform, инструмент для обучения, оптимизации и развертывания моделей машинного обучения. Все эти и другие облачные сервисы позволяет работать с большими объемами данных и проводить эксперименты с различными моделями. Они также обеспечивают высокую отказоустойчивость, масштабируемость и безопасность, что является важным при работе с конфиденциальными данными.

System и ML design

Необходимо понимать, как подходить к определению бизнес-требований. Например: нагрузка, задержка, хранилище. А так же уметь прорабатывать архитектуру проектов с точки зрения базы данных, системы реального времени, балансировщика нагрузки, микросервиса, kafka и т. д.

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

По каждой категории изучите алгоритмическую структуру, как создавать прогнозы в режиме реального времени, как отображать инженеров в режиме реального времени, как обучать модели с помощью оркестровки, такой как Airflow.

Рекомендую курсы:

Вывод

Для роли Machine Learning Engineer требуется знания не только языков программирования, но и инструментов и библиотек data и software инжиринга, например, Git, Docker, Flask, MLFlow, Airflow, FastAPI. Также необходим опыт работы с облачными сервисами, особенно Amazon Web Services, Microsoft Azure и Google Cloud Platform. Важно уметь прорабатывать архитектуру проектов с точки зрения базы данных, системы реального времени, балансировщика нагрузки, микросервисов, Kafka и т.д.

Share it

Если вам понравилась заметка - подписывайтесь на мой канал в телеграме https://t.me/renat_alimbekov или вы можете поддержать меня Become a Patron!


Интересные записи в этой рубрике: