使用Nginx+uwsgi+Flask+TensorFlow Serving实现深度学习模型部署。
环境
- Ubuntu16.04
- python3.x
- tensorflow1.14
Nginx+uwsgi+Flask
-
安装
pip install uwsgi
pip install flask
apt-get install nginx -
配置服务
参考:https://www.jianshu.com/p/76b28c7e71cc
TensorFlow Serving
-
介绍
TensorFlow Serving是GOOGLE开源的一个服务系统,适用于部署机器学习模型,灵活、性能高、可用于生产环境。 TensorFlow Serving可以轻松部署新算法和实验,同时保持相同的服务器架构和API,它具有以下特性:支持模型版本控制和回滚
支持并发,实现高吞吐量
开箱即用,并且可定制化
支持多模型服务
支持批处理
支持热更新
支持分布式模型 -
docker安装TensorFlow Serving
docker pull tensorflow/serving -
测试
参考:https://www.jianshu.com/p/d11a5c3dc757 -
模型格式转换
参考:https://www.jianshu.com/p/d11a5c3dc757 -
多模型部署
参考:https://www.jianshu.com/p/d11a5c3dc757 -
模型调用
参考:https://www.jianshu.com/p/d11a5c3dc757
web服务
TensorFlow模型的计算图,一般输入的类型都是张量,你需要提前把你的图像、文本或者其它数据先进行预处理,转换成张量才能输入到模型当中。而一般来说,这个数据预处理过程不会写进计算图里面,因此当你想使用TensorFlow Serving的时候,需要在客户端上写一大堆数据预处理代码,然后把张量通过gRPC发送到serving,最后接收结果。现实情况是你不可能要求每一个用户都要写一大堆预处理和后处理代码,用户只需使用简单POST一个请求,然后接收最终结果即可。因此,这些预处理和后处理代码必须由一个“中间人”来处理,这个“中间人”就是Web服务。关于此部分可以以后再详细介绍。