Данные из 208вакансий · 12 августа 2026

Как стать ML-инженером: путь от нуля до первого оффера

Не «стань разработчиком за 3 месяца» — реальный путь входа на основе данных по 208 вакансий.

Мурадов ЮрийАвтор·Мурадов Юрий·Аналитик SkillStat
АМПроверено·Алексей Морозов·Технический редактор·Senior Machine Learning Engineer
Junior-вакансий сейчас
12
6% от всех 208 вакансий
Сложность входа
Высокая
6% junior-вакансий
Senior / Junior+Intern
6.4x
На каждого junior+intern — 6.4 senior
Навыков / вакансия
8
медиана по вакансиям
Всего вакансий
208
активных в Москве

Можно ли стать ML-инженером с нуля

Да. По данным SkillStat, 6% вакансий ML-инженера — уровня junior или стажёр. Это 12 вакансий прямо сейчас.

«С нуля» здесь почти всегда означает «из соседней роли». ML-инженер доводит модель до использования: обучение по конфигу, артефакт, сервис инференса, выкатка, откат, наблюдение за качеством. Приходят из бэкенда — там не хватает ML-базы; приходят из аналитики и Data Science — там не хватает инженерии. Каждый добирает свою недостающую половину.

Вход трудный из-за грейда, а не из-за конкурса. Доминирует senior: на одну junior-вакансию ML-инженера приходится 6.4 senior-вакансии, уровня junior и стажёра — 12 из 208. Причина простая: ошибка стоит дорого не в момент обучения, а после релиза, когда модель тихо деградирует в проде и неделю этого никто не замечает.

Как стать ML-инженером: короткий план

Пять шагов от честно проверенной модели до управляемого релиза.

01
ML-база и метрика
Python, SQL, pandas, NumPy, scikit-learn, baseline и валидация. Не чтобы соревноваться с Data Scientist, а чтобы понимать, что именно ты выкатываешь и когда результат брать нельзя.
02
Повторяемое обучение
Конфиг вместо ручных правок, зафиксированная версия данных, сохранённый артефакт модели вместе с подготовкой признаков. MLflow — эксперименты и реестр версий.
03
Сервис инференса
Модель за API: схема запроса и ответа, валидация входа, таймаут, обработка ошибок, логи. FastAPI — в 12.5% вакансий, Docker — в 25.5%.
04
Выкатка и откат
CI/CD (11.5%) и Kubernetes (12.5%): сборка образа, тесты, теневой прогон новой версии, план отката — до релиза, а не после.
05
Наблюдение за качеством
Метрики на исторических данных, онлайн-сигналы, дрейф входов, задержка, доля ошибок, алерты. Модель без наблюдения деградирует молча.

Что учить ML-инженеру первым

Не всё сразу. Вот очерёдность по частотности в вакансиях — от самого нужного к менее срочному.

Полный список навыков с частотностью, связками и зарплатной премией — навыки ML-инженера →

Roadmap ML-инженера: от нуля до junior

Порядок опирается на частотность навыков по данным вакансий. Первые 4–5 этапов — минимум для первого оффера.

  1. 01
    Python и базовые библиотеки 94.2% вакансий

    NumPy, Pandas — обработка данных; Jupyter/VS Code, виртуальные окружения.

    Подробнее →
  2. 02
    Классический ML 13.9% вакансий

    Scikit-learn: линейные модели, деревья, градиентный бустинг, оценка качества моделей.

    Подробнее →
  3. 03
    Нейросетевые фреймворки 27.4% вакансий

    PyTorch или TensorFlow/Keras — архитектуры, обучение, инференс.

    Подробнее →
  4. 04
    LLM и языковые модели 26.9% вакансий

    Трансформеры, API OpenAI/YandexGPT/GigaChat, prompt engineering, few-shot learning.

    Подробнее →
  5. 05
    RAG и векторные базы данных 24.5% вакансий

    Retrieval-Augmented Generation: эмбеддинги, Qdrant/Chroma/Weaviate, similarity search.

    Подробнее →
  6. 06
    Агентные фреймворки и оркестрация 10.1% вакансий middle+

    LangChain, LlamaIndex — AI-пайплайны, tool calling, многоагентные системы.

    Подробнее →
  7. 07
    Деплой и сервинг моделей 12.5% вакансий middle+

    FastAPI/gRPC для инференса, Docker, ONNX — оптимизация latency в production.

    Подробнее →
  8. 08
    MLOps и мониторинг 13% вакансий middle+

    MLflow, DVC, Airflow — версионирование экспериментов, воспроизводимость, мониторинг дрейфа.

    Подробнее →

