Machine Learning Engineer — это не медали Kaggle и не должность «я прошёл курс нейросетей». На входе вас нанимают за контур, который можно вызвать повторно: данные на входе, обучение или инференс по правилам, метрика, которую вы не путаете с accuracy «на глаз», и способ откатить плохую модель. Research-титул без продакшн-следа на junior-рынке СНГ почти всегда фейк — либо ваш, либо вакансии.

В 2026-м живые junior-слоты чаще выглядят как MLOps-lite, рекомендательные заготовки, классификация тикетов, качество поиска — рядом с инженерами данных и backend, а не как «изобретите архитектуру трансформера». Ниже — какую базу показать, какой учебный сервис закрывает сомнение и куда не тратить отклики.

Коротко:

  • ML Engineer продаёт повторяемый контур модели, не ноутбук с высоким скором на датасете недели.
  • База: Python, SQL, одна задача обучения с валидацией, упаковка инференса, лог и понятный провал.
  • Kaggle без прод-обвязки — хобби. Сертификат облака без сервиса — строка, не работа.
  • Junior-роли ищите по задачам: пайплайн признаков, обучение по расписанию, мониторинг качества, а не по слову Research.
  • Если нет ни данных, ни бэкенда — сначала закройте одну из сторон, не оба курса сразу.

Чем ML Engineer не является

Data Scientist в маленькой команде СНГ часто сам и считает, и закатывает. ML Engineer в более зрелой схеме ближе к инженеру: воспроизводимость, сервисы, задержки, стоимость прогона, деградация метрики в проде. На старте рынка эти ярлыки смешаны. Вам важно не выиграть спор о названии, а показать контур.

Research Engineer / Applied Scientist в объявлении с «без опыта, публикаций не требуем, но SOTA» — почти всегда middle под видом романтики. Не откликайтесь туда пачкой. Если вам ближе витрины и джобы без моделей — смотрите вход в Data Engineer. Если ближе продукт без обучения — Python-разработку или аналитику.

Kaggle полезен как дисциплина валидации. Он не заменяет API инференса, версию модели и объяснение, что будет, если завтра распределение уедет. Медаль в шапке резюме без ссылки на сервис читается как «игрался с датасетами».

Какой прод-контур ждут даже на входе

Никто не ждёт от новичка распределённый тренинг на кластере. Ждут, что вы понимаете цикл:

  1. Откуда данные, какое зерно, какая утечка в таргет.
  2. Как делите train/valid (по времени, не случайно, если это события).
  3. Какая метрика и почему не accuracy на дисбалансе.
  4. Как упакован инференс: скрипт, маленькое API, батч-скоринг — один способ, доведённый до конца.
  5. Как поймёте, что модель в проде стала хуже: хотя бы отложенный прогон на свежей неделе и сравнение.

Это и есть «прод-контур» учебного уровня. Он слабее промышленного MLOps. Он сильнее курса, где вы «запускали AutoML в облаке по гайду».

База, без которой рано звать себя MLE

Не начинайте с LLM-обёрток, если нет Python и табличных данных. Типичный входной стек:

  • Python. Не только pandas: окружение, зависимости, тесты на препроцессинг, логи.
  • SQL. Признаки почти всегда живут в таблицах. Без SQL вы застрянете на выгрузках руками.
  • Одна классическая задача. Классификация, ранжирование, прогноз числа — с честной валидацией. Глубокое обучение не обязательно.
  • Git, README, как воспроизвести. Фиксированные сиды, версии библиотек, что считать успехом.

Математика: понимание переобучения, смещения, простой регуляризации, что такое precision/recall. Курс теории вероятностей без задачи не нанимает. Задача без понимания метрики разваливается на первом вопросе «почему этот порог».

Сертификаты AWS/GCP «Machine Learning Specialty» не открывают junior-слот сами. Если в вакансии нет этого облака в задачах, строка только занимает место. Сначала сервис, потом экзамен под конкретный найм — если он вообще нужен.

Отдельно про LLM-обёртки. Подключить чужой API и написать «AI-ассистент» за выходные — не контур модели. Это интеграция. Её можно показать в backend-резюме. В MLE-файле она работает, только если вы измерили качество ответов, стоимость, отказ и что делаете, когда провайдер лежит. Иначе вы конкурируете с людьми, у которых табличная задача с честным recall, и проигрываете прозрачностью.

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

