【问题标题】:Use Nginx and/or Traefik for serving ML models使用 Nginx 和/或 Traefik 为 ML 模型提供服务
【发布时间】:2021-06-01 21:10:58
【问题描述】:

我有想要服务的基于 python 的机器学习模型。根据我的研究,两个最受欢迎的选项如下:

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

除此之外,我们还可以将 Nginx 作为反向代理(负载平衡、缓存、安全等):

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

我的问题:

  1. 除此之外我还需要使用 Traefik 吗?还是我需要改变 使用 Traefik 的 Nginx?

  2. 如果我有一个只接受 POST 请求的应用程序,我会 仍然需要在 Flask + uWSGI 之上使用 Nginx 和/或 Traefik(或 FastAPI + Uvicorn/Gunicorn)?

  3. 如果我将使用 Tensorflow Serving 或其他 ML 服务解决方案 (Kubeflow、MLflow、Seldon 等)还是建议总结一下 Tensorflow Serving into FastAPI + Uvicorn/Gunicorn + Nginx 或/和 特雷菲克?

附:我正计划使用 Docker 来处理应用程序,并在生产中使用 Swarm 或 Kubernetes。

【问题讨论】:

  • 1:根据您在此处描述的内容,Traefik 将具有与 Nginx 相同的角色——2 和 3:它主要取决于您的部署限制和需求——哪种环境,它只是一个 API ?您有要提供的静态文件吗?但 IMO 你不需要 Nginx/Traefik
  • @Julian 我有一个只有 API 的应用程序和另一个 API + 静态文件服务

标签: nginx machine-learning traefik tensorflow-serving fastapi


【解决方案1】:
  1. 除此之外我还需要使用 Traefik 吗?还是我需要用 Traefik 改变 Nginx?

基于您想使用 Swarm/Kubernetes 部署多个 Docker 容器的事实。我建议你使用像 Traefik 或 Nginx 这样的反向代理。 在我看来,Traefik 更容易学习和配置。 Traefik 还可以使用 Docker 套接字来检测新启动的容器。

这是一篇关于如何为 traefik 设置 swarm 模式的文章:link

  1. 如果我有一个只接受 POST 请求的应用程序,我是否还需要在 Flask + uWSGI(或 FastAPI + Uvicorn/Gunicorn)之上使用 Nginx 和/或 Traefik?

  2. 如果我将使用 Tensorflow Serving 或其他 ML 服务解决方案(Kubeflow、MLflow、Seldon 等),是否仍建议结束 Tensorflow Serving into FastAPI + Uvicorn/Gunicorn + Nginx 或/和 特雷菲克?

正如Julian 在他的评论中已经提到的,这主要取决于您的部署限制和需求。 FastAPI 本身有一个很好的即用型存储库Docker + FastAPI + Uvicorn/Gunicorn

【讨论】:

    猜你喜欢
    • 2018-09-12
    • 2021-05-19
    • 2019-04-21
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2018-01-30
    • 2020-03-06
    相关资源
    最近更新 更多