Используйте Nginx и / или Traefik для обслуживания моделей машинного обучения.

У меня есть модель машинного обучения на основе Python, которую я хочу обслуживать. Основываясь на моем исследовании, два наиболее популярных варианта:

I. Flask + uWSGI
II. FastAPI + Uvicorn with Gunicorn

Вдобавок к этому мы можем использовать Nginx как обратный прокси (балансировка нагрузки, кеширование, безопасность и т. Д.):

I. Flask + uWSGI + Nginx 
II. FastAPI + Uvicorn/Gunicorn + Nginx 

Мои вопросы:

  1. Нужно ли мне дополнительно использовать Traefik? Или мне нужно сменить Nginx с помощью Traefik?

  2. Если у меня есть приложение, которое принимает только запросы POST, нужно ли мне по-прежнему использовать Nginx и / или Traefik поверх Flask + uWSGI (или FastAPI + Uvicorn / Gunicorn)?

  3. Если я буду использовать Tensorflow Serving или другие решения для обслуживания машинного обучения (Kubeflow, MLflow, Seldon и т. Д.), Рекомендуется ли включать Tensorflow Serving в FastAPI + Uvicorn / Gunicorn + Nginx и / или Traefik?

P.S. Я планирую конфигурировать приложения с помощью Docker и использовать Swarm или Kubernetes в продакшене.


person illuminates    schedule 01.06.2021    source источник
comment
1: Traefik будет иметь ту же роль, что и Nginx, в зависимости от того, что вы здесь описали - 2 и 3: в основном это будет зависеть от ваших ограничений и потребностей развертывания - какая среда, это только API? У вас есть статические файлы для обслуживания? но IMO вам не нужен Nginx / Traefik   -  person Julian    schedule 02.06.2021
comment
@Julian У меня есть одно приложение, в котором есть только API, и еще один API + статические файлы для обслуживания   -  person illuminates    schedule 02.06.2021


Ответы (1)


  1. Нужно ли мне дополнительно использовать Traefik? Или мне нужно сменить Nginx с помощью Traefik?

Исходя из того, что вы хотите развернуть несколько контейнеров Docker с помощью Swarm / Kubernetes. Я бы посоветовал вам использовать обратный прокси, например Traefik или Nginx. На мой взгляд, Traefik легче изучить и настроить. Traefik также может использовать сокет Docker для обнаружения новых запущенных контейнеров.

Вот статья о том, как настроить режим роя для traefik: ссылка

  1. Если у меня есть приложение, которое принимает только запросы POST, нужно ли мне по-прежнему использовать Nginx и / или Traefik поверх Flask + uWSGI (или FastAPI + Uvicorn / Gunicorn)?

  2. Если я буду использовать Tensorflow Serving или другие решения для обслуживания машинного обучения (Kubeflow, MLflow, Seldon и т. Д.), Рекомендуется ли включать Tensorflow Serving в FastAPI + Uvicorn / Gunicorn + Nginx и / или Traefik?

Как Джулиан уже упоминал в своем комментарии, это в основном зависит от ваших ограничений развертывания и потребностей. Сам FastAPI имеет отличный готовый репозиторий с Docker + FastAPI + Uvicorn / Gunicorn < / а>.

person lynx    schedule 03.06.2021