Tensorflow Serving介绍及部署安装
TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用。更加让人眼前一亮的是,它支持模型热更新与自动模型版本管理。这意味着一旦部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练。
TensorFlow Serving的典型的流程如下:学习者(Learner,比如TensorFlow)根据输入数据进行模型训练。等模型训练完成、验证之后,模型会被发布到TensorFlow Serving系统服务器端。客户端提交请求,由服务端返回预测结果。客户端和服务端之间的通信采用的是RPC协议。
安装方式:
1)使用Docker安装 使用TensorFlow服务的最简单,最直接的方法是通过 Docker镜像。 提示:这也是让TensorFlow服务支持GPU的最简单方法 2)使用APT安装 TensorFlow服务模型服务器二进制文件有两种变体: tensorflow-model-server:完全优化的服务器,使用一些特定于平台的编译器优化,如SSE4和AVX指令。这应该是大多数用户的首选选项,但可能不适用于某些旧机器。 tensorflow-model-server-universal:使用基本优化编译,但不包括特定于平台的指令集
可以使用以下命令升级到tensorflow-model-server的较新版本:
3)从源头构建 从源代码构建的推荐方法是使用Docker。TensorFlow服务Docker开发映像封装了构建自己的TensorFlow服务版本所需的所有依赖项。 |
安装过程(在Kubernetes中部署):
一 导出Inception模型:
克隆Tensorflow服务 克隆TensorFlow服务源到本地计算机:
清除我们的本地模型目录,以防我们已经有一个
导出初始模型 在这里,可以采用不同的方式进行模型导出,主要有bazel和pip两种构建方式,这里以pip为例。 导出Inception模型:
查看导出模型:
|
二 上传Docker镜像
首先,我们
接下来我们将镜像推送到docker私有仓库
|
三 创建Kubernetes部署和服务
部署由Kubernetes部署inception_inference控制的3个服务器 副本组成。副本由Kubernetes服务外部暴露 。
我们使用示例Kubernetes config inception_k8s.yaml创建它们 。
inception_k8s.yaml文件如下:
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: inception-deployment spec: replicas: 3 template: metadata: labels: app: inception-server spec: containers: - name: inception-container image: ***/library/inception_serving:v2.0 ports: - containerPort: 8500 --- apiVersion: v1 kind: Service metadata: labels: run: inception-service name: inception-service spec: ports: - port: 8500 targetPort: 8500 selector: app: inception-server type: NodePort |
- kubectl create -f tensorflow_serving/example/inception_k8s.yaml
- 安装完成后输出:
- deployment "inception-deployment" created
- service "inception-service" created
要查看部署和pod的状态,请执行以下操作:
- $ kubectl get deployments
- NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
- inception-deployment 3 3 3 3 5s
$ kubectl get pods
- NAME READY STATUS RESTARTS AGE
- inception-deployment-bbcbc 1/1 Running 0 10s
inception-deployment-cj6l2 1/1 Running 0 10s
inception-deployment-t1uep 1/1 Running 0 10s
- 要查看服务的状态:
- $ kubectl get services
- NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- inception-service 10.239.240.227 104.155.184.157 /TCP 1
- 一切都可能需要一段时间才能启动和运行。
- $ kubectl describe service inception-service
- Name: inception-service
- Namespace: default
- Labels: run=inception-service
- Selector: run=inception-service
- Type: LoadBalancer
- IP: 10.239.240.227
- LoadBalancer Ingress: 104.155.184.157
- Port: <unset> /TCP
- NodePort: <unset> /TCP
- Endpoints: <none>
- Session Affinity: None
- Events:
- FirstSeen LastSeen Count From SubobjectPath Type Reason Message
- --------- -------- ----- ---- ------------- -------- ------ -------
- 1m 1m {service-controller } Normal CreatingLoadBalancer Creating load balancer
- 1m 1m {service-controller } Normal CreatedLoadBalancer Created load balancer
四 查询模型
我们现在可以从本地主机的外部地址查询服务。
已成功部署Inception模型作为Kubernetes中的服务!
五 主要问题和注意事项:
安装的过程中典型的问题如下:
1) K8s安装中出现的问题:
问题产生的原因主要集中在: ① 在该安装过程中需要翻墙,有些组件由于网络问题安装的不完整,导致出现此类错误,同时,这样的问题是最难排查的,已经安装的组件显示是正常的,由于安装的的组件较多,新手一时间难以排查出没有成功启动的组件。 ② 已经成功安装的组件由于某种操作导致服务关闭,安装过程中遇到了此类问题,短时间内很难解决,当时haproxy和keepalived没有完全启动,执行 ③ 使用的 ~/.kube/config文件不对,需要切换到正确的账户后再执行该命令: 2) 由于官方组件下载需要翻墙的原因,模型成功导出后,要上传到自己的私有镜像库才能直接在k8s中创建pod并应用,这需要自己的私有镜像库。 |
Tensorflow Serving介绍及部署安装的更多相关文章
- Tensorflow Serving Docker compose 部署服务细节(Ubuntu)
[摘要] Tensorflow Serving 是tf模型持久化的重要工具,本篇介绍如何通过Docker compose搭建并调试TensorFlow Serving TensorFlow Servi ...
- Apache Ignite 学习笔记(一): Ignite介绍、部署安装和REST/SQL客户端使用
Apache Ignite 介绍 Ignite是什么呢?先引用一段官网关于Ignite的描述: Ignite is memory-centric distributed database, cachi ...
- tensorflow 模型保存与加载 和TensorFlow serving + grpc + docker项目部署
TensorFlow 模型保存与加载 TensorFlow中总共有两种保存和加载模型的方法.第一种是利用 tf.train.Saver() 来保存,第二种就是利用 SavedModel 来保存模型,接 ...
- 基于TensorFlow Serving的深度学习在线预估
一.前言 随着深度学习在图像.语言.广告点击率预估等各个领域不断发展,很多团队开始探索深度学习技术在业务层面的实践与应用.而在广告CTR预估方面,新模型也是层出不穷: Wide and Deep[1] ...
- TensorFlow Serving简介
一.TensorFlow Serving简介 TensorFlow Serving是GOOGLE开源的一个服务系统,适用于部署机器学习模型,灵活.性能高.可用于生产环境. TensorFlow Ser ...
- Tensorflow 模型线上部署
获取源码,请移步笔者的github: tensorflow-serving-tutorial 由于python的灵活性和完备的生态库,使得其成为实现.验证ML算法的不二之选.但是工业界要将模型部署到生 ...
- Tensorflow serving的编译
Tensorflow serving提供了部署tensorflow生成的模型给线上服务的方法,包括模型的export,load等等. 安装参考这个 https://github.com/tensorf ...
- Tensorflow Serving 模型部署和服务
http://blog.csdn.net/wangjian1204/article/details/68928656 本文转载自:https://zhuanlan.zhihu.com/p/233614 ...
- docker部署tensorflow serving以及模型替换
Using TensorFlow Serving with Docker 1.Ubuntu16.04下安装docker ce 1-1:卸载旧版本的docker sudo apt-get remove ...
随机推荐
- Python—面向对象04 绑定方法
坚持把梳理的知识都给记下来....... 嗯哼哼 1.绑定方法与非绑定方法 在类内部定义的函数,分为两大类: 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 类.boud_m ...
- 任务学习-ucos
1.任务(task)也称作一个线程: 2.一个任务有5种状态:休眠,就绪,运行,挂起,被中断 休眠:任务驻留在程序空间中,还没有交给ucos管理,把任务交给ucos 是通过调用OSTaskCreate ...
- neo4j 安装步骤 转自:http://blog.csdn.net/luoluowushengmimi/article/details/19987995
1. Neo4j简介 Neo4j是一个用Java实现的.高性能的.NoSQL图形数据库.Neo4j 使用图(graph)相关的概念来描述数据模型,通过图中的节点和节点的关系来建模.Neo4j完全兼容A ...
- Knowledge Point 20180305 数据在计算机中的表示
计算机发明的初衷就是用于帮助我们加工和处理数据,虽然时至今天计算机看起来无所不能,但它根本上还是在做数据的加工和处理,数据的机器层次表示将直接影响到计算机的结构和性能. 在计算机中,采用数字化方式来表 ...
- DBCacheServer服务升级
前段时间完成了该服务的设计的功能,花了很多时间和经历,最终完成了一个版本,已经测试了:现在后期再次在以前的基础上,完成了一些扩展. 1.扩展了内存存储 最初版本只是采用了gauva cache进行存储 ...
- CF练习记录
2018/5/6 Codeforces Round #478 (Div. 2) C http://codeforces.com/contest/975/problem/C Valhalla Siege ...
- ci框架 用框架自带db 添加括号,比如 like 等等左右添加括号 解决办法
$this->load->model('station/Station_model','Station'); // East // North $this->Station-> ...
- kali2.0 设置输入法 找了好久,亲测有效
kali2.0更新源启用中文输入法 查看版本信(Version): uname -r uname -r 工具(Tools): fcitx fcitx fcitx-table-wbpy 更新源:(Sou ...
- 解决url传递过程中加号变空格的问题
url传递过程中加号变空格 在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格. 如11+22接收后变成11 22. 要解决这个问题,需要将加号替换为%2B进行传递. 如11%2 ...
- 深入理解is_callable和method_exists
一.函数解析 is_callable() 定义: (PHP 4 >= 4.0.6, PHP 5, PHP 7) is_callable — 检测参数是否为合法的可调用结构 bool is_cal ...