Junior-вакансии ML-инженера: что реально требуют работодатели

Срез построен на 208 активных вакансий.

Junior-вакансий
12
inc. стажировки
Доля junior
6%
от всего рынка
Senior / Junior+Intern
6.4x
соотношение
Навыков / вакансия
8
медиана
Распределение вакансий по грейдам
Junior — 7.6% (12)
Middle — 29.9% (47)
Senior — 49% (77)
Lead — 13.4% (21)
Что значат эти цифры. 12 из 208 вакансий — уровня junior и стажёра, доминирует senior. Это не «рынок закрыт», это другой маршрут: в эту роль чаще переходят внутри компании — из бэкенда, из аналитики, из команды данных, — чем приходят с курса. Для внешнего отклика работает одно: показать не модель, а её путь в рабочий контур, целиком.

Какие проекты сделать для портфолио

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

Модель за API
Средняя · 1–2 недели
Стек: Python, FastAPI, Docker, scikit-learn или PyTorch
GitHub: README с примером запроса, схема ответа, таймаут, обработка ошибок, health check и unit-тесты
Ценность: FastAPI — в 12.5% вакансий ML-инженера, Docker — в 25.5%: базовый артефакт роли
Повторяемое обучение
Средняя · 2 недели
Стек: Python, MLflow, Apache Airflow, Git
GitHub: Конфиг обучения, зафиксированная версия данных, сохранённый артефакт, отчёт сравнения двух версий модели
Ценность: MLflow — в части вакансий, Airflow — в 13%: доказывает, что релиз можно повторить
Batch inference по расписанию
Средняя · 1–2 недели
Стек: Apache Airflow, PostgreSQL, pandas
GitHub: Задача с ретраями и идемпотентностью, таблица результатов, проверка входных данных перед прогоном
Ценность: Половина моделей живёт не за API, а таблицей результатов — про этот режим забывают чаще всего
Выкатка с откатом
Высокая · 2–3 недели
Стек: CI/CD, Docker, Kubernetes, Git
GitHub: Пайплайн сборки и тестов, теневой прогон новой версии, сравнение с текущей, описанная процедура отката
Ценность: CI/CD — в 11.5% вакансий, Kubernetes — в 12.5%: тема, где junior обычно пустой
LLM-сервис с проверками
Высокая · 2–3 недели
Стек: Python, LLM, RAG, LangChain, FastAPI
GitHub: Набор тестовых запросов с эталонами, замер качества и задержки, поведение при отказе провайдера
Ценность: LLM — в 26.9% вакансий ML-инженера, RAG — в 24.5%: спросят про замеры, стоимость и задержку

Как оформить GitHub и резюме

Профиль GitHub
  • Pinned: проект с полным путём модели, а не самый точный ноутбук
  • README отвечает на три вопроса: как обучить, как поднять, как откатить
  • Dockerfile и пример запроса прямо в README — рецензент должен поднять сервис за пять минут
  • Отдельный файл конфига обучения с версией данных: видно, что релиз воспроизводим
  • В истории коммитов виден релизный цикл, а не единственный коммит с дампом всего проекта
Резюме без коммерческого опыта
  • Описывай не «обучил модель», а «вывел в контур»: как обучается, где живёт, как обновляется
  • Называй режим инференса: онлайн за API или batch по расписанию — это уточняют первым делом
  • Пиши про откат и мониторинг: это отличает инженера от исследователя с Docker
  • Задержку и нагрузку — числами: «p99 под 150 мс на одном экземпляре сервиса»
  • Навыки — Python, SQL; только то, что видно в проекте
Слабое резюме

«Обучал модели на PyTorch, работал с классическим ML, знаком с Docker и Kubernetes»

Сильное резюме

«Вывел модель скоринга в рабочий контур: FastAPI и Docker, p99 под 120 мс, обучение по конфигу в Airflow, версии и метрики в MLflow. Выкатка через CI/CD с теневым прогоном, откат — одна команда. Дрейф входов ловится алертом. GitHub: [ссылка]»

Самостоятельно, курсы или вуз — какой путь выбрать

