Nginx SageMaker TensorFlow服务堆栈比较

Nginx SageMaker TensorFlow服务堆栈比较,nginx,networking,tensorflow-serving,amazon-sagemaker,serving,Nginx,Networking,Tensorflow Serving,Amazon Sagemaker,Serving,SageMaker似乎给出了使用两种不同的服务堆栈来服务定制docker图像的示例: NGINX+Gunicorn+烧瓶 NGINX+TensorFlow服务 有人能在很高的层次(我对网络工程知之甚少)向我解释一下这些不同的组件有什么职责吗?既然第二个堆栈只有两个组件而不是一个,我能正确地假设TensorFlow服务同时完成Gunicorn和Flask的工作(不管是什么)吗 最后,我读到可以同时使用烧瓶和TensorFlow。这会是NGINX->Gunicorn->Flask->TensorFl

SageMaker似乎给出了使用两种不同的服务堆栈来服务定制docker图像的示例:

  • NGINX+Gunicorn+烧瓶
  • NGINX+TensorFlow服务
  • 有人能在很高的层次(我对网络工程知之甚少)向我解释一下这些不同的组件有什么职责吗?既然第二个堆栈只有两个组件而不是一个,我能正确地假设TensorFlow服务同时完成Gunicorn和Flask的工作(不管是什么)吗


    最后,我读到可以同时使用烧瓶和TensorFlow。这会是NGINX->Gunicorn->Flask->TensorFlow服务吗?这有什么好处呢?

    我将试着从较高的层次回答你的问题。免责声明:我不是你所描述的全部内容的专家,我欢迎你的专家进行更正或补充

    我将从下到上浏览不同的组件:

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

    Flask是一个用于编写web应用程序的python框架。它比TF服务更通用,广泛用于构建web服务,例如在微服务体系结构中

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

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

    TF服务将作为一个功能性应用程序承载您的模型。因此,您不需要gunicorn来为您运行TF服务器应用程序

    Nginx是实际的web服务器,它将承载您的应用程序,处理来自外部的请求并将它们传递给应用程序服务器(gunicorn)。Nginx无法直接与Flask应用程序通信,这就是gunicorn存在的原因

    可能也会有帮助

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