如何使用 uWSGI 和Nginx 为深度学习模型提供服务

使用 Flask、uWSGI 作为 Web 服务器以及 Nginx 作为反向代理向用户提供 Tensorflow 模型。为什么我们同时需要 uWSGI 和 Flask,为什么我们需要在 uWSGI 之上使用 Nginx,以及一切是如何连接在一起的?

来源:AI夏令营

准备担任机器学习工程师职位?本文是为您而写的!为什么?

因为我们将在 Flask 原型的基础上构建一个功能齐全且可扩展的服务。具体来说,我们将设置一个由 uWSGI 和 Nginx 提供服务的深度学习应用程序。我们将逐步探索一切:从如何从一个简单的 Flask 应用程序开始,连接 uWSGI 以充当完整的 Web 服务器,并将其隐藏在 Nginx 后面(作为反向代理)以提供更强大的连接处理。所有这些都将在我们迄今为止构建的深度学习项目之上完成,该项目使用自定义 Unet 模型和 Tensorflow 对图像执行语义分割。

uWSGI Nginx uWSGI Nginx

在本系列的这一刻之前,我们已经将 colab 笔记本转换为具有单元测试和性能增强功能的高度优化项目,在 Google Cloud 中训练模型,并开发 Flask 原型以便可以将其提供给用户。

单元测试 训练模型 开发 Flask 原型

我们将在此 Flask 原型的基础上进行增强,并构建一个功能齐全且可扩展的服务。

什么是 uWSGI?

根据官方网站:

uWSGI 是一个应用服务器,旨在为开发和部署 Web 应用程序和服务提供全套堆栈。

uWSGI 是一个应用服务器,旨在提供开发和部署 Web 应用和服务的完整堆栈。

与大多数应用服务器一样,它与语言无关,但最流行的用途是为 Python 应用提供服务。 uWSGI 建立在 WSGI 规范之上,它通过名为 uwsgi 的低级协议与其他服务器通信。

好吧,这非常令人困惑,我们需要澄清这一点,所以让我们从一些定义开始。

WSGI 接口 uWSGI 应用程序 uwsgi 协议

如果我是你,我还有两个问题。

我们为什么首先需要 uWSGI 服务器(Flask 还不够吗?)以及为什么我们需要在 uWSGI 前面使用另一个 Web 服务器(例如 Nginx)?

它们都是有效的。

安全性 可扩展性 效率 ,