Стать Middle NLP Engineer за 6 месяцев — реально.

Не за два года, не через бесконечные курсы — а за полгода нормальной учебы.

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

Почему это реально:

  • Мой путь от нуля до стажёра занял два года, и сейчас я понимаю, как пройти его быстрее

  • После нахождения первой работы я вырос до Senior за год;

  • Я регулярно провожу собеседования и знаю реальные требования;

  • Уже помог нескольким людям войти в профессию.

Материалов по DS слишком много - и 70-80% из них бесполезны новичку. Здесь - только необходимый минимум. В конце - хорошие курсы и вопросы для самопроверки.

Прежде чем перейти к оптимальной программе обучения, важно понять, где большинство людей теряет время.

Ошибки самостоятельного обучения

  1. Сложные курсы вместо нормальной базы.
    Курсы вроде Воронцова или хендбука Яндекса, полезные, но они перегружены: 80% материала не нужно новичку.

  2. Учеба по книгам.
    Сфера меняется быстрее, чем пишутся книги. Плюс большинству людей проще воспринимать видео, поэтому обучение быстрее и легче заходит.

  3. Нет понимания, что важно, а что можно пропустить.
    Новички могут залипать на второстепенных темах и параллельно игнорировать то, что реально нужно на собесах.

  4. Изучать ML «на практике».
    В ML теория — основа. Проекты, Kaggle, контесты и «бесплатная работа» бессмысленны, если не понимать базу. С ChatGPT можно решить задачу, но не понять, почему решение работает и что у него под капотом. На собеседованиях проверяют именно теорию.

Я прошел черезвсе это: сложные курсы, книги и попытки «учиться через практику». В какой‑то момент думал, что DS — не моё. На собеседования попадал редко и все проваливал.

На что нельзя тратить время

  • Высшее образование
    Для ML достаточно базовых концепций первого курса. Если вы в ВУЗе - делайте минимум, учитесь на тройки, не вкладывайте туда силы. Если нет вышки - поступать специально ради ML бессмысленно.

  • Алгоритмы
    Нужно знать, что такое сложность алгоритма, а нарешивать литкод не стоит. Алгори��мы спрашивают примерно в 2-3 компании из 10.

  • Статистика и A/B тесты
    Это для классического ML. В NLP - приятный бонус, но не критичный.

  • Деплой
    Полезно, но без него спокойно берут на работу. Можно почитать что такое FastAPI и Docker — этого достаточно.

  • С++.
    Некоторые считают это «базой», то с чего стоит начинать обучаться программированию. Но для ML‑щика это не нужно.

  • Доказательства формул и сложная математика
    Вывод кросс-энтропии или умение посчитать backprop на листочке - не спрашивают и на работе не понадобится.

  • Пет-проекты для резюме
    HR их не смотрит. Гораздо важнее навыки и подготовка к собеседованиям.

Разобрались, чего делать не нужно. Теперь - что именно и в каком объёме стоит выучить.

Roadmap

Я разбил роадмап по темам. В каждой - короткое описание, список материалов и вопросы для самопроверки. На некоторые вопросы не получится ответить только по курсам, поэтому придётся немного поискать информацию самому. Давать набор материалов, который закрывает абсолютно всё, - неэффективно: растягивает обучение и снижает фокус.

Python — 1 месяц

ML-инженер обязан уверенно писать на Python: читать чужой код, быстро разбираться в чужих проектах и править код, который сгенерировал ChatGPT.

Курсы:

  • Учебник Яндекса по Python - проходим все темы, но без фанатизма: по 2–3 задачи на каждую тему.

  • Любой видеокурс с тем же списком тем (если тяжело заходят тексты), например, курс Александра Ильина.

  • Для закрепления синтаксиса - порешать лёгкие задачи на LeetCode (Difficulty = Easy). Цель: почувствовать уверенность в написании кода, а не прокачать алгоритмы.

Вопросы для самопроверки по Python

1. Базовый синтаксис

  • Как вывести текст в Python?

  • Какие типы данных есть в Python?

  • Какие типы данных изменяемые, а какие — нет?

  • Как объявить переменную? Какие правила именования?

  • Какие операции можно делать с числами и со строками?

