tensorflow serving部署keras或tf2.0模型

2023-10-31

 

一、安装docker

  • 由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io
  • 更新apt包索引:
 $ sudo apt-get update
  • 安装以下包以使apt可以通过HTTPS使用存储库(repository):
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  • 添加Docker官方的GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 使用下面的命令来设置stable存储库:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  • 再更新一下apt包索引:
$ sudo apt-get update
  • 安装最新版本的Docker CE:
$ sudo apt-get install -y docker-ce

二、模型转为pb文件

def save_model_for_production(model, version='1', path='prod_models'):
    tf.keras.backend.set_learning_phase(1)
    if not os.path.exists(path):
        os.mkdir(path)
    export_path = os.path.join(
        tf.compat.as_bytes(path),
        tf.compat.as_bytes(version))
    builder = tf.compat.v1.saved_model.builder.SavedModelBuilder(export_path)

    model_input = tf.compat.v1.saved_model.build_tensor_info(model.input)
    model_output = tf.compat.v1.saved_model.build_tensor_info(model.output)

    prediction_signature = (
        tf.compat.v1.saved_model.signature_def_utils.build_signature_def(
            inputs={'inputs': model_input},
            outputs={'outputs': model_output},
            method_name=tf.compat.v1.saved_model.signature_constants.PREDICT_METHOD_NAME))

    with tf.compat.v1.keras.backend.get_session() as sess:
        builder.add_meta_graph_and_variables(
            sess=sess, tags=[tf.compat.v1.saved_model.tag_constants.SERVING],
            signature_def_map={
                'predict':prediction_signature,
                tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:prediction_signature
            })
        builder.save()

三、开启服务 

1、准备TF Serving的Docker环境
docker pull tensorflow/serving

2、开启服务
docker run -dt -p 8501:8501 -v /home/wangdong/TextClassification/export_model:/models/export_model -e MODEL_NAME=export_model tensorflow/serving &

3、验证是否开启成功
curl -d '{"instances":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,38,508,980,35,140]]}' -X POST http://localhost:8501/v1/models/export_model:predict

注意:其中export_model为存储.pb文件的文件夹名称

四、tensorflow serving发布多个模型

详文见此博客:https://blog.csdn.net/JerryZhang__/article/details/86516428

1、创建一个多模型配置文件

#从tensorflow-serving git文档上抄下来的

sudo vim {你的tf-serving配置文件根目录}/models.config

贴入以下内容

model_config_list: {

  config: {

    name: "half_plus_two",

    base_path: "/models/half_plus_two",

    model_platform: "tensorflow"

  },

  config: {

    name: "half_plus_three",

    base_path: "/models/half_plus_three",

    model_platform: "tensorflow"

  }

}

2、启动一个docker container

sudo docker run -p 8500:8500 -p 8501:8501 \

--mount type=bind,source={你的tf-serving根目录}/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,target=/models/half_plus_two\

--mount type=bind,source={你的tf-serving根目录}/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_three,target=/models/half_plus_three\

--mount type=bind,source={你的tf-serving配置文件根目录}/models.config,target=/models/models.config \

-t tensorflow/serving --model_config_file=/models/models.config&

3、测试多个模型调用

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

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

注意,注意,注意:版本很重要,我使用的版本是tensorflow1.13.1,其他版本很可能不成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tensorflow serving部署keras或tf2.0模型 的相关文章

