使用Docker部署模型的一般方案

仅供参考!!!
1、使用flask在你的本地搭建好web服务,其中包含你的模型文件,预测代码及其他配置参数,如主函数为code里面的main.py,确保可以在本地正常运行,可使用postman测试;
使用Docker部署模型的一般方案_第1张图片

2、注册新建好阿里云镜像,一般常用的环境如anaconda、pytorch、detectron2、mmdetection等可以备份好,可以经常使用到;
https://cr.console.aliyun.com/cn-shanghai/instances
3、新建批处理文件,为部署入口,参数一般包含镜像名称, 模型名称, 服务端口号,第几块显卡,如命名为deploy.sh(一般需要用到grep、awk)。

deploy.sh registry.cn-hangzhou.aliyuncs.com/xxx:base resnet_model 8888 0

修改代码后重新部署到本机一般流程如下:
(1)docker pull,阿里云镜像仓库拉到本地,如果没有拉取过第一次会比较慢,没有镜像仓库的先自己建立好push上去;
(2)docker stop,确保本地所有容器停止运行,不然删除时可能会出错;
(3)docker rm,删除掉本地旧的镜像版本,一个镜像可以有多个版本;
(4)docker tag,将阿里云镜像仓库的最新版本标签改为旧版本,等待上传最新的版本;
(5)docker build,执行Dockerfile,在同个目录,将修改的代码更新到本地docker中,设置启动容器后自动启动服务;
(6)docker push,推送到阿里云镜像仓库保存,为版本最新;
(7)docker run,本地开始运行最新版本docker;
如果不更新代码,建个新的批处理文件,包含docker pull、docker stop、docker run,借助运营工具即可实现在多个终端快速部署。
4、Dockerfile,相关指令如下,简单描述就是将本地哪个路径的代码放到哪个镜像的哪个路径,然后设置环境,找到main.py并执行。
https://www.runoob.com/docker/docker-dockerfile.html

FROM registry.cn-hangzhou.aliyuncs.com/xxx:base
USER root
RUN mkdir -p /root/code/
WORKDIR /root/code/
ADD . .
ENV PYTHONPATH /root/code
ENV LANG C.UTF-8
#CMD ["/bin/bash"]
CMD ["/bin/bash","-c","cd /root/project/code/ && source /etc/profile && CUDA_VISIBLE_DEVICES=0 /root/anaconda3/envs/python37/bin/python code/main.py"]

你可能感兴趣的:(深度学习,pytorch,docker,模型部署)