Учебный сервис за квартал, а не десять ноутбуков

Одна вертикаль. Пример темы: классификация обращений поддержки, прогноз спроса по дням, простые рекомендации «похожие товары» на открытых данных.

Недели 1–4. Собрать датасет с понятным таргетом. Описать утечки: не тащите в признаки то, чего не будет в момент прогноза. Базовый бейзлайн: правило или логистическая регрессия. Зафиксируйте метрику до сложной модели.

Недели 5–8. Одна модель лучше бейзлайна на честной валидации. Скрипт обучения, артефакт модели в репозитории или в релизе, скрипт инференса. Не тащите пять фреймворков.

Недели 9–12. Обвязка: маленькое API или батч раз в сутки, лог входных ошибок, короткая инструкция «как переобучить на новых файлах». Один абзац ограничений: нет A/B, нет GPU-кластера, нет онлайна.

README на полстраницы важнее красивой confusion matrix в конце ноутбука. Рекрутер откроет одно. Не откроет архив из двадцати экспериментальных веток.

Пример 1. План на 90 дней с нуля в ML-соседстве

Исход: уверенный Python, слабый SQL, нет коммерческого ML. Цель — роль, где в задачах обучение и инференс рядом с данными, не Research Scientist.

  1. Дни 1–30. SQL до джойнов и окон на учебной БД. Одна табличная задача, бейзлайн, отчёт «что не так с accuracy». Без нейросетей.
  2. Дни 31–60. Модель + инференс-скрипт + фиксированные зависимости. Прогон на отложенной неделе. Запись: метрика упала — вот гипотеза почему.
  3. Дни 61–90. Резюме с заголовком ML Engineer / Python, табличные модели, инференс — не «AI Specialist». 15 точечных откликов в неделю на задачи контура, ноль на «SOTA с нуля». Параллельно смотреть соседние DE-слоты, если контур данных слабый.

Если к дню 60 нет воспроизводимого обучения, не начинайте LLM-чатбота «для портфолио». Это другой продукт и другой разговор, часто слабее табличной задачи с честной метрикой.

Пример 2. Сопроводительное без research-пафоса

Вакансия: junior ML Engineer, Python, признаки из хранилища, обучение раз в неделю, сервис скоринга, русский язык. Публикации не требуются.

Откликаюсь на junior ML Engineer с недельным переобучением и скорингом.

По вакансии нужно собирать признаки, обучать модель по расписанию и отдавать скор без ручного ноутбука. Собрал учебный контур классификации обращений: SQL-выгрузка → обучение с валидацией по времени → скрипт инференса → прогон на следующей неделе. Бейзлайн — правила по ключам; модель лучше по recall на редком классе. Ссылка на репозиторий и как воспроизвести: [ссылка].

Коммерческого ML в проде нет. Публикаций нет — в вакансии они не нужны. Готов разобрать ваш текущий пайплайн признаков на созвоне или сделать тестовое на табличной задаче в том же формате.

Нет «страстно увлекаюсь AI». Есть контур, метрика, граница, следующий шаг. Каркас письма без опыта — тот же, что в сопроводительном без стажа.

Как читать junior-вакансии ML

Откройте вакансии Machine Learning Engineer и отфильтруйте шум. Слово junior рядом с PyTorch, Kubernetes, «own the platform» и тремя годами продакшна — не ваш слот. Слово ML рядом с Excel и «внедрите ChatGPT в отдел продаж за неделю» — часто не инженерия, а консультация без контура.

Ориентиры живого входа:

  • В задачах есть данные, обучение, инференс, сопровождение — хотя бы два из четырёх явно.
  • Стек узкий: Python + SQL + один фреймворк обучения.
  • Тестовое ограничено по времени и похоже на работу, не «повторите статью 2020 года с GPU, которых у вас нет».

Зарплату не берите из чужих тредов. Соберите вилку по фильтрам каталога: роль, грейд, формат, регион. Одна цифра в чате — не рынок 2026.

