nginx - SageMaker TensorFlow 服务堆栈比较

标签 nginx networking tensorflow-serving amazon-sagemaker serving

SageMaker 似乎给出了使用两个不同的服务堆栈来提供自定义 Docker 镜像的示例:

  1. NGINX + Gunicorn + Flask
  2. NGINX + TensorFlow 服务

有人可以在非常高的层面上向我解释一下(我对网络工程的了解很少)这些不同的组件有什么职责吗?由于第二个堆栈只有两个组件而不是一个,我是否可以正确地假设 TensorFlow Serving 完成 Gunicorn 和 Flask 的工作(无论是什么)?

最后,我了解到可以同时使用 Flask 和 TensorFlow 服务。那么这会是 NGINX -> Gunicorn -> Flask -> TensorFlow Serving 吗?这样做有什么好处?

最佳答案

我会尽力从高层次上回答您的问题。免责声明:我不是您所描述的全部内容的专家,我欢迎专家的更正或补充。

我将从下到上介绍不同的组件:

TensorFlow Serving 是一个库,用于部署和托管 TensorFlow 模型作为模型服务器,接受带有输入数据的请求并返回模型预测。这个想法是使用 TensorFlow 训练模型,将它们导出为 SavedModel 格式,并通过 TF Serving 为它们提供服务。您可以设置 TF 服务器来接受通过 HTTP 和/或 RPC 的请求。 RPC 的优点之一是请求消息被压缩,这在发送大型负载(例如图像数据)时非常有用。

Flask 是一个用于编写 Web 应用程序的 Python 框架。它比 TF Serving 更通用,并且广泛用于构建 Web 服务,例如在微服务架构中。

现在,Flask 和 TensorFlow 服务的结合应该有意义了。您可以编写一个 Flask Web 应用程序,向用户公开 API 并调用由 TF Serving 托管的 TF 模型。用户使用 API 传输一些数据 (1),Flask 应用程序可能会转换数据(例如,将其包装在 numpy 数组中),调用 TF Server 来获取模型预测 (1) >2)(3),可能会转换预测(例如将大于 0.5 的预测概率转换为类标签 1),并将预测返回给用户 ( 4)。您可以将其想象如下:

enter image description here

Gunicorn 是一种 Web 服务器网关接口(interface) (WSGI),通常用于在生产系统中托管 Flask 应用程序。顾名思义,它是 Web 服务器和 Web 应用程序之间的接口(interface)。当您开发 Flask 应用程序时,您可以在本地运行它来测试它。在生产中,gunicorn 将为您运行该应用程序。

TF Serving 会将您的模型作为功能应用程序托管。因此,您不需要gunicorn来为您运行TF服务器应用程序。

Nginx 是实际的 Web 服务器,它将托管您的应用程序、处理来自外部的请求并将它们传递到应用程序服务器 (gunicorn)。 Nginx 无法直接与 Flask 应用程序对话,这就是gunicorn 存在的原因。

This answer可能也会有帮助。

最后,如果您在云平台上工作,Web 服务器部分可能会为您处理,因此您需要编写 Flask 应用程序并使用 Gunicorn 托管它,或者设置 TF Serving 服务器。

关于nginx - SageMaker TensorFlow 服务堆栈比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54224934/

相关文章:

node.js - 如何处理nginx后面的nodejs错误?

javascript - 如果 Web 服务器端口被阻止,如何使用 JavaScript 检查

c++ - HTTP 代理检测 HTTP 客户端断开连接

Docker 上的 Windows 文件共享被防火墙阻止

networking - Google Chat 服务器如何向数亿客户端推送通知?

Nginx-rtmp vod 播放目录中的文件列表

docker - nginx:[emerg] open() “/var/run/nginx.pid”失败(13:权限被拒绝)

regex - 使用正则表达式从 Tensorflow 2 中的 tf.Tensor 中提取字符串?

TensorFlow 服务 : "No assets to save/writes" when exporting models

python - 如何使用saved_model_cli查询tensorflow 'wide and deep'模型?