随机推荐

  • 如何去编写一个C++程序

    如何去编写一个C 程序 1 防卫式声明 2 写class的头 3 考虑复数准备什么数据 4 考虑复数准备哪些函数 5 类外定义函数 成员函数 6 类外定义函数 非成员函数即全局函数 7 调用函数 学习侯捷老师讲授课程C 面向对象高级开发 总
  • 在浏览器中输入URL中会发生什么

    面试官问 在浏览器中输入URL中会发生什么 我们首先分析下这个问题 这是一个很宽泛 细节非常非常多的一个问题 如果要展开来细说我们可以直接从应用层的协议 讲到传输层 网络层 再到数据链路层 可是我们这里不建议大家一开始就深挖协议中的细节 原
  • Unity 视频播放

    Unity 视频播放 前言 在Unity引擎做视频播放的方式有很多种 这里介绍两种 一种是使用RawImage组件的纹理进行视频播放 将视频每一帧的画面复制在RawImage的纹理贴图中 实现视频的播放展示 另外一种是使用插件Av Pro进
  • node.js系统学习4-sync&&async

    async异步 sync同步 阻塞 非阻塞 https www runoob com nodejs nodejs callback html
  • PASCAL VOC 2012 数据集解析

    目录 一 Introduction Classification Detection Competitions Segmentation Competition Action Classification Competition Image
  • IDEA创建第一个spring boot项目提示cannot resolve xxx等错误

    在学习spring boot课程 精通spring boot 42讲 时 根据课程安装好maven和jdk之后 准备开始使用IDEA创建第一个spring boot项目 使用插件spring assistant创建好项目之后 却发现包org
  • python爬虫时报错

    我用的是Python3 66版本 最近写了一段爬虫代码 在DEBUFG模式运行时没有报错 但是普通模式运行时就报下面这个错误 wrap socket argument 1 must be socket socket not SSLSocke
  • (附源码)springboot垃圾自动分类管理系统 毕业设计 160846

    摘 要 随着现在网络的快速发展 网络的应用在各行各业当中它很快融入到了许多分类管理之中 他们利用网络来做这个垃圾自动分类的网站 随之就产生了 垃圾自动分类管理系统 这样就让垃圾自动分类管理系统更加方便简单 对于本垃圾自动分类管理系统的设计来
  • Matlab绘图?学会一招就够了——源代码

    hello 欢迎来到我的博客 你应该是b站来的小伙伴吧 谢谢你的关注 这篇博客的内容是以下这个视频的源代码 Matlab绘图 学会一招就够了 代码如下 clc clear all close all 生成图窗 clc 清楚command窗口
  • 双向卷积神经网络_基于双向特征融合卷积神经网络的液晶面板缺陷检测算法

    基于双向特征融合卷积神经网络的液晶面板缺陷检测算法 彭大芹 刘恒 许国良 邓柯 摘 要 摘要 针对手机液晶面板生产工业中缺陷检测面临的精度低的问题 提 出了一种基于深度学习的液晶面板缺陷检测算法 该算法在传统单向特征融合 的基础上提出了双向
  • Windows上运行Caffe自带的mnist例子

    环境要求 win10 VS2013 CUDA7 5 Caffe的windows版下载地址 https github com Microsoft caffe 配置Caffe工程 1 将Caffe源码的windows目录下CommonSetti
  • 第十三届蓝桥杯大赛软件赛决赛(Java 大学A组)

    蓝桥杯 2022年国赛真题 Java 大学A组 试题 A 火柴棒数字 试题 B 小蓝与钥匙 试题 C 内存空间 试题 D 斐波那契数组 试题 E 交通信号 试题 F 数组个数 试题 G 六六大顺 试题 H 选素数 试题 I 图书借阅 试题
  • GFS浅谈

    GFS Google File System Big Table Map Reduce作为google的三宝技术 是Google诸多服务的基石 我想就自己的理解对GFS文件系统作一个分析 GFS首先是属于分布文件系统 但作为Google公司
  • PAT C入门题目练习-7-90 螺旋方阵 (20 分)

    7 90 螺旋方阵 20 分 所谓 螺旋方阵 是指对任意给定的N 将1到N N的数字从左上角第1个格子开始 按顺时针螺旋方向顺序填入N N的方阵里 本题要求构造这样的螺旋方阵 输入格式 输入在一行中给出一个正整数N lt 10 输出格式 输
  • C#中的一些基本方式总结

    目录 1 委托delegate c 中的将方法作为参数传递 2 堆和栈 3 override重写 4 new关键字 如果子类声明了和父类同样的方法 但用new声明了 会隐藏掉父类的方法 5this和base 6 sealed类 7 泛型方法
  • python中的sort排序_python的sort()怎么排序

    python中的sort 函数只能应用在列表list上 而sorted可以对所有可迭代的对象进行排序的操作 sort方法会在原list上直接进行排序 不会创建新的list 而sorted方法不会对原来的数据做任何改动 排序后的结果是新生成的
  • JavaSE + bluecove 蓝牙连接

    最近公司准备将旧系统的 NET部分翻版 项目除了有后台的还有个与设备对接的客户端用蓝牙连接的 所有这周对相关技术做了一个验证 搜了一下Java 蓝牙相关信息 我去资料也太少了 少也就算了连bluecove库也是有问题的 经过艰难的查找 最终
  • 内核编译出错 [arch/arm/boot/compressed/piggy.lzo] Error 1

    项目场景 linux4 x 内核编译出现错误 问题现象 编译打印输出 arch arm boot compressed Makefile 180 recipe for target arch arm boot compressed pigg
  • RabbitMQ解决消息幂等性问题

    前言 关于MQ消费者的幂等性问题 在于MQ的重试机制 因为网络原因或客户端延迟消费导致重复消费 使用MQ重试机制需要注意的事项以及如何解决消费者幂等性问题以下将逐一讲解 1 RabbitMQ自动重试机制 消费者在消费消息的时候 如果消费者业
  • tensorflow serving部署keras或tf2.0模型

    一 安装docker 由于apt官方库里的docker版本可能比较旧 所以先卸载可能存在的旧版本 sudo apt get remove docker docker engine docker ce docker io 更新apt包索引 s