Данные из 193вакансии · 07 сентября 2026

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Подробнее →

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

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

Junior-вакансий
18
inc. стажировки
Доля junior
9%
от всего рынка
Senior / Junior+Intern
3.6x
соотношение
Навыков / вакансия
9
медиана
Распределение вакансий по грейдам
Intern — 2.7% (4)
Junior — 9.3% (14)
Middle — 37.3% (56)
Senior — 43.3% (65)
Lead — 7.3% (11)
Что значат эти цифры. 18 из 193 вакансии — уровня junior и стажёра, доминирует senior. Это не «рынок закрыт», это другой маршрут: в эту роль чаще переходят внутри компании — из бэкенда, из аналитики, из команды данных, — чем приходят с курса. Для внешнего отклика работает одно: показать не модель, а её путь в рабочий контур, целиком.

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

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

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

Как оформить 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-инженера

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

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

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

Путь модели в прод
Типовые вопросы
  • ·Что происходит между обученной моделью и первым ответом пользователю
  • ·Онлайн или 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 — в 14.5% вакансий ML-инженера, но выкатывать нечего, если модель не проверена честно

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

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

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

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

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

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

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

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

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

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

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

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

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

Можно ли стать ML-инженером с нуля?
Можно, но это редкий маршрут: 18 из 193 вакансии — уровня junior и стажёра, доминирует senior. Чаще в роль переходят из бэкенда или из Data Science, добирая недостающую половину. С нуля путь длиннее: сначала ML-база и валидация, потом сервис, образ, выкатка и мониторинг — и один проект, где всё это связано.
Чем ML-инженер отличается от Data Scientist?
Вопросом, за который отвечаешь. Data Scientist отвечает «какую задачу честно решить на этих данных и какой ошибкой платим»: гипотеза, baseline, метрика, валидация. ML-инженер отвечает «как это будет работать каждый день»: артефакт, сервис инференса, версии, релиз, откат, дрейф. Стек показывает разницу — здесь рядом с Python стоят Docker (26.9%), FastAPI (10.9%), Kubernetes (14.5%) и CI/CD (11.9%).
Чем ML-инженер отличается от MLOps-инженера?
Масштабом объекта. ML-инженер отвечает за конкретную модель: её обучение, сервис, релиз и качество. MLOps-инженер строит контур, в котором это делают все команды: платформа, пайплайны, реестр, стандарты выпуска, наблюдаемость. Коротко: один доводит модель, второй — способ доводить модели. В небольших компаниях это один человек.
Нужен ли FastAPI?
Это основной способ отдать модель онлайн: FastAPI — в 10.9% вакансий ML-инженера (21 из 193). Веб-разработчиком становиться не нужно: хватит схемы запроса и ответа, валидации входа, таймаутов, обработки ошибок, логов и health check. Специфика роли — размер модели, холодный старт, батчинг запросов и задержка.
Нужен ли Docker?
Да: Docker — в 26.9% вакансий ML-инженера (52 из 193). Здесь он решает две задачи: фиксирует окружение обучения, чтобы результат повторился, и упаковывает сервис инференса вместе с весами модели. Уметь надо написать образ, собрать его в пайплайне и понимать, почему он весит гигабайты.
Нужен ли Kubernetes?
Желательно, но не первым: Kubernetes — в 14.5% вакансий ML-инженера. Для входа хватает понимания, как сервис попадает в кластер, что такое реплика, ресурсы и проба готовности, как выкатывается новая версия и как вернуться назад. Глубина уровня платформы — уже территория MLOps-инженера.
Нужен ли PyTorch?
Часто: PyTorch — в 24.4% вакансий ML-инженера, TensorFlow — в части. Но задача роли не в архитектуре, а в том, чтобы обучение повторялось, а модель отвечала с предсказуемой задержкой. Классические модели никуда не делись: scikit-learn — в 11.4% вакансий, и завернуть их в сервис приходится чаще, чем нейросеть.
Нужны ли LLM и RAG?
Заметно: LLM — в 21.8% вакансий ML-инженера, RAG — в 20.7%, LangChain — в части. Спрашивают не про промпты, а про эксплуатацию: как замеряешь качество ответа, как ловишь галлюцинации, сколько стоит запрос, что делает сервис при отказе провайдера и какая у ответа задержка.
Нужен ли MLflow?
Полезен: MLflow — в части вакансий ML-инженера. Ценность не в инструменте, а в вопросе, который он закрывает: что именно ушло в релиз и можно ли это повторить. Конкретный трекер меняется от команды к команде, привычка фиксировать данные, конфиг, метрики и артефакт — нет.
Нужен ли Airflow?
Для batch-задач — да: Apache Airflow — в 11.9% вакансий ML-инженера. Часть моделей отдаёт результат не по запросу, а таблицей по расписанию. Разберись с ретраями, идемпотентностью и пересчётом за прошлый период: на этом ломаются чаще, чем на самой модели.
Нужен ли SQL?
Да: SQL — в 70.5% вакансий ML-инженера (136 из 193), PostgreSQL — в 26.4%. Признаки собираются из базы, результаты batch-инференса ложатся обратно в таблицу, а разбор инцидента почти всегда начинается с запроса к данным.
Что такое train/serving skew?
Расхождение между тем, как признак считается при обучении, и тем, как он считается в сервисе. Классика: в обучении агрегат посчитан по всей истории, а онлайн доступны только последние сутки. На тесте метрика отличная, в проде хуже — и виновата не модель. Лечится общим кодом подготовки признаков и сверкой на контрольном наборе. Спрашивают почти всегда.
Какие проекты собрать в портфолио?
Один сквозной контур ценнее пяти моделей: обучение по конфигу, сохранённый артефакт, сервис за API или batch-задача, образ, выкатка, откат и хотя бы один алерт на качество. Опирайся на ключевые навыки — Python, SQL, Docker. В README должно быть написано, как поднять и как откатить.
Сколько времени нужно, чтобы стать ML-инженером?
Из бэкенда или Data Science — 9–12 месяцев на недостающую половину. С нуля медиана — 18–24 месяца, при совмещении с работой ближе к 24–36. Дольше всего набирается не код, а опыт наблюдения за моделью после релиза.
Откуда проще войти: из бэкенда или из аналитики?
Из бэкенда быстрее закрывается сервисная половина: API, образ, релиз, логи, нагрузка. Из аналитики и Data Science — модельная: данные, метрика, валидация, leakage. Оба маршрута рабочие, разница только в том, какую половину придётся доучивать. Хуже всего заходит вход без обеих опор.
Сколько зарабатывает начинающий ML-инженер?
Ориентир для junior — 103 500–149 500 ₽ при медиане 230 000 ₽ по профессии. Разбивка по грейдам — на странице зарплат.
Когда начинать откликаться на вакансии?
Когда сквозной проект поднимается по README у постороннего человека, а ты можешь объяснить, как его откатить. Сейчас для входа — 18 вакансий из 193. Параллельно смотри вакансии внутри своей компании: в этой роли переход изнутри срабатывает чаще внешнего отклика.
Где посмотреть навыки и зарплаты ML-инженера?
На странице навыков — частотность по 193 вакансии и разбивка по грейдам. На странице зарплат — медиана, вилка и динамика по месяцам.