tensorflow-serving-gpu 本地编译并使用
因为要部署,模型比较大,所以通常官网的pip install 和bazel 教程编译的都是cpu版本的代码,
所以为了感受下gpu就尝试自己编译了,首先,下载源码:
git clone --recurse-submodules https://github.com/tensorflow/serving
这里有个坑,下载玩serving代码后还要在在子模块,但是子模块主要包含两个:
tensorflow
tf_models
tensorflow是蛮快下载的,但是,tf_models却很麻烦,网速慢还文件大。后面我没下载下来
就直接取消了,不过这样就可以了。然后:
cd tensorflow
./configure
配置下就行,关于support,只留cuda相关配置就好了,有一个要注意的,对于cuda路径我经常写/usr/local/cuda,但是常失败,后面尝试/usr/local/cuda-8.0 就ok(我的是cuda8.0,/usr/local/cuda实际指向的是/usr/local/cuda-8.0)。
bazel build -c opt --config=cuda tensorflow_serving/...
然后,当然啦,报了一个通常的错误关于crosstool的。
tensorflow/third_party/gpus/crosstool
解决方法:https://github.com/tensorflow/serving/issues/186#issuecomment-251152755
1. the crosstool in tools/bazel.rc
is invalid (AFAIK). change @org_tensorflow//third_party/gpus/crosstool
to @local_config_cuda//crosstool:toolchain
.
2. the cuda_configure
repository rule will fail (haven't looked in to why exactly), but essentially an bazel clean --expunge && export TF_NEED_CUDA=1
will fix this.
简单地讲就是,打开tools/bazel.rc文件,修改@org_tensorflow//third_party/gpus/crosstool
替换为 @local_config_cuda//crosstool:toolchain (一般是第一行)
然后在serving目录下执行bazel clean --expunge && export TF_NEED_CUDA=1 就可以了。
不过,好戏才刚开始,你会发现报各种错,可能是bazel的,可能是cuda的。反正缺这缺那的,我编译个model_server,容易吗????对呀,我只编译model server呀。修改策略:
bazel build -c opt --config=cuda //tensorflow_serving/model_servers:tensorflow_model_server
经过若干时间的等待,终于ok了,之前报错是因为很多七七八八用不到的都在编译了。蛋疼!!!!
使用就很简单啦,看官网。
tensorflow-serving-gpu 本地编译并使用的更多相关文章
- tensorflow serving GPU编译问题
编译gpu版本:bazel build -c opt --config=cuda --spawn_strategy=standalone //tensorflow_serving/model_serv ...
- Tensorflow r1.12及tensorflow serving r1.12 GPU版本编译遇到的问题
1.git clone tensorflow serving 及tensorflow代码 2. ERROR: /root/.cache/bazel/_bazel_root/f71d782da17fd8 ...
- Tensorflow serving的编译
Tensorflow serving提供了部署tensorflow生成的模型给线上服务的方法,包括模型的export,load等等. 安装参考这个 https://github.com/tensorf ...
- 基于TensorFlow Serving的深度学习在线预估
一.前言 随着深度学习在图像.语言.广告点击率预估等各个领域不断发展,很多团队开始探索深度学习技术在业务层面的实践与应用.而在广告CTR预估方面,新模型也是层出不穷: Wide and Deep[1] ...
- Tensorflow Serving介绍及部署安装
TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库.它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用.更加让人眼前一亮的是,它支持 ...
- 学习笔记TF067:TensorFlow Serving、Flod、计算加速,机器学习评测体系,公开数据集
TensorFlow Serving https://tensorflow.github.io/serving/ . 生产环境灵活.高性能机器学习模型服务系统.适合基于实际数据大规模运行,产生多个模型 ...
- tensorflow 模型保存与加载 和TensorFlow serving + grpc + docker项目部署
TensorFlow 模型保存与加载 TensorFlow中总共有两种保存和加载模型的方法.第一种是利用 tf.train.Saver() 来保存,第二种就是利用 SavedModel 来保存模型,接 ...
- TensorFlow Serving简介
一.TensorFlow Serving简介 TensorFlow Serving是GOOGLE开源的一个服务系统,适用于部署机器学习模型,灵活.性能高.可用于生产环境. TensorFlow Ser ...
- Setup Tensorflow with GPU on Mac OSX 10.11
Setup Tensorflow with GPU on OSX 10.11 环境描述 电脑:MacBook Pro 15.6 CPU: 2.7GHz 显卡: GT 650m 系统:OSX 10.11 ...
随机推荐
- File类相关操作
1.File类常见方法: 创建: boolean createNewFile():在指定位置创建文件 如果该文件已经存在,则不创建,返回false,和输出流不一样,输出流对象一建立就创立文件,而且文件 ...
- CentOS 7 命令行安装TeamViewer
由于要通过要远程登录到内网的电脑(一台笔记本),用于在紧急情况下处理服务器故障.刚开始准备使用ssh端口转发,无奈vps转发速度太慢. 后面考虑使用TeamViewer远程控制Windows桌面,但是 ...
- matlab学习(3) 保存和导入工作区
1.保存和导入工作区变量mat文件 假如创建了两个矩阵A=[1,2;3,4],B=[0,1;1,0] 则工作区就是这样的: 当函数有一个数据量非常大的返回值时,每次调用函数都要执行一遍函数,每次都要等 ...
- ArcMap 图层无法编辑
原因一.图层被其他程序占用 解决方法:关闭与之相关的程序与服务 原因二.没有开启编辑 解决方法:打开编辑器工具>>选项>>版本管理>>勾选或取消勾选编辑数据库版本并 ...
- hadoop 单机模式 伪分布式 完全分布式区别
1.单机(非分布式)模式 这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统,一般仅用于本地MR程序的调试 2.伪分布式运行模式 这种模式也是在一台单机上运行,但用不同的 ...
- vi常用命令及快捷键
vi常用快捷键 1)移动光标 h :光标左移一个字符j :光标上移一个字符k :光标下移一个字符l :光标右移一个字符 0 :光标移至行首$ :光标移至行尾 H :光标移至屏幕首行M :光标移至屏幕中 ...
- ubuntu 16.04 更换源
进入/etc/apt/ cd /etc/apt 在修改前先对 sources.list文件进行备份 sudo cp sources.list sources.list.bak 修改sources.li ...
- mysql命令行使用
连接数据库 mysql -P 端口号 -h 远程机地址/ip -u 用户名 -p mysql -uroot -p123456 修改数据库密码 mysqladmin -uroot -p123456 ...
- SQL-触发器-011
什么事触发器? 触发器是一种特殊的存储过程,当表中的数据发生改变时触发器自动生效: 触发器无法通过名称调用,也不允许设置参数. 触发器的类型: DML触发器(数据操作语言触发器-insert/upda ...
- c# automapper 使用(一)
一.最简单的用法 有两个类User和UserDto public class User { public int Id { get; set; } public string Name { get; ...