第一步,安装docker

第二步,docker的tensorflow serving镜像安装,有两种,一个是CPU版本,一个是GPU版本(重要)

在后面需要简单测试下tensorflow serving+docker环境是否成功,这里我们使用tensorflow serving源码中的模型,所以首先将tensorflow serving源码克隆到自己的电脑中,命令:

git clone https://github.com/tensorflow/serving

下载完之后,你可以看到当前目录下多了一个serving文件夹。

接下来docker中tensorflow serving镜像安装

1. CPU版本

一行命令搞定:docker pull tensorflow/serving

pull完CPU tensorflow/serving镜像之后,通过命令docker images可以看到多了一个tensorflow/serving,如下图所示:

 

tensorflow的docker安装 docker tensorflow serving_tensorflow的docker安装

现在我们可以用tensorflow serving源码文件夹中的模型来检测是否成功,命令:

docker run --runtime=nvidia -p 8501:8501 \
--mount type=bind,\
source=/path/to/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,\
target=/models/half_plus_two \
-e MODEL_NAME=half_plus_two -t tensorflow/serving &

注:这里的source就是你之前克隆的tfserving源码中saved_model_half_plus_two_cpu模型的绝对路径,例如你放在/home/xx中,那么就是/home/xx/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,       -t tensorflow/serving就是选择我们刚刚pull成功的tensorflow serving的CPU镜像

运行之后,如果显示如下,则服务成功:

tensorflow的docker安装 docker tensorflow serving_Tensorflow serving_02

接下来可以另开一个终端请求服务

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

若显示结果为:

{ "predictions": [2.5, 3.0, 4.5] }

CPU版本的tensorflow serving+docker的环境安装成功。

 2. GPU版本

一般我们的模型都是需要GPU的,所以重要的还是GPU版本的安装。

首先我们需要安装nvidia-docker(这里假设你的系统已经安装好了CUDA以及cudnn),有些资料上是直接安装的nvidia-docker镜像,但这个镜像对cuda版本要求很高,需要10.0以上,而我的系统是8.0,明显不支持,升级cuda比较麻烦,可以通过https://hub.docker.com/r/nvidia/cuda/这个网址中查看符合自己cuda版本的docker环境的nvidia-docker,例如我的系统是ubuntu16.04, cuda8.0,我安装的是8.0-devel:

docker pull nvidia/cuda:8.0-devel

安装成功后可以通过docker images查看,并且可以通过 docker run --runtime=nvidia --rm nvidia/cuda:8.0-devel nvidia-smi来看是否可用,若可用,则显示如下(nvidia-smi命令就是查看GPU使用情况的):

tensorflow的docker安装 docker tensorflow serving_Docker_03

nvidia-docker安装成功后,就需要安装tfserving gpu镜像了,网上给的资料 直接docker pull tensorflow/serving:latest-gpu对cuda的版本要求还是很高,这里可以查看https://hub.docker.com/r/tensorflow/serving/tags网址,选择适合的版本,例如我选择的是1.11.1-gpu版本,然后命令行是:docker pull tensorflow/serving:1.11.1-gpu,同样,安装成功后可以通过docker images查看pull成功的镜像,然后通过模型来验证是否成功(选择源码中half_plus_two_gpu模型):

docker run --runtime=nvidia -p 8501:8501 \
--mount type=bind,\
source=/path/to/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_gpu,\
target=/models/half_plus_two \
-e MODEL_NAME=half_plus_two -t tensorflow/serving:1.11.1-gpu &

同cpu版本一样,出现如上显示,则服务成功:

tensorflow的docker安装 docker tensorflow serving_Ubuntu16.04_04

接下来测试调用:

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

出现错误,不能出现结果,在网上找资料,知道是我的tensorflow/serving:1.11.1-gpu版本过低导致,所以我又安装了tensorflow/serving:1.12.0-gpu,运行服务,测试,成功:

docker run --runtime=nvidia -p 8501:8501 \
--mount type=bind,\
source=/path/to/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_gpu,\
target=/models/half_plus_two \
-e MODEL_NAME=half_plus_two -t tensorflow/serving:1.12.0-gpu &

测试调用:

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

结果如CPU版本。

综上,就是我的Ubuntu16.04 + tensorflow serving + Docker环境安装,如果对你有用,不要忘记点赞哦 *—*。

后面,我会写怎么将自己的模型用docker+ tensorflow serving进行服务和调用。