Skip to content

Latest commit

 

History

History
46 lines (26 loc) · 4.92 KB

hw2.md

File metadata and controls

46 lines (26 loc) · 4.92 KB

В прошлом ДЗ вы обучили модель для решения задачи классификации (по умолчанию использовался датасет https://www.kaggle.com/datasets/cherngs/heart-disease-cleveland-uci). Ваше следующее задание, это обернуть ее в вид, пригодный для использования в режиме онлайн.

Весь код должен находиться в том же репозитории, но в отдельной папке online_inference.

Основная часть:

  1. Оберните inference вашей модели в rest сервис на FastAPI, должен быть endpoint /predict (3 балла)

  2. Напишите endpoint /health, который должен возращать 200, если ваша модель готова к работе (такой чек особенно актуален, если делаете доп задание про скачивание из хранилища) (1 балл)

  3. Напишите unit тест для /predict (https://fastapi.tiangolo.com/tutorial/testing/, https://flask.palletsprojects.com/en/1.1.x/testing/) (3 балла)

  4. Напишите скрипт, который будет делать запросы к вашему сервису (2 балла)

  5. Напишите Dockerfile, соберите на его основе образ и запустите локально контейнер (docker build, docker run). Внутри контейнера должен запускаться сервис, написанный в предущем пункте. Закоммитьте его, напишите в README.md корректную команду сборки (4 балла)

  6. Опубликуйте образ в https://hub.docker.com/, используя docker push (вам потребуется зарегистрироваться) (2 балла)

  7. Опишите в README.md корректные команды docker pull/run, которые должны привести к тому, что локально поднимется на inference ваша модель. Убедитесь, что вы можете протыкать его скриптом из пункта 3 (1 балл)

  8. Проведите самооценку - распишите в реквесте какие пункты выполнили и на сколько баллов, укажите общую сумму баллов (1 балл)

Дополнительная часть:

  1. Ваш сервис скачивает модель из S3 или любого другого хранилища при старте, путь для скачивания передается через переменные окружения (+2 доп балла)
  2. Оптимизируйте размер docker image. Опишите в README.md, что вы предприняли для сокращения размера и каких результатов удалось добиться. Должно получиться мини исследование -- я сделал тото и получился такой-то результат (+2 доп балла) https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
  3. Сделайте валидацию входных данных 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