Самостоятельно
Роль собирается из открытых кусков: обучение, сервис, образ, выкатка, мониторинг — всё поднимается у себя
Легко застрять в половине роли: бэкендер оставляет модель чёрным ящиком, исследователь не доводит до релиза
Если одна из двух опор уже есть — инженерная или ML — и ты честно добираешь вторую
Курсы с ментором
Ревью контура целиком: где рассыпается подготовка признаков, почему откат не сработает, что мониторить
Большинство программ заканчивается на обучении модели; сервис, выкатка и дрейф остаются за скобками
Если нужен разбор production-части; проверяй, есть ли в программе инференс, релиз и мониторинг качества
Вуз / колледж
Даёт ML-базу и инженерное мышление, с которыми обе половины роли учатся быстрее
Контур выпуска в программах не встречается: артефакты, реестр, выкатка и дрейф собираются только руками
Если ты в начале пути и готов параллельно вести свой проект от обучения до релиза
Ловушка — выучить половину роли. Из бэкенда тянет закрыть модель в контейнер и не разбираться, почему она деградирует. Из аналитики — довести метрику и не думать про задержку, версии и откат. Спрашивают обе половины на одном собеседовании. Проверка простая: можешь объяснить, почему в ноутбуке метрика была одна, а в проде другая, — половину роли ты закрыл.
Курсы · подобрано по данным рынка

Курсы для ML-инженера

Сопоставили программы с реальным стеком из 208 вакансий — оценка соответствия рассчитана автоматически, это не реклама.

Все курсы →
Соответствие = доля ключевых навыков вакансий, которые закрывает программа курса. На основе 208 вакансий, обновлено автоматически.

Что спрашивают на собеседовании

Путь модели в прод
Типовые вопросы
  • ·Что происходит между обученной моделью и первым ответом пользователю
  • ·Онлайн или batch — как выбираешь режим
  • ·Что лежит в артефакте, кроме весов
  • ·Как откатиться на предыдущую версию
Как показать проектом

Модель за API: покажи путь от конфига обучения до ответа

Сервисный слой
Типовые вопросы
  • ·Валидация входа и что вернуть на кривой запрос
  • ·Таймаут, батчинг запросов, холодный старт тяжёлой модели
  • ·Как замерял задержку и что показывает p99
  • ·Логи инференса: что писать, чтобы потом разобраться
Как показать проектом

FastAPI-сервис: схема, ошибки, health check

Воспроизводимость
Типовые вопросы
  • ·Как повторить обучение полугодовой давности
  • ·Зачем нужен реестр моделей, если есть Git
  • ·Версия данных: как фиксируешь
  • ·Что сравниваешь между двумя версиями перед релизом
Как показать проектом

Повторяемое обучение: MLflow и конфиг

Дрейф и деградация
Типовые вопросы
  • ·Чем дрейф входных данных отличается от падения качества
  • ·Что мониторишь, если правильный ответ приходит через месяц
  • ·Когда переобучать, а когда откатывать
  • ·Модель работала полгода и сломалась — с чего начнёшь
Как показать проектом

Проект с алертом на дрейф входов

Расхождение обучения и инференса
Типовые вопросы
  • ·Откуда берётся train/serving skew
  • ·Где живёт подготовка признаков и почему это важно
  • ·Как проверить, что признаки считаются одинаково в обучении и в сервисе
  • ·Что делать, если признак доступен в обучении и недоступен онлайн
Как показать проектом

Любой проект: покажи, как переиспользуешь код подготовки признаков

ML-база
Типовые вопросы
  • ·Зачем нужен baseline, если модель уже работает
  • ·Что такое leakage и как его проверить
  • ·Метрика упала в проде, а на тесте была хорошей — почему
  • ·Когда достаточно правила вместо модели
Как показать проектом

Кейс, где ты отказался от модели в пользу правила

Сколько времени нужно, чтобы стать ML-инженером

Минимум
9–12 мес
Из бэкенда или Data Science: добираешь недостающую половину роли
Медиана
18–24 мес
С нуля: ML-база, сервис, образ, выкатка, мониторинг и один полный контур
Реалистично
24–36 мес
С нуля и при совмещении с работой: обе половины роли набираются по очереди

Быстрее всех входят не новички. У бэкендера половина роли уже есть — сервис, образ, релиз, логи. У Data Scientist другая половина — данные, метрика, валидация. Им нужно 9–12 месяцев на вторую. С нуля обе строятся последовательно, отсюда и разрыв в сроках.

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

