在前两篇博客里已经介绍了如何配置用tensorflow serving部署深度学习模型的环境和导出tensorflow serving可用的savedmodel模型文件。
1. 【Tensorflow】Tensorflow serving模型部署(一):运行官方demo
2. 【Tensorflow】Tensorflow serving模型部署(二):导出savedmodel模型
这一篇介绍如何制作包含训练好的模型的docker镜像。
一、拉取一个基础镜像
我选择的tensorflow serving 1.12.0 gpu版本的镜像。
docker pull tensorflow/serving:1.12.0-gpu
二、运行一个基础镜像的容器
docker run -d --name tfserving_gpu tensorflow/serving:1.12.0-gpu
-d:以后台守护进程的方式运行容器。
--name:将这个容器命名为tfserving_name。
这个时候会输出一串sha256码。
三、拷贝本机模型文件到容器中
docker cp /home/data/ssd_mobilenetv1_coco tfserving_gpu:/models/ssd_mobilenetv1_coco
这就是将本机的ssd_mobilenetv1_coco模型文件夹拷贝到容器tfserving_gpu的models文件夹下。
四、提交容器修改
docker commit --change "ENV MODEL_NAME ssd_mobilenetv1_coco" tfserving_gpu mydockhub_name/ssd_mobilenetv1_coco:v1
这里将MODEL_NAME后面的字符串替换成自己的描述。
mydockhub_name:替换成自己在dockerhub上的用户名。如果不需要提交到dockerhub上可不加用户名。
v1:这里我给这个镜像标记为版本v1,也可不加。
查看一下镜像是否生成了。
docker images
镜像已经存在了。
五、提交镜像到dockerhub
docker login
输入账号和密码登录。
docker push docker hub用户名/镜像名:版本tag
push完成之后,在docker hub官网上你的账户下面就有了这个镜像。
六、停止并删除基础容器
docker kill tfserving_gpu
docker rm tfserving_gpu
七、测试
运行一个包含前面生成的镜像的容器。
docker run --runtime=nvidia --rm -p 8501:8501 -t ssd_mobilenet_coco_tfserving &
查看serving状态。
curl http://localhost:8501/v1/models/ssd_mobilenetv1_coco