tensorflow是目前最受欢迎的deep learning框架之一,在学术界和产业界都有广泛的使用。在如何部署tensorflow模型提供远程调用服务方面官方提供了tensorflow serving框架,详细的介绍可以参考官网资料:https://tensorflow.github.io/serving/。本文主要介绍另一条部署服务的途径:利用flask快速搭建tensorflow http服务。
对于使用Python的同学来说,用flask搭建tensorflow http服务非常方便,而且不需要依赖太多的第三方插件。下面以一个简单的例子介绍具体的步骤:
1、 非阻塞异步flask服务:
import os
from gevent
import monkey
monkey.patch_all()
from flask
import Flask, request
from gevent
import wsgi
import tensorflow
as tf
os.environ[
"CUDA_VISIBLE_DEVICES"] =
""
a = tf.placeholder(tf.int32, shape=(), name=
"input")
asquare = tf.multiply(a, a, name=
"output")
sess = tf.Session()
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World'
@app.route('/hello')
def response_request():
num = request.args.get(
'num')
for i
in range (
100):
ret = sess.run([asquare], feed_dict={a: num})
return str(ret)
if __name__ ==
"__main__":
server = wsgi.WSGIServer((
'127.0.0.1',
19877), app)
server.serve_forever()
2、gunicorn配置文件:如果只需要提供单线程http服务,直接运行上面那段代码即可,但是如果要运行多进程,则需要用gunicorn来启动多个进程,gunicorn配置文件模板如下:
import os
bind =
'0.0.0.0:19879'
workers =
10
backlog =
2048
worker_class =
"gevent"
debug =
True
chdir =
'/.../test'
proc_name =
'gunicorn.proc'
3、 启动多进程服务:
gunicorn
-k gevent
-c gun_basic
.conf gevent_basic:app
其中:
gun_basic
.conf:gunicorn配置文件
gevent_basic:启动gevent服务python文件
app:Flask实例
在浏览器中输入 127.0.0.1:19879/hello?num=10 可以看到返回结果 [100]。