您现在的位置是:首页 > 文章详情

tensorflow serving docker

日期:2019-03-02点击:392

背景介绍

TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用。更加让人眼前一亮的是,它支持模型热更新与自动模型版本管理。这意味着一旦部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练。

TensorFlow Serving的典型的流程如下:学习者(Learner,比如TensorFlow)根据输入数据进行模型训练。等模型训练完成、验证之后,模型会被发布到TensorFlow Serving系统服务器端。客户端提交请求,由服务端返回预测结果。客户端和服务端之间的通信采用的是RPC/REST协议


官方资料

TensorFlow Serving的中文版资料不多,所以能做的基本上就是参考英文官网的文档,一个是tensorflow serving github官网,一个是tensorflow serving web官网,前者能够稳定打开,后者看天看心情能否打开。

建议选型tensorflow serving作为tensorflow服务容器的一定要熟读tensorflow serving web官网,要对每个细节扣的很细,这样才能了解TFS能够提供的核心能力。

补充一点,之前在调研资料的时候发现阿里云也提供基于TFS提供在线预测的云能力,特想了解他们如何解决cpu高消耗的问题


安装选型

tensorflow serving提供三种安装方式:1、docker安装、2、通过APT安装、3、编译源码,本着快速验验证的原则我们自然而然的选择了docker安装。

其实按照我们当时的试想如果TFS在性能上有比较明显优势我们可以通过K8S管理docker这样能够非常方便的升级TFS的版本。

TFS的官方提供的docker可以在TFS的docker官网找到,根据不同的TF版本和是否GPU进行选型,参考当时情况的是TF是1.6.0版本,TFS选型1.12.0,没仔细研究过TFS和TF之间的关系,但是按照TF的版本逻辑在同一个大版本1.X的情况下兼容低版本的API,所以TFS版本更高兼容。

补充一点,一开始使用TFS最新版本的时候在java API调用方面有些兼容性问题(具体原因没仔细分析),个人建议是TFS的docker版本和编译java api的TFS版本保持一致


安装命令

TFS的启动命令需要参考TFS本身的命令和docker相关的命令,前者指定TFS的启动参数,后者指定docker的端口和目录映射问题。

docker run -t --rm -p 8500:8500 -p 8501:8501 -v /home/zhi.wang/tensorflow-serving/model:/models -e MODEL_NAME=wdl_model tensorflow/serving:1.12.0 --enable_batching=true --batching_parameters_file=/models/batching_parameters.txt &

说明:

  • -p 8500:8500 -p 8501:8501 用于绑定rpc和rest端口。
  • -v /home/zhi.wang/tensorflow-serving/model:/models 用于绑定目录映射。
  • -e MODEL_NAME=wdl_model指定TFS加载模型名字,和目录tensorflow-serving/model下的模型名字保持一致, 如/home/zhi.wang/tensorflow-serving/model/wdl_model
  • --enable_batching=true 设置TFS开启batch功能。
  • --batching_parameters_file=/models/batching_parameters.txt 绑定批量参数。


batching_parameters

num_batch_threads { value: 40 } batch_timeout_micros { value: 0 } max_batch_size { value: 1024 }

说明:

  • 参考github issue设置的TFS的批量参数。


model directory

[wdl_model]# tree . ├── 1 │   ├── saved_model.pb │   └── variables │   ├── variables.data-00000-of-00001 │   └── variables.index ├── 10 │   ├── saved_model.pb │   └── variables │   ├── variables.data-00000-of-00001 │   └── variables.index ├── 2 │   ├── saved_model.pb │   └── variables │   ├── variables.data-00000-of-00001 │   └── variables.index ├── 3 │   ├── saved_model.pb │   └── variables │   ├── variables.data-00000-of-00001 │   └── variables.index ├── 4 │   ├── saved_model.pb │   └── variables │   ├── variables.data-00000-of-00001 │   └── variables.index

说明:

  • TFS支持多版本的模型加载,默认会加载数字最大的版本。
  • TFS加载的模型通过export_savedmodel的api生成。
原文链接:https://yq.aliyun.com/articles/692124
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章