tensorflow serving (二):发布自己的服务

https://www.jianshu.com/p/d673c9507988
通过简单运行了官网例子,对tensorflow serving有了大致的了解,但是怎么把自己的模型发布成服务呢?现在通过一个小例子来学习下。

0. 介绍

这里介绍两种保存模型的方式,发布服务需要的不再是之前保存的ckpt格式数据,而是export出来的模型或者pb模型。通过这两种方式把模型准备好,之后只需要挂在到指定路径下,就可以起服务了。

1. 1 exporter 模型

把官方的half_plus_two简单修改成了half_plus_ten。
与我们保存ckpt不同,需要调用的接口是:

from tensorflow.contrib.session_bundle import exporter

需要把输入输出给重新定义下,然后再用接口导出。

import tensorflow as tf
from tensorflow.contrib.session_bundle import exporter


def Export():
  export_path = "model/half_plus_ten"
  with tf.Session() as sess:
    # Make model parameters a&b variables instead of constants to
    # exercise the variable reloading mechanisms.
    a = tf.Variable(0.5)
    b = tf.Variable(10.0)

    # Calculate, y = a*x + b
    # here we use a placeholder 'x' which is fed at inference time.
    x = tf.placeholder(tf.float32)
    y = tf.add(tf.multiply(a, x), b)

    # Run an export.
    tf.global_variables_initializer().run()
    export = exporter.Exporter(tf.train.Saver())
    export.init(named_graph_signatures={
        "inputs": exporter.generic_signature({"x": x}),
        "outputs": exporter.generic_signature({"y": y}),
        "regress": exporter.regression_signature(x, y)
    })
    export.export(export_path, tf.constant(123), sess)


def main(_):
  Export()

if __name__ == "__main__":
    tf.app.run()

保存好的模型看起来很像ckpt,但是再checkpoint里面可以看到,是“export”。 “00000123”这个文件名是自动生成的,我也不知道为什么会刚好是这个数字。


保存好的模型

1.2 保存pb模型

https://www.jianshu.com/p/9221fbf52c55 通过这个教程,我们把模型保存为pb格式。同样把这个模型文件夹挂在到docker相应的目录下。

保存为pb模型

2. 通过docker起服务

要指定端口,挂载目录,docker才能访问这个模型,挂在的目录得是绝对路径。

  1. export之后的模型挂载。
docker run -t --rm -p 8501:8501 \
   -v "$(pwd)/model/half_plus_ten:/models/half_plus_ten" \
   -e MODEL_NAME=half_plus_ten \
   tensorflow/serving
  1. pb模型需要修改挂载路径,可以重新给模型起名字,这里还是用上面的名字“half_plus_ten"。
docker run -t --rm -p 8501:8501 \
   -v "$(pwd)/pb_model:/models/half_plus_ten" \      
   -e MODEL_NAME=half_plus_ten \
   tensorflow/serving

3. 测试服务

给它几个值来测试下这个服务。

curl -d '{"instances": [1.0, 2.0, 5.0]}' -X POST http://localhost:8501/v1/models/half_plus_ten:predict

能得到half plus ten这个结果!


输出正确

用python代码访问服务

import os

import requests
from time import time

import numpy as np

url = 'http://localhost:8501/v1/models/half_plus_ten:predict'

a = np.array([1,2 ,3,4])

predict_request = '{"instances" : [{"input": %s}]}' % list(a)  # 一定要list才能传输,不然json错误


print("start")
start_time = time()
r = requests.post(url,data=predict_request)
print(r.content)
end_time = time()

Tips:

代码改写自官方例子:https://github.com/tensorflow/serving/blob/master/tensorflow_serving/servables/tensorflow/testdata/export_half_plus_two.py
代码和模型都放在:
https://github.com/xxlxx1/learing_tf_serving

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355