Senior-доминанта означает, что первый оффер часто приходит не с рынка, а изнутри компании — через задачи вокруг моделей в своей команде.

Ошибки новичков

Кладут ноутбук в прод как есть

Почему мешает: Ячейки не воспроизводятся, порядок важен, окружение неизвестно — релиз нельзя ни повторить, ни откатить

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

Подготовка признаков живёт только в обучении

Почему мешает: Классический train/serving skew: онлайн признаки считаются иначе, и качество падает тихо

Как исправить: Один код подготовки признаков на обучение и на сервис; сверь результат на контрольном наборе

Нет версии данных и артефакта

Почему мешает: Модель обучили, метрику показали, повторить не могут: непонятно, что именно ушло в релиз

Как исправить: Реестр моделей: MLflow — в части вакансий ML-инженера. Фиксируй данные, конфиг, метрики и артефакт вместе

План отката пишут после инцидента

Почему мешает: Пока откат не описан заранее, любая деградация превращается в ночной ручной деплой

Как исправить: Откат описывается до релиза: какая версия предыдущая, где её артефакт, кто и как переключает

Мониторят доступность, а не качество

Почему мешает: Сервис отвечает, задержка в норме, а модель месяц предсказывает мимо: дрейф не виден метриками инфраструктуры

Как исправить: Отдельные сигналы на распределение входов, долю ошибок и качество; алерт на дрейф, а не только на падение сервиса

Учат Kubernetes раньше ML-базы

Почему мешает: Kubernetes — в 12.5% вакансий ML-инженера, но выкатывать нечего, если модель не проверена честно

Как исправить: Сначала baseline, метрика, валидация и leakage; кластер — после первого сервиса в Docker

Считают роль «Data Scientist с Docker»

Почему мешает: Тогда мимо проходят таймауты, батчинг, холодный старт, размер модели, стоимость запроса и контракт API

Как исправить: Сервисный слой разбирается отдельно: FastAPI (12.5%), схема ответа, ошибки, логи, нагрузка

Тащат LLM без замеров

Почему мешает: LLM — в 26.9% вакансий ML-инженера, а спрашивают про качество ответа, задержку, стоимость и поведение при отказе провайдера

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

Как SkillStat считает данные

Источник: 208 вакансий в московском сегменте. Навыки и грейды извлекаются автоматически из текста каждой вакансии.

Грейды: определяются по требованиям вакансии — уровню опыта, упоминанию «junior», «intern», «стажёр». Это рыночная оценка объявления.

Сложность входа: рассчитывается по доле junior-вакансий и медиане навыков на junior-уровне. Это индикатор, а не гарантия.

Обновление: данные пересчитываются регулярно. Текущий срез — 12 августа 2026.

Частые вопросы

