Вам потребуется сделать "production ready" проект для решения задачи классификации, то есть написать код для обучения и предикта, покрыть его тестами и тд
Для обучения модели, можете использовать датасет https://www.kaggle.com/datasets/cherngs/heart-disease-cleveland-uci, либо иной небольшой датасет для классификации(если используете другой, то опишите какой и как его получить в readme)
Пример подобного рассматривали на паре https://github.com/made-ml-in-prod-2021/ml_project_example, не нужно отсюда копировать=)
Код должен находиться в папке ml_project, ветка должна называться homework1. Если вы студент MADE,то добавьте к пуллревесту тэг -- MADE, если вы студент Технопарка -- добавьте тэг TECHNOPARK
Критерии (указаны максимальные баллы, по каждому критерию ревьюер может поставить баллы частично):
-
В описании к пулл реквесту описаны основные "архитектурные" и тактические решения, которые сделаны в вашей работе. В общем, описание того, что именно вы сделали и для чего, чтобы вашим ревьюерам было легче понять ваш код (1 балл)
-
В пулл-реквесте проведена самооценка, распишите по каждому пункту выполнен ли критерий или нет и на сколько баллов(частично или полностью) (1 балл)
-
Выполнено EDA, закоммитьте ноутбук в папку с ноутбуками (1 балл) Вы так же можете построить в ноутбуке прототип(если это вписывается в ваш стиль работы)
Можете использовать не ноутбук, а скрипт, который сгенерит отчет, закоммитьте и скрипт и отчет (за это + 1 балл)
-
Написана функция/класс для тренировки модели, вызов оформлен как утилита командной строки, записана в readme инструкцию по запуску (3 балла)
-
Написана функция/класс predict (вызов оформлен как утилита командной строки), которая примет на вход артефакт/ы от обучения, тестовую выборку (без меток) и запишет предикт по заданному пути, инструкция по вызову записана в readme (3 балла)
-
Проект имеет модульную структуру (2 балла)
-
Использованы логгеры (2 балла)
-
Написаны тесты на отдельные модули и на прогон обучения и predict (3 балла)
-
Для тестов генерируются синтетические данные, приближенные к реальным (2 балла)
- можно посмотреть на библиотеки https://faker.readthedocs.io/, https://feature-forge.readthedocs.io/en/latest/
- можно просто руками посоздавать данных, собственноручно написанными функциями.
-
Обучение модели конфигурируется с помощью конфигов в json или yaml, закоммитьте как минимум 2 корректные конфигурации, с помощью которых можно обучить модель (разные модели, стратегии split, preprocessing) (3 балла)
-
Используются датаклассы для сущностей из конфига, а не голые dict (2 балла)
-
Напишите кастомный трансформер и протестируйте его (3 балла) https://towardsdatascience.com/pipelines-custom-transformers-in-scikit-learn-the-step-by-step-guide-with-python-code-4a7d9b068156
-
В проекте зафиксированы все зависимости (1 балл)
-
Настроен CI для прогона тестов, линтера на основе github actions (3 балла). Пример с пары: https://github.com/demo-ml-cicd/ml-python-package
PS: Можно использовать cookiecutter-data-science https://drivendata.github.io/cookiecutter-data-science/ , но поудаляйте папки, в которые вы не вносили изменения, чтобы не затруднять ревью
Дополнительные баллы=)
- Используйте hydra для конфигурирования (https://hydra.cc/docs/intro/) - 3 балла
Mlflow
-
разверните локально mlflow или на какой-нибудь виртуалке (1 балл)
-
залогируйте метрики (1 балл)
-
воспользуйтесь Model Registry для регистрации модели(1 балл) Приложите скриншот с вашим mlflow run DVC
-
выделите в своем проекте несколько entrypoints в виде консольных утилит (1 балл). Пример: https://github.com/made-ml-in-prod-2021/ml_project_example/blob/main/setup.py#L16 Но если у вас нет пакета, то можно и просто несколько скриптов
-
добавьте датасет под контроль версий (1 балл)
-
сделайте dvc пайплайн(связывающий запуск нескольких entrypoints) для изготовления модели(1 балл)
Для большего удовольствия в выполнении этих частей рекомендуется попробовать подключить удаленное S3 хранилище(например в Yandex Cloud, VK Cloud Solutions или Selectel)
Процедура сдачи:
После выполнения ДЗ создаем пулл реквест, в ревьюеры добавляем Mikhail-M, ждем комментариев (на которые нужно ответить) и/или оценки.
Сроки выполнения:
Мягкий дедлайн: 9 мая 23:59
Жесткий дедлайн: 16 мая 23:59
После мягкого дедлайна все полученные баллы умножаются на 0.6