我会尝试在高层次上回答你的问题。免责声明:我不是您所描述的所有方面的专家,我欢迎来自专家的更正或补充。
我将从下到上介绍不同的组件:
TensorFlow Serving是一个库,用于将 TensorFlow 模型部署和托管为模型服务器,接受带有输入数据的请求并返回模型预测。这个想法是使用 TensorFlow 训练模型,将它们导出为 SavedModel 格式并使用 TF Serving 为它们提供服务。你可以设置一个 TF Server 来接受通过 HTTP 和/或 RPC 的请求。RPC 的一个优点是请求消息是经过压缩的,这在发送大型有效负载(例如图像数据)时非常有用。
Flask是一个用于编写 Web 应用程序的 Python 框架。它比 TF Serving 更通用,并且广泛用于构建 Web 服务,例如在微服务架构中。
现在,Flask 和 TensorFlow 服务的结合应该是有意义的。您可以编写一个 Flask Web 应用程序,该应用程序向用户公开 API,并在后台调用由 TF Serving 托管的 TF 模型。用户使用 API 传输一些数据(1),Flask 应用程序可能会转换数据(例如,将其包装在 numpy 数组中),调用 TF Server 以获取模型预测(2)(3),可能会转换预测(例如将大于 0.5 的预测概率转换为类别标签 1),并将预测返回给用户(4)。您可以将其可视化如下:

Gunicorn是一个 Web 服务器网关接口 (WSGI),通常用于在生产系统中托管 Flask 应用程序。顾名思义,它是 Web 服务器和 Web 应用程序之间的接口。当你在开发一个 Flask 应用时,你可以在本地运行它来测试它。在生产中,gunicorn 将为您运行该应用程序。
TF Serving 会将您的模型作为功能应用程序托管。因此,您不需要 gunicorn 来为您运行 TF Server 应用程序。
Nginx是实际的 Web 服务器,它将托管您的应用程序,处理来自外部的请求并将它们传递给应用程序服务器(gunicorn)。Nginx 不能直接与 Flask 应用程序对话,这就是 gunicorn 存在的原因。
这个答案也可能会有所帮助。
最后,如果您在云平台上工作,Web 服务器部分可能会为您处理,因此您需要编写 Flask 应用程序并使用 gunicorn 托管它,或者设置 TF Serving 服务器。