Можно ли стать ML-инженером с нуля?
Можно, но это редкий маршрут: 12 из 208 вакансий — уровня junior и стажёра, доминирует senior. Чаще в роль переходят из бэкенда или из Data Science, добирая недостающую половину. С нуля путь длиннее: сначала ML-база и валидация, потом сервис, образ, выкатка и мониторинг — и один проект, где всё это связано.
Чем ML-инженер отличается от Data Scientist?
Вопросом, за который отвечаешь. Data Scientist отвечает «какую задачу честно решить на этих данных и какой ошибкой платим»: гипотеза, baseline, метрика, валидация. ML-инженер отвечает «как это будет работать каждый день»: артефакт, сервис инференса, версии, релиз, откат, дрейф. Стек показывает разницу — здесь рядом с Python стоят Docker (25.5%), FastAPI (12.5%), Kubernetes (12.5%) и CI/CD (11.5%).
Чем ML-инженер отличается от MLOps-инженера?
Масштабом объекта. ML-инженер отвечает за конкретную модель: её обучение, сервис, релиз и качество. MLOps-инженер строит контур, в котором это делают все команды: платформа, пайплайны, реестр, стандарты выпуска, наблюдаемость. Коротко: один доводит модель, второй — способ доводить модели. В небольших компаниях это один человек.
Нужен ли FastAPI?
Это основной способ отдать модель онлайн: FastAPI — в 12.5% вакансий ML-инженера (26 из 208). Веб-разработчиком становиться не нужно: хватит схемы запроса и ответа, валидации входа, таймаутов, обработки ошибок, логов и health check. Специфика роли — размер модели, холодный старт, батчинг запросов и задержка.
Нужен ли Docker?
Да: Docker — в 25.5% вакансий ML-инженера (53 из 208). Здесь он решает две задачи: фиксирует окружение обучения, чтобы результат повторился, и упаковывает сервис инференса вместе с весами модели. Уметь надо написать образ, собрать его в пайплайне и понимать, почему он весит гигабайты.
Нужен ли Kubernetes?
Желательно, но не первым: Kubernetes — в 12.5% вакансий ML-инженера. Для входа хватает понимания, как сервис попадает в кластер, что такое реплика, ресурсы и проба готовности, как выкатывается новая версия и как вернуться назад. Глубина уровня платформы — уже территория MLOps-инженера.
Нужен ли PyTorch?
Часто: PyTorch — в 27.4% вакансий ML-инженера, TensorFlow — в 9.6%. Но задача роли не в архитектуре, а в том, чтобы обучение повторялось, а модель отвечала с предсказуемой задержкой. Классические модели никуда не делись: scikit-learn — в 13.9% вакансий, и завернуть их в сервис приходится чаще, чем нейросеть.
Нужны ли LLM и RAG?
Заметно: LLM — в 26.9% вакансий ML-инженера, RAG — в 24.5%, LangChain — в 10.1%. Спрашивают не про промпты, а про эксплуатацию: как замеряешь качество ответа, как ловишь галлюцинации, сколько стоит запрос, что делает сервис при отказе провайдера и какая у ответа задержка.
Нужен ли MLflow?
Полезен: MLflow — в части вакансий ML-инженера. Ценность не в инструменте, а в вопросе, который он закрывает: что именно ушло в релиз и можно ли это повторить. Конкретный трекер меняется от команды к команде, привычка фиксировать данные, конфиг, метрики и артефакт — нет.
Нужен ли Airflow?
Для batch-задач — да: Apache Airflow — в 13% вакансий ML-инженера. Часть моделей отдаёт результат не по запросу, а таблицей по расписанию. Разберись с ретраями, идемпотентностью и пересчётом за прошлый период: на этом ломаются чаще, чем на самой модели.
Нужен ли SQL?
Да: SQL — в 60.6% вакансий ML-инженера (126 из 208), PostgreSQL — в 17.3%. Признаки собираются из базы, результаты batch-инференса ложатся обратно в таблицу, а разбор инцидента почти всегда начинается с запроса к данным.
Что такое train/serving skew?
Расхождение между тем, как признак считается при обучении, и тем, как он считается в сервисе. Классика: в обучении агрегат посчитан по всей истории, а онлайн доступны только последние сутки. На тесте метрика отличная, в проде хуже — и виновата не модель. Лечится общим кодом подготовки признаков и сверкой на контрольном наборе. Спрашивают почти всегда.
Какие проекты собрать в портфолио?
Один сквозной контур ценнее пяти моделей: обучение по конфигу, сохранённый артефакт, сервис за API или batch-задача, образ, выкатка, откат и хотя бы один алерт на качество. Опирайся на ключевые навыки — Python, SQL, PyTorch. В README должно быть написано, как поднять и как откатить.
Сколько времени нужно, чтобы стать ML-инженером?
Из бэкенда или Data Science — 9–12 месяцев на недостающую половину. С нуля медиана — 18–24 месяца, при совмещении с работой ближе к 24–36. Дольше всего набирается не код, а опыт наблюдения за моделью после релиза.
Откуда проще войти: из бэкенда или из аналитики?
Из бэкенда быстрее закрывается сервисная половина: API, образ, релиз, логи, нагрузка. Из аналитики и Data Science — модельная: данные, метрика, валидация, leakage. Оба маршрута рабочие, разница только в том, какую половину придётся доучивать. Хуже всего заходит вход без обеих опор.
Сколько зарабатывает начинающий ML-инженер?
Ориентир для junior — 126 000–182 000 ₽ при медиане 280 000 ₽ по профессии. Разбивка по грейдам — на странице зарплат.
Когда начинать откликаться на вакансии?
Когда сквозной проект поднимается по README у постороннего человека, а ты можешь объяснить, как его откатить. Сейчас для входа — 12 вакансий из 208. Параллельно смотри вакансии внутри своей компании: в этой роли переход изнутри срабатывает чаще внешнего отклика.
Где посмотреть навыки и зарплаты ML-инженера?
На странице навыков — частотность по 208 вакансий и разбивка по грейдам. На странице зарплат — медиана, вилка и динамика по месяцам.