2. Условные операторы и циклы

  • Как работает if-elif-else?

  • Чем отличается while от for?

  • Как работает range?

  • Как прервать цикл и как пропустить итерацию?

3. Функции

  • Как объявить функцию и как ее вызвать?

  • Что такое аргументы функции и возвращаемое значение?

  • Чем отличаются позиционные и именованные аргументы?

  • Что такое args и kwargs и зачем они нужны?

4. Структуры данных

  • Чем список (list) отличается от кортежа (tuple)?

  • Как добавить элемент в список? Как удалить элемент из списка?

  • Что такое словарь (dict)? Как получить значение по ключу?

  • Какая структура данных лежит под dict?

  • Какова асимптотика доступа к элементу словаря по ключу?

  • Может ли список быть ключом словаря? Почему?

  • Чем множество (set) отличается от списка (list)?

  • Какая асимптотика поиска элемента в set и в list?

5. Работа с файлами

  • Как открыть файл в Python? Какие есть режимы открытия?

  • Как прочитать весь файл целиком и как пройтись по нему построчно?

  • Как записать данные в файл? Чем отличаются режимы 'w' и 'a'?

6. ООП (основы)

  • Что такое класс и объект?

  • Как объявить метод класса / метод экземпляра?

  • Что такое self в методах класса?

  • Чем init отличается от обычного метода? Какие ещё «магические» методы ты знаешь?

  • Что такое @staticmethod и @classmethod и чем они отличаются?

7. Исключения

  • Зачем нужен try-except?

  • Какие стандартные исключения в Python ты знаешь (минимум 5–7 штук)?

8. Модули и библиотеки

  • Как импортировать модуль? Чем import math отличается от from math import sqrt?

  • Какие стандартные библиотеки ты знаешь и для чего они (минимум: math, random, os, sys, datetime, json, re)?

9. Продвинутые темы

  • Что такое list / dict comprehension? Примеры.

  • Что такое итератор? Как он работает в Python?

  • Чем генератор отличается от списка?

  • Как работает lambda-функция и где её удобно использовать?

  • Что такое декоратор? Как написать простой декоратор самому?

  • Что такое контекстный менеджер? 

Основы ML — 1.5 месяца

Курс: Deep Learning(базовый поток). Нужно пройти курс до раздела «Введение в нейронные сети» (Computer Vision - опционально).

Вопросы для самопроверки

1. Введение в ИИ и ML

  • Что понимают под искусственным интеллектом? Сильный ИИ, слабый ИИ?

  • Какие основные направления ИИ существуют ?

  • Какие этапы включает работа ML-инженера?

2. Математика

  • Что такое вектор и матрица?

  • Что означает умножение матрицы на вектор?

  • Что означает умножение матрицы на матрицу?

  • Что такое линейная комбинация векторов?

  • Что такое линейная зависимость?

  • Что такое норма вектора? Какие бывают нормы?

  • Что такое производная и её интерпретация?

  • Что такое градиент?

  • Как работает градиентный спуск?

  • Почему learning rate важен?

  • Чем отличается лосс от метрики?

3. Python, NumPy, Pandas, работа с данными

NumPy:

  • Чем NumPy array отличается от Python list?

  • Что такое broadcasting?

Pandas:

  • Что такое DataFrame и Series?

  • Как читать CSV?

  • Как выбирать строки по условию?

  • Как работает groupby?

  • Как объединять DataFrame (merge, concat)?

Работа с данными:

  • Какие бывают признаки (числовые, категориальные)?

  • Как кодировать категориальные признаки (Label/One-Hot)?

  • Как обрабатывать пропуски?

  • Почему выбросы — это плохо?

  • Что такое EDA и зачем он нужен?

  • Методы балансировки датасета (undersampling, oversampling).

  • Когда делать семплинг: до или после train/test split?

4. Основы ML

  • Какие бывают типы задач ML (supervised/unsupervised/RL)?

  • Что такое признаки и целевая переменная?

  • Что такое переобучение и как его обнаружить?

  • Как бороться с переобучением?

  • Что такое параметры и гиперпараметры?

  • Примеры гиперпараметров разных моделей.

  • Что такое кросс-валидация и зачем она нужна?

  • Как подбирать гиперпараметры (grid/random/bayesian)?

