## Деплой моделей машинного обучения
---
## A typical ML workflow
<img src="https://i.imgur.com/dVasgK9.png" style="background:none; border:none; box-shadow:none;">
---
## API JSON
<img src="https://i.imgur.com/OAmBZn2.png" style="background:none; border:none; box-shadow:none;" width="843"
height="507">
---
### JSON
<p style='text-align: justify; font-size: 25pt'>
JSON (JavaScript Object Notation) - простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером.
</p>

---
### Создание проекта
- Pycharm
- venv
- версия python и requirements.txt
---
### Web-фреймворк для API
<img src="https://i.imgur.com/pcJDuUM.png" style="background:none; border:none; box-shadow:none;">
---
### Обработка ошибок
---
### Логгирование
---
### Тестирование
По уровню тестирование бывает:
<div style='text-align: justify; font-size: 25pt'>
<ul>
<li>Модульное / юнит-тестирование – проверка корректной работы отдельных единиц ПО. Этот вид тестирования могут выполнять сами разработчики.</li>
<li>Интеграционное тестирование – проверка взаимодействия между несколькими единицами ПО.</li>
<li>Системное – проверка работы всей системы на соответствие заявленным требованиям к программному продукту.</li>
</ul>
</div>
---
### Модульное тестирование
Фреймворк PyTest
```shell
python -m pytest -vv
```
---
### Пример работы с фронт-системой
---
### Production server
<img src="https://i.imgur.com/au1279Y.jpg" style="background:none; border:none; box-shadow:none;">
---
### Gunicorn
<p style='text-align: justify; font-size: 25pt'>Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX.</p>
```shell
gunicorn -w 4 -b 127.0.0.1:5000 app:app
```
---
### Тестирование производительности
ab - Apache HTTP server benchmarking tool
```shell
ab -c 100 -n 1000 http://127.0.0.1:5000/
```
<div style='text-align: justify; font-size: 25pt'>
-c concurrency - количество параллельных запросов в единицу времени.<br>
-n requests - количество запросов, которое необходимо выполнить в течение сессии тестирования.
</div>
---
### Deploy to Heroku
Procfile:
```shell
web: gunicorn app:app
```
Buildpacks:
```shell
heroku/python
https://github.com/heroku/heroku-buildpack-jvm-common.git
```
---
### gRPC
<div style='text-align: justify; font-size: 25pt'>
gRPC - это высокопроизводительный фреймворк разработанный компанией Google для вызов удаленных процедур (RPC), работает поверх HTTP/2.
<br><br>
Protobuf - формат сериализации, использует строгую типизацию полей и бинарный формат для передачи и данных потребляет значительно меньше ресурсов чем JSON.
</div>
---
### Platforms for managing the machine learning lifecycle
- [MLFlow](https://mlflow.org/)
- [Data Version Control (DVC)](https://dvc.org/doc/use-cases/versioning-data-and-model-files)
- [MetaFlow](https://metaflow.org/)
---
## Thank you
{"metaMigratedAt":"2023-06-15T06:48:25.377Z","metaMigratedFrom":"YAML","title":"Flask ML API","breaks":true,"description":"Введение в git, deploy ML models","slideOptions":"{\"transition\":\"none\",\"progress\":false,\"slideNumber\":true,\"theme\":\"white\"}","contributors":"[{\"id\":\"afb6236d-117e-49ec-841e-c28a3996a432\",\"add\":4138,\"del\":1038}]"}