Чем предстоит заниматься
Мы прогнозируем спрос. Звучит просто, но на деле у нас две модели, и обе капризнее, чем кажется:
- Краткосрочная — чтобы полки в магазинах не превращались в минималистичные инсталляции.
- Долгосрочная — чтобы распределительные центры пополнялись вовремя, а не по принципу «авось доедет».
~70% времени — честная ML-разработка: код, ресёрч, эксперименты, борьба с утечкой данных и прочие радости. ~30% времени — презентации, синки, работа с требованиями и попытки объяснить бизнесу, почему модель не может предсказать чёрный лебедь за квартал до его прилёта.
Что мы ждём от тебя
- Опыт в DS/ML от 2 лет — и желательно не только на Kaggle (хотя мы уважаем).
- Умение оценивать сроки реалистично. «Сделаю за спринт» — это не про модель, которая ещё даже не сконвергировалась.
- Прагматизм. Нам нужны рабочие решения в проде, а не SOTA-архитектура, которую невозможно заинференсить за адекватное время. Идеальная модель — та, которая приносит деньги, а не та, у которой AUC на 0.003 выше.
- Ответственность. Доводить проекты до конца. Бросить модель на стадии model.fit() — не наш метод.
- Python, SQL, PySpark — на уверенном уровне:
- ETL-пайплайны для больших данных: читаем, трансформируем, агрегируем, пишем — и не роняем кластер.
- Оптимизация Spark-запросов: партиционирование, кэширование, broadcast-джойны — ты знаешь, почему repartition() не всегда друг.
- ML-фреймворки: Scikit-learn, TensorFlow или PyTorch — в зависимости от задачи и настроения данных.
- Работа с данными: обработка, анализ, feature engineering. Ты понимаешь, что garbage in = garbage out, и не винишь в этом модель.
- Командность. Умение общаться, слышать коллег и не устраивать холивары на код-ревью (ну, или хотя бы делать это конструктивно).
Будет большим плюсом
- Опыт продакшн-разработки. Не только notebook.ipynb, но и пайплайны, которые живут без твоего присмотра и не падают в 3 ночи.
- Понимание бизнес-процессов. Ты знаешь, что происходит между df.head() и реальной полкой в магазине.
- ML в PySpark:
- Spark MLlib для распределённого обучения — потому что fit() на одной ноде уже не тянет.
- PySpark Pandas UDFs — чтобы применить модель к большим данным и не ждать результата до следующего квартала.
О проекте
Прогнозирование спроса для пополнения магазинов и складов. Реальный ритейл, реальные данные, реальный импакт — если модель ошибается, это видно не в метриках, а на полках.