AI模型部署系列之docker
前言
AI实战:AI模型部署系列之docker
AI实战:AI模型部署系列之多进程
本文分享使用docker部署AI模型的经验。
Docker五大优势:持续集成、版本控制、可移植性、隔离性和安全性。
下面就介绍一下docker的安装、创建cpu的tensorflow的docker。
同时以 上海垃圾分类系列之快速搭建垃圾分类模型 作为整个过程的搭建的例子。
环境
- Ubuntu 16.04
安装docker
- 详细步骤
mkdir docker_example cd docker_example/ 1、卸载旧版本docker(未安装过的,可不执行) sudo apt-get remove docker docker-engine docker.io 2、更新 sudo apt-get update 3、安装依赖包 sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common 4、添加官方密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 出现 OK 表示添加成功 5、添加仓库 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" 6、再次更新 sudo apt-get update 7、安装docker(默认安装最新版) sudo apt-get install docker-ce 若想指定版本: sudo apt-get install docker-ce=<VERSION> 8、查看docker版本 docker -v 当前最新版本:Docker version 18.09.7, build 2d0083d 9、启动docker 后台服务 sudo service docker start 10、测试运行hello-world sudo docker run hello-world 出现下面详细就表明安装顺利、测试ok: Hello from Docker! This message shows that your installation appears to be working correctly. .... ....
创建cpu版的Tensorflow
1、下载镜像
sudo docker pull tensorflow/tensorflow:1.4.0-py3
(1.4.0 是指版本, py3 是指python3.x)
显示下面信息表示下载完毕:
Status: Downloaded newer image for tensorflow/tensorflow:1.4.0-py3
需要下载其他版本的tensorflow,把1.4.0改为对应的版本号即可。
若是需要下载gpu的tensorflow,命令如下:
sudo docker pull tensorflow/tensorflow:1.4.0-gpu-py3
查看tensorflow的镜像(TensorFlow Docker Images):
https://hub.docker.com/r/tensorflow/tensorflow
2、创建Tensorflow容器
sudo docker run --name refuse_classify-tensorflow-1.4.0-py3 -d \
-p 8888:8888 \
-p 9006:6006 \
-p 9007:6007 \
-p 9008:6008 \
-v ~/data/tmp/docker_example:/data \
tensorflow/tensorflow:1.4.0-py3
--name:创建的容器名,即 refuse_classify-tensorflow-1.4.0-py3 (python3下tensorflow 1.4.0 的垃圾分类docker)
-d:后台运行容器
-p 8888:8888:端口映射,前者是宿主机的端口,后者是docker中的端口
-p 9006:6006: tensorboard 端口映射
-p 9007:6007: 预留端口
-p 9008:6008: 预留端口
-v ~/data/tmp/docker_example:/data:将宿主机的 ~/data/tmp/docker_example 挂载到容器内的 /data 下
tensorflow/tensorflow:1.4.0-py3 :是上一步下载的镜像
注:1、若是多次创建会出现下面的错误提示:
docker: Error response from daemon: Conflict. The container name "/refuse_classify-tensorflow-1.4.0-py3" is already in use by container "b942ba9baec0674617c031c454457caf5abe8620bcdd6e9a628756e83743c89e". You have to remove (or rename) that container to be able to reuse that name.
解决方法:
sudo docker rm b942ba9b
(b942ba9b 是docker id 的前面几个字符)
2、若是gpu版本,需要加上 ‘ --runtime=nvidia ’,及安装对应的CUDA,请自行查阅相关资料
3、运行docker
sudo docker exec -it refuse_classify-tensorflow-1.4.0-py3 env LANG=C.UTF-8 /bin/bash
出现下面的信息表示已进入docker:
root@5b6a3a37e730:/notebooks#
注:‘5b6a3a37e730’ 是 docker id
查看相关信息:
python
输出信息:
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
import tensorflow as tf
print(tf.__version__)
输出:
1.4.0
说明一切安装顺利。
4、docker 常用指令
-
停止docker
sudo docker stop 5b6a3a37e730 或 sudo docker stop refuse_classify-tensorflow-1.4.0-py3
-
开启docker
sudo docker start 5b6a3a37e730
-
重启docker
sudo docker restart 5b6a3a37e730
-
查看本地镜像
sudo docker images
-
删除本地镜像
sudo docker rmi docker_id/name
-
查看运行中的docker
sudo docker ps
部署AI模型
这里使用 上海垃圾分类系列之快速搭建垃圾分类模型 来作为例子。
模型下载:垃圾分类识别模型 (注:字母有拼写错误,rafuse改为refuse即可和下面的步骤一致)
-
步骤
1、复制完整代码到 ‘~/data/tmp/docker_example’ 2、进入docker sudo docker exec -it refuse_classify-tensorflow-1.4.0-py3 env LANG=C.UTF-8 /bin/bash cd /data/ ls 输出信息: refuse_recognize cd refuse_recognize 3、 安装环境 pip install jieba pip install Cython pip install word2vec 4、模型修改 1)下载imagenet2012的inception-v3模型 python classify_image.py 输出下来信息表示成功: 2019-07-15 11:54:25.060237: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 2019-07-15 11:54:25.433662: W tensorflow/core/framework/op_def_util.cc:334] Op BatchNormWithGlobalNormalization is deprecated. It will cease to work in GraphDef version 9. Use tf.nn.batch_normalization(). 大熊猫,熊猫,熊猫,浣熊,大熊猫(Ailuropoda melanoleuca) (score = 0.89107) 光面狐猴;大狐猴 (score = 0.00779) 小熊猫,小熊猫,熊猫,熊猫,猫熊,小熊猫 (score = 0.00296) 番荔枝 (score = 0.00147) 地星 (score = 0.00117) 2)垃圾分类映射模型修改 vi runs/checkpoints/checkpoint 修改 /home/zzh/data/DL/refuse_recognize/ 为 /data/refuse_recognize 3)测试 python refuse.py ./img/2.png 输出下面信息表示一切ok: classify: 手机移动电话 => 可回收垃圾 iPod => 湿垃圾 笔记本电脑笔记本 => 可回收垃圾 调制解调器 => 湿垃圾 手持电脑手持微电脑 => 可回收垃圾
保存该模型的docker环境
1)退出docker
exit
2)查看运行中的docker
sudo docker ps
3)保存dicker
sudo docker commit -a 'zack' -m 'refuse classify model, tf1.4.0-py3-cpu' 65e3ec576b7f refuse_classify:v1
参数说明:
-a : 提交的镜像作者
-m : 提交时的说明文字
65e3ec576b7f: 容器id
refuse_classify: 名称
v1: tag
4)查看保存的docker镜像
sudo docker images
输入信息如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
refuse_classify v1 52ec4a357116 40 seconds ago 1.57GB
参考
https://www.runoob.com/docker/ubuntu-docker-install.html
https://www.jb51.net/article/135441.htm