本文目标为在docker上部署深度学习模型,并将完成的实例保存为镜像,方便今后部署。本次部署用到了docker、ubuntu18.04、python3.6.8、flask1.1.1、keras2.2.4、numpy1.17、tensorflow1.14cpu版(因为模型为图像分类模型、推理过程不需要太大的算力,在服务器至强6278C CPU上一张图的响应时间在0.4秒以内,相比之下,在本地服务器gtx 2080ti GPU上用时为0.24秒左右,并没有太大提升)以及常用的python库。
1.docker镜像的获得
docker search ubuntu:18.04
选择一个镜像,通过该路径下载镜像,如:
docker pull docker.io/library/ubuntu:18.04
该路径为官方镜像,里面很多东西都莫得,甚至没有python3,都需要自己装,如果想要省事就装一个配置完整的。
2.通过镜像运行一个容器
docker run -dit -v /root/mzw:/root/mzw -p 5001:5000 --name=test9999 docker.io/ubuntu
其中-dit,-v,-p,–name都是参数,详细参数介绍见docker run 参数,-v后的/root/mzw:/root/mzw表示文件映射路径。-p表示暴露的端口,我在外部打开了一个5001端口,对应的是内部的5000,这样在内部设置端口为5000就好了。–name是设置容器name,进入容器时可以用
3.进入容器
进入刚刚创建的容器
docker exec -it test9999 /bin/bash
其中-it是exec的参数,一般都用这个,具体介绍见exec 参数介绍,/bin/bash的作用是容器必须要有一个程序运行,否则会自动退出,见exec 中的/bin/bash
参考(Ubuntu16.04安装python3.7及相应的pip)
现在已经创建了一个容器,在安装所需的软件之前,先将下载源设置为国内源,能大幅提高下载速度
1.下载vim用来编辑配置文件,vim操作有点难,需要学习一下,但是基本的编辑不难
apt-get install vim
现在找到配置文件,
vim /etc/apt/sources.list
进入编辑界面,删除所有内容先:按下esc后,输入dG,直接输,不要看有没有出来,在输完dG后会全部删除(vim 全部删除方法),再找到一个国内源,如阿里云,将配置代码写入,具体过程见:Ubuntu配置国内源。
2.安装sudo
安装之前更新一下
apt-get update
安装sudo
apt-get install sudo
之后的操作都用sudo来,不然可能会出问题。
3.安装wget
sudo apt-get install wget
安装zlib
sudo apt-get install zlib*
5.安装python3.6.8
sudo wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
由于python无法用apt-get安装,只能下载安装包,而安装包是在国外的网站下载,所以比较慢。
下载完成后,解压文件,
sudo tar -zxvf Python-3.6.8.tgz
安装gcc和make
sudo apt-get install gcc
sudo apt-get install make
进行配置
cd Python-3.6.8
./configure --prefix=/opt/ptyhon3.6
编译及安装
sudo make
sudo make install
设置软连接
sudo ln -s /opt/ptyhon3.6/bin/python3.6 /usr/bin/python3
测试python是否安装成功
python3 -V
6.安装pip
安装pip之前,先安装setuptools
sudo wget https://pypi.python.org/packages/source/s/setuptools/setuptools-18.1.tar.gz
sudo tar -zxvf setuptools-18.1.tar.gz
cd setuptools-18.1
sudo python3 setup.py build
sudo python3 estup.py install
再安装pip
sudo apt-get install python3-pip
由于pip源来自国外,下载速度慢,可以参考ubuntu更改国内源详细方法
安装需要的python库
sudo pip install tensorflow==1.14
sudo pip install keras==2.2.4
sudo pip install flask==1.1.1
sudo pip install numpy==1.17
然后就可以部署模型啦
将环境配置完成后,就可以将模型部署至该服务器,由于我的模型部署不需要gpu支持,所以没有安装cuda环境,若有需要,可以参考cuda安装文档
目前已经得到了一个可以快速部署模型的容器,接下来将其做成镜像并保存
在退出容器后将容器保存为镜像
docker commit -a 'mzw' test9999 deployed_image:latest
将该镜像保存为tar文件
docker save deployed_image:lateset > deployed_image.tar
这样就完成了一个模型部署的镜像制作,如果要更换服务器部署,就可以通过这个tar文件在新服务器中安装docker后进行快速部署