5. Линейные модели

  • Как устроены линейные модели?

  • Чем линейная регрессия отличается от логистической?

  • Плюсы и минусы линейных моделей.

  • Что такое мультиколлинеарность и как с ней бороться?

  • Что такое регуляризация?

  • Виды регуляризации: L1, L2, Elastic Net.

6. Оптимизация

  • Чем отличается GD от SGD?

  • Что происходит при слишком большом или маленьком learning rate?

7. Метрики

  • Accuracy, precision, recall, F1, ROC AUC — определения.

  • Почему F1 — гармоническое среднее?

  • В каких задачах важны precision и recall?

  • Как управлять precision/recall через порог?

  • Почему accuracy — плохая метрика?

  • Как оценивать качество модели?

  • Как ведут себя метрики при дисбалансе?

  • Как считать метрики при многоклассовой классификации?

8. Деревья и ансамбли

  • Как строится решающее дерево?

  • Плюсы и минусы дерева.

  • Как регуляризировать дерево?

  • Почему дерево склонно к переобучению?

  • Что такое бэггинг?

  • Что такое бустинг?

  • Почему в бустинге используют деревья, а не линейные модели?

  • Что будет, если убрать первое дерево (в бустинге/бэггинге)?

  • Что будет при увеличении числа деревьев в 100 раз (бэггинг/бустинг)?

9. Нейронные сети

  • Что такое нейросеть и из чего она состоит?

  • Что такое перцептрон?

  • Что такое «голова» сети?

    • для бинарной классификации

    • для многоклассовой

    • для регрессии

  • Зачем нужны функции активации?

  • Какие функции активации бывают?

  • Как обучается нейросеть (forward/backprop)?

  • Какие оптимизаторы знаешь?

  • Что такое dropout?

  • Какие методы регуляризации есть в нейросетях?

  • Основные функции потерь.

  • Проблема затухающих/взрывающихся градиентов.

NLP — 1.5 месяца

Выберите один из трёх курсов (любой даёт нужный минимум):

Глубоко изучите устройство трансформера.
Рекомендую этот гайд: Transformer, explained in detail | Igor Kotenkov

Обязательно нужно ознакомиться, с основами промпт-инжиниринга: This AI Skill Will Put You Ahead of 98% of People

Вопросы для самопроверки

1. Базовая обработка текста и эмбеддинги

  • Что такое Bag-of-Words и TF-IDF?

  • Как работает Word2Vec (CBOW / Skip-gram)?

  • Какие недостатки есть у Word2Vec?

  • Как оценивать качество эмбеддингов?

  • Чем эмбеддинги в BERT отличаются от Word2Vec?

2. Предобработка текста

  • Что дают нормализация и лемматизация?

  • Что такое токенизация?

  • Как работает BPE?

  • Чем отличается предобработка текстов для Word2Vec и для BERT?

  • Как BERT обрабатывает неизвестные слова?

3. RNN, LSTM, GRU

  • Как работает RNN?

  • Чем LSTM лучше RNN?

  • Главные недостатки RNN по сравнению с трансформерами?

4. Языковое моделирование и Transfer Learning

  • Что такое языковая модель?

  • Что такое transfer learning в NLP?

5. Attention и трансформеры

  • Как работает attention?

  • В чём разница между self-attention и cross-attention?

  • Зачем нужен self-attention и почему MLP не справляется?

  • Коротко опишите архитектуру трансформера.

  • Что сложнее оптимизировать - encoder или decoder?

  • Какова сложность self-attention и почему?

6. Позиционные эмбеддинги

  • Что такое позиционные эмбеддинги и зачем они нужны?

  • Какую максимальную длину текста может принять трансформер?

  • Почему позиционные эмбеддинги складываются с токенами, а не конкатенируются?

7. Трансформеры на практике

  • Как получить эмбеддинг предложения из BERT?

  • Как управлять генерацией текста (temperature, top-k, top-p, repetition penalty)?

8. Обучение моделей

  • Что такое pretraining и fine-tuning?

  • Как обучаются BERT и GPT?

  • Что такое LoRA и Adapter Tuning?

  • Что такое RLHF и его этапы?

