2015-12-02 152 views
18

是否有通过RESTful API部署Tensorflow模型的示例代码?我看到了命令行程序和移动应用程序的示例。有没有这样的框架,或者人们只是通过Web框架(如Flask)加载模型并展示预测方法来接受输入(例如通过JSON)并返回响应?我所说的框架是指对大量的预测请求进行缩放。当然,由于模型是不可变的,我们可以启动预测服务器的多个实例,并将其放在负载平衡器(如HAProxy)之后。我的问题是,人们是使用一些框架来做这件事还是从头开始,或者,这在Tensorflow中已经可用,我没有注意到它。通过RESTful API部署Tensorflow模型的示例

+0

我找到了一个简单的Flask示例,并将答案放在底部。这是你正在寻找的东西吗?请让我知道否则,我会删除答案。 顺便说一下,我还没有测试与TensorFlow服务的性能,但Flask版本似乎对我来说体面。 –

回答

17

TensorFlow Serving是一款面向机器学习模型的高性能开源服务系统,专为生产环境而设计,并针对TensorFlow进行了优化。最初版本包含使用gRPC构建的示例,但您可以使用RESTful API轻松替换前端(在下图中表示为“客户端”)以满足您的需求。

enter image description here

为了快速上手,检查出tutorial

22

https://github.com/sugyan/tensorflow-mnist通过使用Flask和加载预先训练的模式(恢复)显示了一个简单的restAPI示例。

@app.route('/api/mnist', methods=['POST']) 
def mnist(): 
    input = ((255 - np.array(request.json, dtype=np.uint8))/255.0).reshape(1, 784) 
    output1 = simple(input) 
    output2 = convolutional(input) 
    return jsonify(results=[output1, output2]) 

此外,请参阅在线演示https://tensorflow-mnist.herokuapp.com/。看起来API足够快。