一、Docker介绍
Docker包含Image(镜像)、Container(容器)、Repository(仓库)。镜像是 Docker 运行容器的前提,Docker 的核心,是只读的;仓库是存放镜像的场所;容器与镜像的唯一区别在于容器的最上面那一层是可读可写的。容器 = 镜像 + 读写层。
二、拉取tensorflow serving镜像
假设已经安装好Docker。
1、获取tensorflow/serving镜像
(1)直接使用docker pull拉取
docker pull tensorflow/serving
(2)从本地拉取镜像,在导入到服务器上
因公司服务器不能连外网,无法拉取tensorflow/serving镜像,采用本地拉取后倒入的方式。
直接 pull报错:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
- 在有公网环境下使用 docker pull 命令下载相应的镜像,使用docker images 列出所有镜像:
[ailab0]$ docker pull tensorflow/serving
[ailab0]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tensorflow/serving latest 1 weeks ago 2.18GB
- 使用docker save命令对镜像进行打包:
[ailab0]$ docker save -o tmp_tf_serving.tar tensorflow/serving :latest
#将.tar保存到本地
[ailab0]$ sz tmp_tf_serving.tar
- 将打包好的镜像传送至内网环境的机器,使用docker load 命令将镜像加载:
#将本地.tar上传到[ailab1]
[ailab1]$ rz tmp_tf_serving.tar
[ailab1]$ docker load -i tmp_tf_serving .tar
Loaded image: tensorflow/serving :latest
- 现在使用docker images 就可以查出刚才加载的镜像了。
[ailab1]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tensorflow/serving latest 12 months ago 220MB
horovod_ailab base 14 months ago 8.75GB
tensorflow/serving 1.12.0-gpu 20 months ago 2.18GB
三、TensorFlow Serving部署模型
使用docker run的方式部署服务
# Location of demo models
#在docker 容器里自己的目录下载上传tensorflow_serving源码
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"
#-v "用于绑定目录映射。模型实际目录:tensorflow/serving容器里的模型映射目录(定义后自动生成关联实际目录内容)"
#-e MODEL_NAME=wdl_model指定TFS加载模型名字,和目录tensorflow-serving/model下的模型名字保持一致
#--enable_batching=true 设置TFS开启batch功能。
#--batching_parameters_file=/models/batching_parameters.txt 绑定批量参数。
# Start TensorFlow Serving container and open the REST API port
docker run -t --rm -p 8501:8501 \
-v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \
-e MODEL_NAME=half_plus_two tensorflow/serving
--enable_batching=true
--batching_parameters_file=/models/batching_parameters.txt &
# Query the model using the predict API
curl -d '{"instances": [1.0, 2.0, 5.0]}' \
-X POST http://localhost:8501/v1/models/half_plus_two:predict
# Returns => { "predictions": [2.5, 3.0, 4.5] }
参考文献:离线获取docker镜像