Чем предстоит заниматься ML-инженеру
Должностные обязанности специалиста по машинному обучению будут различаться в зависимости от проекта и сферы деятельности компании, но можно выделить несколько типовых задач.
Сбор и предварительная подготовка данных. Например, чтобы научить ИИ различать изображения с венгерской овчаркой и шваброй, потребуются тысячи иллюстраций с нескольких ракурсов, различными условиями освещенности. К тому же их нужно будет «подписать»: на каких — собака, а на каких — предмет для уборки. Такой процесс классификации называют разметкой. Далее происходит очистка набора фото от лишних сведений и «пустых» картинок.
Работа с данными. Следующий этап — разделение массива изображений на три группы: тренировочный датасет, валидационный и тестовый. Первый будет использован в процессе стартового обучения нейросети, второй — при настройках ее параметров, третий — для итоговой оценки работы.
Выбор подходящей модели. Для определенных целей лучше себя зарекомендовало так называемое обучение с учителем, для других — без.
Построение модели. Этот шаг направлен на обучение нейросети находить закономерности (паттерны) в первой группе данных — тренировочной. В результате получится, например, «умный» навигатор, который способен в любой момент времени «увидеть», как автомобили объезжают какой-то участок трассы, и перенаправить пользователя приложения на другую дорогу — вдруг там пробка, авария или новый «кирпич». Причем чем качественнее обучение ИИ, тем меньше он допускает ошибок. Главное, не перестараться, иначе модель просто «запомнит» правильные ответы.
Оценка результатов и совершенствование нейросети. Работу модели проверяют на второй и третьей группе датасетов. При необходимости процесс корректируется.
Внедрение в бизнес-процессы и мониторинг. После того, как ИИ интегрируется в сервисы заказчика, ML-инженер следит, чтобы он не прерывал работу, и регулярно заново обучает модель.
Алгоритм выбирается под поставленную задачу и может быть запрограммирован буквально в 30 строк кода, но иногда требуется разработка гигантских нейросетей. Эту модель научили определять, что изображено на фотографии, — ее задача достаточно проста:
А здесь задание в разы сложнее — для ИИ подобрали сотни рентгеновских снимков, чтобы он научился находить раковые опухоли:
Но суть работы ML-инженера сводится к тому, чтобы написать программу, которая обрабатывала бы большое количество данных, искала в них закономерности и помогала решать бизнес-задачи.
Например, вот чем предлагают заниматься специалисту по машинному обучению с опытом 1–3 года в ООО «Темполайн Логистика» (сфера e-commerce, зарплата — до 200 000 ₽):
А это перечень обязанностей Lead ML-инженера с более чем 6-летним опытом, который сможет устроиться в компанию TPT (сфера разработки ПО, зарплата — до 800 000 ₽):
Зарплаты и перспективы
Ситуация на рынке труда играет на руку ML-инженерам. Из-за бума интереса к искусственному интеллекту спрос на специалистов стабильно растет. Экспертов с многолетним опытом в машинном обучении попросту нет, даже профильные программы начали появляться в вузах совсем недавно. Это открывает большие возможности для junior-разработчиков и обещает рост зарплат в отрасли. Кроме того, после приобретения минимального опыта вполне можно претендовать на позиции в международных организациях и престижных российских компаниях вроде Циан, Сбера, Тинькофф и Яндекса. А еще можно быстро продвигаться по грейдам и стать middle-разработчиком буквально за 1–2 года.
Примечательно то, что вакансии по такому инновационному направлению открываются не только в городах федерального значения, но и в регионах. Даже технологические предприятия, основные продукты которых никак не связаны с ИИ, охотно нанимают ML-инженеров, чтобы не отставать в нише AI.
Обратимся к порталу hh.ru — найдем вакансии для Machine Learning Engineer. Доход от 90 000 ₽ специалисту с опытом 1–3 года предлагает компания Surf IT, которая занимается приложениями для развлечений, работы и творчества:
Более скиллованные инженеры могут претендовать на оклад 450 000 ₽ — такую зарплату указывает «Профи» — сервис поиска персонала для оказания разовых услуг:
Американские предложения по компенсациям и бонусам в вакансиях для ML-инженеров еще привлекательнее:
Что должен знать и уметь ML-инженер
Ввиду того что машинное обучение — сфера, требующая серьезных познаний, на рынке стабильно наблюдается дефицит специалистов. Поэтому работодатели редко предъявляют требования к наличию у соискателей тех или иных софт скиллов. Но всё же инженеру будет гораздо проще справляться с обязанностями и строить карьеру, если он:
- инициативный — читает новости, следит за появлением усовершенствованных практик, актуализирует умения и занимается саморазвитием;
- коммуникабельный — отстаивает свою точку зрения, проводит презентации, взаимодействует с коллегами, легко о чем-либо договаривается внутри команды;
- аналитически мыслит, внимателен к деталям — в процессе обучения нейросети без труда оценивает данные, структурирует информацию, замечает закономерности и делает соответствующие выводы;
- правильно оценивает свои ментальные ресурсы — распределяет задачи во времени так, чтобы успеть к дедлайну и не допустить выгорания.
Со временем Machine Learning Engineer «обрастает» таким количеством навыков в самых разных областях, что может смело называть себя ученым. Но для старта в карьере джуну достаточно будет:
- Выучить английский язык не ниже уровня B2 (средне-продвинутый). Только так специалист будет понимать суть сложных текстов, общаться с заказчиками, взаимодействовать с комьюнити и читать профессиональную литературу.
- Начать программировать. Для машинного обучения чаще выбирают Python из-за наличия мощных встроенных библиотек, высокой производительности и простоты создания прототипов. Освоения синтаксиса будет недостаточно — нужно познакомиться с библиотеками Matplotlib, TensorFlow, Pandas, Keras, NumPy, scikit-learn и фреймворками PyTorch, Apache Spark. Для работы с базами данных придется полюбить язык запросов SQL. Наконец, лучше сразу овладеть навыком общения с пакетом программ MATLAB.
- Разобраться в математике. Это линейная алгебра, статистика, матанализ, теория вероятностей, дискретная математика.
- Понимать основные положения Computer Science — алгоритмы, паттерны и шаблоны проектирования, принципы объектно-ориентированного программирования.
- Погрузиться в Machine Learning — классическое обучение, с подкреплением, Deep Learning, компьютерное зрение.
- Искренне интересоваться областью ИИ. Привыкайте следить за новостями этой сферы, начать можно с Telegram-каналов вроде DLStories и Data Secrets.
Если не уверены, что профессия ML-специалиста вам подходит, попробуйте почитать книги для новичков, рекомендуемые сообществом Хабра:
Неплохо знаете английский? Тогда для вас окажется полезной книга «The Machine Learning Simplified: A Gentle Introduction to Supervised Learning», Andrew Wolf. Название говорит само за себя — Эндрю Вульф рассказывает про машинное обучение простым языком.
Где учиться на ML-инженера
Специалист по ML — это в первую очередь математик-программист. Даже годичные онлайн-курсы не сделают из студента специалиста с глубокими познаниями одновременно в статистике, информатике и кодинге. Data Science — тот случай, когда работодателю может показаться мало бакалавриата. В вакансиях часто встречается требование — магистерский диплом по профилю. Поэтому новичок оказывается на развилке трех дорог:
- Поступление в вуз. В образовательных учреждениях уже начали подготовку по профилю «Искусственный интеллект и большие данные» — такая программа есть, например, в Санкт-Петербургском государственном университете (математико-механический факультет). Подборку учебных заведений можно посмотреть здесь.
- Окончание магистратуры — желательно в топовой организации вроде Высшей школы экономики.
- Прохождение курсов после окончания вуза по смежным направлениям — таким как «Математика и механика», «Прикладная информатика», «Компьютерные науки». Главное — выбрать образовательный портал с лицензией, чтобы получить подлинное удостоверение о повышении квалификации, а не «бумажку» о прослушивании лекций. Популярным выбором являются Нетология, Skillbox, GeekBrains, Coursera. Начать учиться можно с бесплатных видеоматериалов — на Хабре есть подборка из 65 лекций от ведущих университетов мира.
Если речь идет о карьерном переходе, и времени на поступление в вуз нет, можно получить сертификат в организации с большим количеством компаний-партнеров — и тем самым увеличить шансы на трудоустройство. Лучше, если оплата обучения будет происходить после выхода на работу — такую опцию предлагает, например, университет Синергия. В этом случае сотрудники карьерного отдела приложат все усилия, чтобы выпускник поскорее приступил к обязанностям. Кроме того, в договоре с образовательной платформой будет прописана минимальная сумма зарплаты на старте карьеры — для айтишников обычно это 100 000 ₽.
Решили разобраться в профессии с нуля самостоятельно? Тогда начните с математики, а затем переходите к принципам проектирования и основному стеку ML-инженера: языку программирования и фреймворкам. В этом вам поможет MachineLearning.ru — открытая библиотека с конспектами лекций и учебниками.
Как ML-инженеру устроиться на работу
Поскольку на рынке начали появляться выпускники вузов с профильными программами обучения, шансы на быстрое трудоустройство постепенно уменьшаются. Несмотря на дефицит специалистов по машинному обучению, рекрутерам уже есть из кого выбирать. Поэтому следует уделить внимание резюме, портфолио и подготовке к собеседованию.
Портфолио
Идеальный кандидат в глазах работодателя — тот, кто после основательного обучения прошел стажировку в более-менее узнаваемой компании и готов привести в пример парочку кейсов. Если вы не можете этим похвастаться, лучше иметь 2–3 полноценных проекта в портфолио. Есть три варианта — расположим их по степени привлекательности для рекрутера:
- Коммерческий опыт. Не обязательно, чтобы вам заплатили за решение проблемы бизнеса. Найдите ТЗ на бирже фриланса или опубликуйте объявление о готовности потрудиться за «спасибо» и отзыв.
- Учебные работы. По окончании курсов студентам всегда предлагается практика. Инвестируйте время в экзаменационное задание, а затем добавьте его в портфолио.
- Самостоятельно придуманные задачи. Посмотрите, какие проекты выполняли разработчики — на Хабре и TProger. Вдохновитесь идеями Proglib.
Не принимайтесь за чересчур объёмные ТЗ — начинайте с простых и постепенно переходите к более сложным.
Резюме
Когда освоите все необходимые для входа в профессию навыки, начинайте откликаться на вакансии. Специалисту без опыта не следует быть слишком придирчивым — отправляйте резюме всякий раз, когда соответствуете требованиям работодателя. Отказываться от позиции стажера тоже не стоит, особенно если речь идет об известной компании — в следующий раз в вашем CV будет красоваться упоминание о коммерческой разработке.
Вы повысите шансы на то, что рекрутер обратит внимание на вашу кандидатуру, если составите резюме в онлайн-конструкторе — готовые шаблоны предусматривают все необходимые разделы и оформлены с учетом требований HR-менеджеров. А еще они гарантированно сканируются ATS — системами управления кандидатами, построенными на базе искусственного интеллекта. Вам ли не знать, что это такое
Обязательно редактируйте CV под условия конкретных объявлений и в первую очередь упоминайте те навыки, которые требует работодатель.
Собеседование
Рано или поздно вас пригласят на собеседование. Заранее подготовьте самопрезентацию на 3–5 минут и подумайте, какие вопросы хотите задать потенциальному работодателю. Настраивайтесь на то, что HR-менеджер или тимлид будут проверять вашу техническую базу.
Вам могут задать такие вопросы:
- Как бы вы рассказали о машинном обучении первокласснику? Своей бабушке?
- Что такое функция потерь?
- Какие библиотеки Python вы применяли в работе с нейронными сетями?
- Приведите примеры методов отбора признаков?
- Как бороться с недообучением и переобучением моделей?
- Что такое функция потерь?
- Как вы осуществляете предварительную обработку данных?
- Что значит «сверточная нейронная сеть»?
- Как вы решаете проблему несбалансированных данных?
- Назовите виды активационных функций, которые вам известны?
- В чем разница между офлайн- и онлайн-обучением?
- Где применяется GAN?
- Что такое PCA, и для чего он нужен?
- Какие виды регуляризации вам знакомы?
- Что такое AUC, ROC-кривая?
В интернете можно найти множество записей интервью и рекомендаций по подготовке к техническому собеседованию — попытайтесь самостоятельно ответить на максимальное количество вопросов. Если хотя бы в 20% случаев вы испытываете затруднения с ответом — подтяните знания и начните откликаться на вакансии позднее. Но пусть перфекционизм не помешает вам продолжить поиски работы.
Кому подойдет профессия ML engineer
Чаще всего машинным обучением начинают заниматься:
- исследователи и data-журналисты — ИИ помогает им находить настоящие причины различных явлений или событий;
- ученые — благодаря значительному багажу знаний у них получается обнаруживать закономерности в хаотичных данных и моделировать сложные процессы;
- product-менеджеры и аналитики — поставленные перед ними задачи требуют генерации больших объёмов данных для принятия обоснованных решений;
- разработчики, которые решили углубиться в математику и науку о данных, а также улучшить навыки программирования на JavaScript, Python, C++, R, Julia, Scala.
При выборе профессии ориентироваться следует не только на востребованность разработчиков, зарплаты и возможности удаленной занятости. Недаром на собеседованиях больше обращают внимание на «горящие глаза» — скиллы можно «прокачать», было бы желание. Популярные онлайн-площадки вроде Skillbox и GeekBrains регулярно проводят бесплатные марафоны — они позволяют буквально за три дня узнать, чем занимается ML-специалист, и примерить на себя роль «повелителя ИИ».