9. Метрики генерации

  • Какие метрики используются для оценки генеративных моделей? (BLEU, ROUGE, METEOR, BERTScore, Perplexity, Distinct-n и др.)

RAG — 2 недели

RAG сейчас используют везде, и его регулярно спрашивают на собеседованиях - это нужно знать обязательно. К сожалению, я не нашёл материалов, которые кратко и понятно объясняют, что такое RAG и как с ним раб��тать, поэтому предлагаю поискать информацию самостоятельно.

Вопросы для самопроверки

Теория

  • В чём отличие RAG от fine-tuning? Когда выбирать одно, а когда другое?

  • Как RAG решает проблему knowledge cutoff?

  • Какие ограничения и риски есть у RAG?

Архитектура

  • Опиши полный pipeline RAG: от запроса до ответа.

  • Какие стратегии выбора chunk size существуют?

Поиск и базы

  • Когда BM25 предпочтительнее dense retrieval?

  • Как размер эмбеддинга влияет на качество и скорость?

Генерация

  • Какие методы снижают галлюцинации?

  • Как адаптировать prompting под разные типы retrieved документов?

Практика

  • Как измерять качество RAG? Какие метрики применяются?

ML System Design — 2 недели

MLSD нужен, чтобы понять, чем ML-инженер занимается на реальной работе.
Чтобы получить базовое понимание, достаточно разобрать 1-3 задачи по шаблону ниже. Лучшего способа нет: этот навык развивается только практикой.

Книга Бабушкина и курсы Карпова - слишком долгий путь.
Гораздо эффективнее разобрать одну задачу вместе с опытным ML-инженером или, в крайнем случае, с ChatGPT - задавая вопросы последовательно, шаг за шагом.


Шаблон ML System Design

Инструкция

ML System Design (MLSD) — это способ структурно подойти к созданию ML-системы: от постановки задачи до деплоя и мониторинга.

Даже если задача не имеет очевидного решения — MLSD помогает двигаться шаг за шагом: разобраться в бизнес-контексте, сформулировать метрики, понять данные, спланировать эксперименты и задокументировать выводы.

  1. Пройди по разделам сверху вниз — каждый отвечает на ключевой вопрос.

  2. Если не знаешь, как ответить — напиши гипотезу и что нужно проверить.

  3. В конце у тебя получится полная карта проекта: от цели до деплоя.

1. Уточнение проблемы

Главная цель: понять, что именно мы хотим улучшить, кому это нужно и почему.

Даже если тебе кажется, что задача — просто “предсказать X”, начни с бизнес-вопроса. ML — лишь инструмент для достижения бизнес-цели.

Ответь на вопросы:

  • Какой бизнес-процесс хотим улучшить?  (Пример: уменьшить время ответа службы поддержки)

  • Почему нынешнее решение не устраивает?  (Ручная классификация обращений занимает слишком много времени)

  • Какая целевой аудитория будет пользоваться системой?

  • Какую бизнес-метрику хотим улучшить?  (Например: среднее время ответа, конверсию, точность рекомендаций)

  • Какие команды зависят от результата (разработка, аналитика, продукт)?

  • Какие ограничения и риски есть у системы (время отклика, приватность, точность)?

  • Какая цена ошибки? (например, неверная рекомендация ≠ ошибка в медицинском диагнозе)

Дополнительно:

  • Есть ли аналогичные решения (open source, статьи, конкуренты)?

  • Какие ресурсы и экспертиза есть у нас?

  • Нужно ли вести документацию процесса (особенно если проект исследовательский)?

2. Метрики

Главная цель: определить, как будем измерять успех.

В ML две группы метрик:

  • Бизнес-метрики — измеряют ценность для продукта или компании.  (выручка, CTR, конверсия, точность рекомендаций)

  • ML-метрики — измеряют качество модели.  (accuracy, F1, recall@K, RMSE, BLEU и т.д.)

