赞
踩
AI实战:AI模型部署系列之docker
AI实战:AI模型部署系列之多进程
本文分享使用docker部署AI模型的经验。
Docker五大优势:持续集成、版本控制、可移植性、隔离性和安全性。
下面就介绍一下docker的安装、创建cpu的tensorflow的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. .... ....
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
这里使用 上海垃圾分类系列之快速搭建垃圾分类模型 来作为例子。
模型下载:垃圾分类识别模型 (注:字母有拼写错误,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 => 湿垃圾 笔记本电脑笔记本 => 可回收垃圾 调制解调器 => 湿垃圾 手持电脑手持微电脑 => 可回收垃圾
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。