Skip to content

UlianaBespalova/MLE_web1_deploy_example

Repository files navigation

Вебинар "Цикл разработки и деплоя приложений на примере микросервиса"

Курс "Инженер машинного обучения", Яндекс Практикум

Описание проекта

Микросервис для предсказания погоды, основанный на модели градиентного бустинга. Сервис оценивает вероятность дождя на следующий день по текущим погодным условиям. Модель обёрнута в веб-приложение, к которому можно обращаться по сети. Также в коде имеются тесты для оценки работоспособности сервиса и модели.

Как работать с проектом?

1. Скачивание и установка зависимостей
  1. Чтобы редактировать репозиторий, необходимо сделать его копию. Это делается по кнопке fork. Лучше не менять название репозитория, поскольку оно прописано в файле setup

  2. Клонируем репозиторий на свой компьютер:

git clone <адрес вашей копии репозитория>
  1. Создаём новую ветку:
git checkout -b <имя новой ветки>
  1. Установка нужных библиотек:
pip install -r requirements.txt
pip install -e .

Бывает, что pip пропускает модуль marshmallow_dataclass. Можно установить его вручную:

pip install marshmallow_dataclass
  1. Готово! Можно проверить работоспособность проекта, запустив тесты:
python -m online_inference.tests

Запустить сервер можно следующей командой:

uvicorn --app-dir=online_inference app:app --host 127.0.0.1 --port 8000

Проверить post-запросы можно с помощью скрипта:

python -m online_inference.script
2. Задание для самостоятельного выполнения

Все файлики, с которыми мы будем работать, находятся в папке online_inference.

  1. Необходимо добавить в файл app.py новый эндпоинт /will_it_rain, который возвращает 1, если вероятность, предсказанная моделью, превышает 0.6, или 0 в обратном случае.

  2. В файле tests.py раскомментируйте тест для данного эндпоинта и проверьте его работу. Добейтесь того, чтобы все тесты проходили.

  3. Запушьте изменения на Github, убедитесь, что новая версия проходит автоматические проверки.

  4. Сделайте pull request в master и скиньте на него ссылку в чат.

3. Шпаргалка для работы с гитом
  1. Добавляем изменения в индекс:
git add .
  1. Создаём коммит:
git commit -m "Описание того, что было изменено"
  1. Отправляем изменения в удалённый репозиторий:
git push

Если вы локально создали новую ветку, эта команда не сработает, но git сам подскажет, как её модернизировать, чтобы добавить ветку. Можно просто скопировать :)

Архитектура проекта

==============================

├── LICENSE         
├── README.md          
├── data               <- Папка c датасетом и предиктом 
│
├── notebooks          <- Ноутбук с разведочным анализом данных
│
├── configs            <- Конфиги с параметрами моделей (для обучения: список фич, параметры модели, пути для сохранения; для предикта: путь к модели и результатам)
│
├── requirements.txt   <- Файл с зависимостями
│
├── ml_project         <- Исходный код ML-микросервиса
│   ├── __init__.py    
│   │
│   ├── data           <- Скрипт для загрузки и разделения данных на обучающую и тестовую выборку
│   │   └── get_data.py
│   │
│   ├── features       <- Трансформер для обработки датасета
│   │   └── build_features.py
│   │
│   ├── models         <- Скрипт для работы с моделью
│   │   └── model_fit_predict.py
│   │
│   ├── enities        <- Параметры модели  датасета в формате DataClass (чёрная магия для парсинга конфигов)
│   │   ├── features_params.py
│   │   ├── model_params.py
│   │   └── split_params.py
│   │
│   └── tests          <- Юнит-тесты отдельных модулей и тест пайплайна для обучения модели
│
|
├── online_inference   <- Код веб-приложения для онлайн-использования модели
│   ├── app.py         <- Точка входа: обработчики запросов и валидация
│   │
│   ├── script.py      <- Скрипт для создания post-запросов 
│   |
│   ├── tests.py       <- Юнит-тесты для проверки работы приложения
│   │
│   └── data_utils    
│       └── data_utils.py  <- Утилиты для работы с моделью (удобная загрузка модели и датасета, валидация данных из post-запроса)
│
└── setup.py            

Для самых любознательных

Можно обучить модель заново или проверить её тесты.

Обучение модели:

python ml_project/train_test_pipeline.py  --mode=fit --config=config/config_lgbm.yaml

Предикт с помощью модели:

python ml_project/train_test_pipeline.py  --mode=predict --config=config/config_predict.yaml

Тесты модели:

python ml_project/tests/test_full_train_fit_pipeline.py
python ml_project/tests/data/test_get_dataset.py
python ml_project/tests/features/test_transformer.py
python ml_project/tests/models/test_train_model.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors