В прошлом ДЗ вы обучили модель для решения задачи классификации (по умолчанию использовался датасет https://www.kaggle.com/datasets/cherngs/heart-disease-cleveland-uci). Ваше следующее задание, это обернуть ее в вид, пригодный для использования в режиме онлайн.
Весь код должен находиться в том же репозитории, но в отдельной папке online_inference.
Основная часть:
-
Оберните inference вашей модели в rest сервис на FastAPI, должен быть endpoint /predict (3 балла)
-
Напишите endpoint /health, который должен возращать 200, если ваша модель готова к работе (такой чек особенно актуален, если делаете доп задание про скачивание из хранилища) (1 балл)
-
Напишите unit тест для /predict (https://fastapi.tiangolo.com/tutorial/testing/, https://flask.palletsprojects.com/en/1.1.x/testing/) (3 балла)
-
Напишите скрипт, который будет делать запросы к вашему сервису (2 балла)
-
Напишите Dockerfile, соберите на его основе образ и запустите локально контейнер (
docker build
,docker run
). Внутри контейнера должен запускаться сервис, написанный в предущем пункте. Закоммитьте его, напишите в README.md корректную команду сборки (4 балла) -
Опубликуйте образ в https://hub.docker.com/, используя
docker push
(вам потребуется зарегистрироваться) (2 балла) -
Опишите в README.md корректные команды
docker pull/run
, которые должны привести к тому, что локально поднимется на inference ваша модель. Убедитесь, что вы можете протыкать его скриптом из пункта 3 (1 балл) -
Проведите самооценку - распишите в реквесте какие пункты выполнили и на сколько баллов, укажите общую сумму баллов (1 балл)
Дополнительная часть:
- Ваш сервис скачивает модель из S3 или любого другого хранилища при старте, путь для скачивания передается через переменные окружения (+2 доп балла)
- Оптимизируйте размер docker image. Опишите в README.md, что вы предприняли для сокращения размера и каких результатов удалось добиться. Должно получиться мини исследование -- я сделал тото и получился такой-то результат (+2 доп балла) https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
- Сделайте валидацию входных данных https://pydantic-docs.helpmanual.io/usage/validators/ . Например, порядок колонок не совпадает с трейном, типы, допустимые максимальные и минимальные значения. Проявите фантазию, это доп. баллы, проверка не должна быть тривиальной. Вы можете сохранить вместе с моделью доп информацию о структуре входных данных, если это нужно (+2 доп балла). https://fastapi.tiangolo.com/tutorial/handling-errors/ -- возращайте 400, в случае, если валидация не пройдена
Процедура сдачи:
После выполнения ДЗ создаем пулл реквест, в ревьюеры добавляем Mikhail-M, ждем комментариев (на которые нужно ответить) и/или оценки. Ветка должна называться homework2.
Пожалуйста добавьте к своему пулл реквесту метку hw2. Если вы студент MADE, то дополнительно укажите тэг -- MADE, если вы студент Технопарка -- тэг TECHNOPARK.
Сроки выполнения:
Мягкий дедлайн: 30 мая 23:59
Жесткий дедлайн: 6 июня 23:59
Важно: после мягкого дедлайна все полученные баллы умножаются на 0.6