Ответь на вопросы:

  • Какой таргет у модели?

  • Есть ли особенности у таргета?  (дисбаланс классов, сезонность, выбросы)

  • Как собирать тестовую выборку — и сможет ли человек вручную решить задачу на ней?

  • Нет ли лика между train и test (например, одинаковые пользователи)?

  • Какие оффлайн-метрики выберем и какая из них — основная?

  • Как она связана с бизнес-метрикой?  (например, рост Recall@K должен повысить CTR)

  • Как будем измерять качество онлайн (A/B-тест, shadow deployment)?

  • Какие целевые значения считаем “успешными”?

Совет: если не знаешь, с чего начать — выбери простую, интерпретируемую метрику (например, F1).

3. Данные

Главная цель: понять, откуда возьмём данные, как их собрать и насколько они надёжны.

Ответь на вопросы:

  • Какие данные уже есть?

  • Какие данные потенциально могут помочь (источники, логи, внешние API)?

  • Как будет устроен ETL-процесс (pipeline получения данных)?

  • Насколько он стабилен и обновляем?

  • Нужно ли версионировать данные (DVC, Git LFS)?

  • Какие потенциальные проблемы могут быть: пропуски, дубликаты, смещения?

Подсказка:  для начала просто опиши структуру данных в таблице:

Источник

Тип

Обновление

Объём

Качество

CRM

табличные

ежедневно

1 млн строк

90% заполнено

Логи сайта

json

real-time

5 ГБ/день

шумные

4. Признаки (Feature Engineering)

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

Ответь на вопросы:

  • Какие основные признаки можно извлечь из данных?

  • Есть ли явные корреляции с таргетом?

  • Нужно ли преобразовывать таргет (логарифмировать, категоризировать и т.п.)?

  • Стоит ли разбить задачу на каскад моделей? (например, два шага: фильтрация + ранжирование)

  • Какие проблемы могут быть с фичами: выбросы, пропуски, сезонность, утечки?

  • Как проверим, что признаки работают (EDA, feature importance)?

Пример:  Для задачи предсказания оттока:

  • активность за последние 7/30/90 дней

  • число покупок

  • средний чек

  • наличие жалоб

  • давность последней покупки

5. Моделирование

Главная цель: выбрать подходящий метод и построить бейзлайн.

Перед тем как сразу брать нейросеть — ответь на вопрос: “А нужен ли вообще ML?”

Иногда задачу можно решить простой эвристикой (правило, фильтр, SQL-запрос).
 Бейзлайн — это первая версия решения, от которой будем отталкиваться.

Ответь на вопросы:

  • Какой тип задачи (классификация, регрессия, ранжирование, кластеризация)?

  • Какой бейзлайн можно быстро проверить?

  • Какую модель выбрать и почему?

  • Как будем трекать эксперименты (MLflow, ClearML, W&B)?

  • Как будем улучшать бейзлайн (новые признаки, гиперпараметры, архитектура)?

  • Нужна ли интерпретируемость?

  • Нужно ли давать возможность ручной коррекции результатов?

Пример:  Бейзлайн для рекомендации — «топ популярных товаров в категории».
 Дальше можно перейти к ML-модели: LightFM, CatBoost, BERT4Rec и т.п.

6. Деплой и инференс

Главная цель: понять, как модель будет использоваться в реальности.

Ответь на вопросы:

  • Какой тип инференса?  (онлайн, батч, стрим)

  • Где будут фичи — в feature store или считаются “на лету”?

  • Как будет устроен сервинг (API, шина, очередь, скрипт)?

  • Что ещё нужно, чтобы модель работала (фичи, нормализация, постобработка)?

  • Как проверим, что предсказания корректны перед выкатом?

  • Как избежать просадок после деплоя (shadow mode, постепенный rollout)?

  • Как обновлять модель (версионирование, rollback, hot swap)?

Пример:  Для чатбота можно деплоить модель в FastAPI-сервис, который вызывает LLM через REST-интерфейс.

7. Мониторинг

Главная цель: убедиться, что модель продолжает работать корректно после релиза.

Ответь на вопросы:

  • Что будем логировать (фичи, предсказания, ошибки, метрики)?

  • Нужен ли онлайн-мониторинг (например, EvidentlyAI, Prometheus)?

  • Что считаем аномалией?

  • Как будем реагировать на data shift / concept drift?

  • Как часто обновлять модель (по расписанию или по условию)?

