Кто такие ML/AI инженеры и чем они вообще занимаются 🧑💻🤖
Из моих наблюдений за 7 лет, всех людей, работающих над ML, в зависимости от их фокуса, можно условно разместить внутри треугольника с вершинами: Research, Software Engineering, Data.
➜ Люди, которые находятся ближе к вершине ML Research, в основном работают над улучшениями моделей. Day-to-day они твикают код модели и тренировочного цикла и ранают эксперименты, чтоб GPU всегда делали brrrrr 🔥. Анализируют полученные данные, решают, какие метрики трекать, думают над гипотезами для новых экспериментов — и всё по кругу.
Кор-квалификации:
🔹 Возможно, немного неожиданно — Scientific Method. Это умение правильно сформулировать гипотезу, задизайнить эксперимент, проанализировать наблюдения и результаты. Это базовые вещи. У меня на самом деле довольно много времени заняло, чтобы понять и заартикулировать для себя, что так выделяет топ-людей, сфокусированных на ресерче. Мой ассампшн — что это именно осознанное применение scientific method.
🔹 Матчасть: линейная алгебра, математический анализ, статистика, оптимизационная теория. Не нужно быть экспертом в каждой дисциплине, но если вы интуитивно понимаете базовые концепты — это очень помогает.
🔹 Техстек: Python, любой autograd/NN фреймворк, Pandas/SQL для анализа табличных данных.
➜ Ближе к Software вершине мы можем встретить людей, которые работают над написанием фреймворков для массивных распред. вычислений, оптимизацией и скейлингом тренировочных циклов, инференсом с низким лейтенси и инфраструктурой. Если обобщить, тут люди большую часть своего времени проводят над крафтом «тулзов», чтоб другие могли гонять как можно больше экспериментов за меньшие 💸, или работают над интеграцией моделей с другими системами компании.
Кор-квалификации:
🔹 Сильный бэкграунд в Software, предпочтительней Backend/Systems. Есть также очень нишевые позиции с не менее нишевыми скиллами — низкоуровневое программирование акселераторов (GPU/TPU).
🔹 Техстек: as wide as it gets. На самом деле даже перечислять, наверное, не имеет большого смысла, но базовые вещи: Python, Docker/Kubernetes, SQL/NoSQL. Иногда C++ и CUDA, иногда Java или Go, если вдруг нужно будет писать немного бэкенда.
➜ Data. Люди, которые находятся ближе к этой вершине, работают над пайплайнами, которые агрегируют, чистят и процессит MASSIVE data. Также тут занимаются оркестрацией и релайабилити этих пайплайнов, чтоб данные всегда были свежими, как булочки в немецкой бэккерай.
🔹 Тут я заметил еще больше людей с бэкграундом в Backend, которые решили сфокусироваться на Data-стороне. Но есть и люди, которые изначально фокусировались на distributed data processing. В некоторых компаниях, например в Spotify, это даже вынесено в отдельную роль.
🔹 Техстек: Python, Java, SQL, какой-нибудь mapReduce фреймворк, например Spark или Apache Beam. Для оркестрации — что-то вроде Flyte или Airflow.
Вот как-то так. Очень упрощенный треугольник ML-инжиниринга. Но главное: мало кто находится очень близко к одной вершине и остается там надолго. Большинство людей, которых я встречал, — мультидисциплинарные (находятся ближе к сторонам треугольника или даже к центру) и путешествуют по нему в зависимости от того, где нужно принести импакт в текущий момент.
#карьера@softmaxFn