Удалёнка на зарубежную команду без прод-ML почти всегда закрыта. Русскоязычные продуктовые и аутсорс-команды иногда берут с сильным учебным контуром плюс соседний бэкенд или аналитика. Стажировка с реальным скорингом сильнее курса: как искать вход — в стажировке в IT.

Резюме и собеседование

Заголовок — роль и тип задач, не «AI/ML/DS/LLM». Один основной проект сверху, с метрикой и ссылкой. Курсы вниз или вычеркнуть. Как собрать файл под роль — в резюме Python-разработчика по структуре и в общих правилах составления резюме: задачи и результат, не список библиотек.

Прогоните верх через проверку резюме, если там до сих пор «увлекаюсь нейронками» и двадцать фреймворков без контура.

На интервью чаще спрашивают валидацию, утечки, что делать при дисбалансе, как откатить модель, чем устроен ваш инференс. Не готовьте монолог про архитектуру GPT. Готовьте рассказ о проекте по фактам: данные, решение, метрика, ошибка. Заготовки — в как рассказать о проекте и в подготовке к собеседованию.

Что вычеркнуть из резюме и GitHub

До пачки откликов пройдитесь по файлу и репозиторию как рекрутер за пятнадцать секунд.

  • Заголовок «AI/ML/DS/LLM Engineer, открыт к research». Оставьте одну роль.
  • Список из PyTorch, TensorFlow, JAX, Keras, Hugging Face, LangChain без одного рабочего контура.
  • Kaggle-ранг в шапке без ссылки на ваш прод-подобный прогон и без объяснения валидации.
  • Фраза «внедрил искусственный интеллект в бизнес» без метрики и без кода.
  • Ноутбуки без фиксированных зависимостей, с абсолютными путями и с выводом на полмегабайта.

В GitHub оставьте один главный репозиторий сверху: README, как воспроизвести, какая метрика на какой выборке, чем бейзлайн хуже. Остальные форки курсов скройте или уберите из пина. Рекрутер не будет искать алмаз в двадцати «final_v7».

На интервью часто просят сравнить бейзлайн и модель вслух. Заготовьте три предложения: что было правилом, что добавила модель, на какой выборке это видно, где модель всё ещё врёт. Если этого рассказа нет — контур ещё не готов, отклики рано масштабировать.

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

Нужна ли сильная математика и аспирантура?

Для большинства junior MLE в продукте — нет. Нужно не путать метрики, понимать переобучение и честно делить выборку. Research-роли с теорией — другой конкурс и другие требования. Не маскируйте одно другим.

Достаточно ли курса нейросетей?

Нет, если после него нет воспроизводимого обучения и инференса. Курс — вход в практику, не профессия. Сертификат курса не заменяет репозиторий.

Стоит ли начинать с LLM?

Только если вакансии, на которые вы целитесь, реально про RAG/обёртки и вы можете показать качество и стоимость, а не «подключил API». Для общего входа табличная задача прозрачнее и чаще совпадает с junior-описаниями.

Чем отличаться от Data Scientist в резюме?

Акцентом на контур: обучение по правилам, инференс, мониторинг, а не только исследование. Если у вас только ноутбуки — вы ближе к учебному DS. Не спорьте с HR о названии, покажите сервис.

Берут ли без коммерческого ML?

Иногда, если есть сильный соседний опыт (backend, DE, аналитика) плюс учебный контур. С нуля «только курсы» — редко. Тогда честнее стажировка, внутренняя ротация или вход через данные/бэкенд.

Как говорить про зарплату?

Не называйте медиану из статьи. Откройте фильтры в каталоге вакансий по роли и формату, посмотрите вилки в объявлениях, соберите свой диапазон. На скрининге — диапазон, а не одна цифра «как в чате». Как держать разговор — в ожиданиях по зарплате.

Что сделать сейчас

Выберите одну табличную задачу с понятным таргетом. За две недели зафиксируйте бейзлайн, метрику и способ валидации по времени. Не добавляйте нейросеть, пока бейзлайн не описан.

Доведите обучение и инференс до команды «воспроизвести из README». Затем соберите узкое резюме и откликайтесь на контур, не на Research. Живые слоты смотрите в каталоге ML Engineer — и держите рядом запасной путь в данные, если модели в вакансии на самом деле нет.