Пример:

  • Проверяем, не упал ли CTR на 20% после обновления модели.

  • Сравниваем распределения признаков на проде и в трейне.

  • Настраиваем алерты при аномалиях.

8. Заключение и план ресерча

Главная цель: если решения пока нет — зафиксировать гипотезы и план исследований.

Ответь на вопросы:

  • Какие гипотезы нужно проверить?

  • Что непонятно и требует ресерча (например, способ получения признаков)?

  • Какие baseline-решения и статьи можно исследовать?

  • Какой порядок экспериментов?

Пример:

  1. Проверить, можно ли извлечь признаки напрямую из текста с помощью BERT.

  2. Если нет — попробовать классификацию на TF-IDF.

  3. Сравнить качество и время инференса.

GIT | Linux | SQL — неделя

Дополнительные инструменты не критичны для трудоустройства. Их почти не спрашивают на собеседованиях, но они нужны в реальной работе. Поэтому изучать их лучше в конце или за 1–2 недели до выхода на работу.

GIT

Для ML-инженера достаточно базового Git: понять коммиты, ветки, merge, rebase, pull request и уметь ими пользоваться. 200-страничные книги не нужны - нужные команды сами запоминаются в работе.

Полезные короткие гайды:

Вопросы по git на собеседованиях не задают :)

Linux

Если вы работаете на Windows или Mac, реальная работа всё равно будет идти в Linux. Не потому что вам выдадут другой компьютер, а потому что обучение и инференс требуют серверов — ноутбуки это не тянут. ML-инженеры подключаются к удалённым машинам и запускают код там.

Поэтому основы Linux нужны. Но, как и с Git или SQL, достаточно базы - читать Таненбаума от корки до корки не нужно.

Уроки по Linux:

  1. Linux для начинающих / Урок #4 – Основы командной строки Linux

  2. Linux для начинающих / Урок #5 – Работа с файлами и директориями

  3. Отдельно запомните команды ниже. На сервере вы будете работать вместе с коллегами, поэтому важно следить за тем, сколько ресурсов вы занимаете, чтобы никому не мешать:

    • nvidia-smi - показывает загрузку GPU и занятую видеопамять.

    • free -h - показывает использование оперативной памяти.

Вопросы по линуксу на собесах тоже не задают :)

SQL

SQL встречается примерно в 10% собеседований, и иногда нужен в работе.
Глубоко изучать не обязательно — достаточно понимать SELECT/FROM/WHERE/JOIN/GROUP BY и уметь писать простые запросы.

Хороший краткий гайд: Вся база SQL для начинающих за 1 час

Практика — 3 недели

Практика

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

Я бы рекомендовал отработать две задачки:

Советы

  1. Обязательно провести качественное EDA

  2. Обучаться нужно в Google Colab или на серваках Kaggle, не мучайте свой пк

  3. Попытаться решить задачу самому, потом посмотреть чужие решения, скорректировать свое, разобраться в каждой строчке

  4. Попросить ревью у опытного ML инженера

Советы

  • Нужно уметь отвечать на все вопросы для самопроверки — это обязательный минимум.

  • Важна дисциплина: не 12 часов за один день и месяц паузы, а стабильные 1–3 часа каждый день.

  • Полезно найти единомышленника примерно вашего уровня.

  • Обязательно использовать ChatGPT (лучше платную версию) и освоить Cursor.

  • Учиться по записям собесов до того, как выучены базовые темы, не нужно — получится хаос.

Итог

Путь к Middle в NLP — это не про десятки курсов, а про правильную последовательность и стабильную работу.

Закройте базу, разберитесь в трансформерах, сделайте пару задач, поймите MLSD — и вы уже на уровне большинства кандидатов.

Если хотите получать разборы собесов, практические материалы и советы по карьере — всё это есть в моём телеграм‑канале: https://t.me/mentor_ml

Комментарии (1)


  1. bambazamba
    23.11.2025 19:19

    Python можно выучить за 8 часов, я видел ролики в Youtube. У меня нет TikTok, но думаю там можно минут за 40. Это касается и всего остального. Так что middle (то, что вы под этим подразумеваете) модно стать дня за два, не напрягаясь.