docker 不包含依赖 打包_Docker打包深度学习项目(解决:Opencv依赖库、共享内存)...
最近比赛要提交打包好的CNN模型给主办方去测试,使用Docker镜像。这可难倒了我这个小白,搞了好几天才打包好。在这里记录一下Docker使用过程,希望能给广大同学们提供点帮助。
文章内容包含以下3个部分:Docker安装
打包镜像 Docker Build Image
测试镜像 Docker Run
Docker 安装
不同平台的Docker安装方式可以参考官方文档(Docker Install) ,我这里就用Ubuntu系统作为例子。
# Docker$ sudo apt-get update$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs)\stable"# Docker engine$ sudo apt-get update$ sudo apt-get install docker-ce docker-ce-cli containerd.io
安装完docker后,我的机器还不能用docker调用GPU,所以还需要安装NVIDIA Docker。NVIDIA Docker
详细安装步骤见NVIDIA Docker Installation Guide. 安装完记得重启Docker,并用nvidia/cuda:11.0-base这个默认容器测试一下是否安装成功。
# Restart the Docker daemon to complete the installation after setting the default runtime:
sudo systemctl restart docker
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
# 出现显卡信息界面即为安装成功
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06 Driver Version: 450.51.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |
| N/A 34C P8 9W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
打包镜像整理代码
将需要打包的模型代码整理到同一个目录下。举例来说,目录应该包含模型代码、数据文件夹、输出文件夹:
Model:
Code
Val Data
Output Data
如果用的是python语言的,可以准备一个requirement.txt,列出需要安装的包。后面就可以一步安装到位。
# 到代码目录下新建requirement.txt文件
touch requirment.txt
我的只需要再安装一个opencv包,所以我的requirment文件只要加上:
opencv-python==3.4.2.17
大家看自己需要什么额外的包直接写上名称和对应版本就可以了。用pip生成的requirement文件包含太多重复无用的包,建议还是自己简单写几个。创建Dockfile
同样,新建一个Dockfile文件,每一步的详细说明可以查看Dockerfile说明 。
因为我用到了opencv库,这个包是依赖于许多个包的,简单安装一个opencv库会导致后续无法运行,会提示找不到库:libSM.so.6、libXrender.so.1、libXexr.so.6
为了opencv能在容器中运行,我们需要在Dockerfile里加上:
RUN apt-get update
RUN apt-get -y install libglin2.0-0
RUN apt-get -install libsm6
RUN apt-get -y install libxrender-dev
RUN apt-get -y install libxext6
因此,整个Dockerfile的内容就是下面所示:(假设model文件夹保存了我们的模型)
Frompytorch/pytorchCOPY ./modelWORKDIR/model# python# opencv dependencyRUN apt-get updateRUN apt-get -y install libglin2.0-0RUN apt-get -install libsm6RUN apt-get -y install libxrender-devRUN apt-get -y install libxext6# pip installRUN pip install -r requirement.txt# /val/outputCMD python3 test.py
最后打包镜像:
# 打包镜像
docker build -t image-name .
# 保存文件
docker save -o output-filename image-name
测试镜像导入Docker镜像
docker load -i output-filename运行Docker镜像
每个Docker镜像只被分配了几百M的共享内存,对于很多CNN模型是远远不够的,因此需要加上 --shm-size 8G 来增大Docker镜像的共享内存大小(Shared Memories Size)。我的任务8G就够用了。
docker run --shm-size 8G --gpus all -v -it --rm image-name
由于Docker镜像执行后只会预测在文件夹/model/val/images下的图像,然后输出到文件夹/model/output/images下。为了能让Docker镜像预测新的测试集,并输出到宿主机的硬盘上,可以使用-v命令映射文件夹。
添加-v Path:/model/val 就可以将宿主机上的Path文件夹映射到Docker镜像里的val文件夹下,那么Docker镜像运行时就会从Path这个文件夹下取数据,记得Path一定要是绝对路径。Ubuntu中可以通过Ctrl+L得到文件的绝对路径。
对于我这个任务来说,我需要将新测试集和输出文件夹位置映射给Docker镜像,所以运行命令就是:
sudo docker run --shm-size 8G --gpus all -v PATH_TO_VAL:/model/val
-v PATH_TO_PUT:/model/output -it --rm image_name
测试成功就可以提交打包的镜像啦!希望这篇文章能够帮助到有需要的xdm,祝大家都能取得好成绩。
docker 不包含依赖 打包_Docker打包深度学习项目(解决:Opencv依赖库、共享内存)...相关推荐
- 【PyTorch深度学习项目实战100例】—— 基于ResNet50实现多目标美味蛋糕图像分类 | 第51例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 【PyTorch深度学习项目实战100例】—— 基于CNN实现书法字体风格识别任务 | 第62例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 盘点 | Github上的18个顶级深度学习项目
选自Github 机器之心编译 hunkim 盘点了 Github 上 18 个深度学习项目,根据收藏数自动排名.最新的一次 update 在几小时前完成. 项目地址:https://github.c ...
- 【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 【PyTorch深度学习项目实战100例】—— Python+OpenCV+MediaPipe手势识别系统 | 第2例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 【PyTorch深度学习项目实战100例】—— 基于聚类算法完成航空公司客户价值分析任务 | 第18例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 【PyTorch深度学习项目实战100例】—— 基于逻辑回归方法完成垃圾邮件过滤任务 | 第22例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 快速学习docker的使用和打包深度学习项目
1.安装docker和nvidia-docker 按照docker官网或者网上教程先后安装docker和nvidia-docker(建议按照官网的命令进行安装,若发生报错再去搜索如何解决) 2.编写D ...
- Docker打包深度学习项目
Ubuntu如何用Docker打包深度学习项目?请看这里! docker就不用多介绍了吧 Docker 安装: 没什么好说的,参照官网:https://docs.docker.com/engine/i ...
- 如何在实际中计划和执行一个机器学习和深度学习项目
2019-11-27 20:27:28 作者:Sayak Paul 编译:ronghuaiyang 导读 做研究打比赛和真正的做一个机器学习和深度项目是不一样的,如果你有这方面的困惑的话,可以看看这篇 ...
最新文章
- php将关联数组输出到前台,如何使用foreach从PHP中的关联数组输出特定数据
- 深度学习和目标检测系列教程 7-300:先进的目标检测Faster R-CNN架构
- setinterval 会被销毁吗_链信全国城市节点竞价活动完美收官,第一批节点总计销毁516600个CCT!...
- 《剑指offer》翻转单词顺序列
- 【利好工具】JavaScript及时运行调试工具
- 动态规划——K号数(蓝桥杯试题集)
- Mybatis01(结果集封装)
- XY相互独立,且服从指数分布,求U=max(X,Y)和V=min(X,Y)的概率密度函数
- 福利大放送:空间统计插值大数据PPT
- 计算机实验室安全知识心得体会,浅谈高校计算机实验室的安全管理
- 小米手机怎么截屏?小米手机区域截屏
- 苹果手机双卡双待是哪一款_等等党大获全胜 多款5G+5G双卡双待手机值得推荐
- fabric ca 使用案例
- 【Leetcode】1833. 雪糕的最大数量
- 零基础自学UI设计要看什么书籍和资料
- Ubuntu 16.04 Wifi列表是空的(搜索不到Wifi)的解决方法
- Atitit 关于共享经济之共享男女朋友的创业计划
- 那些参加IT培训的人怎么样了?工作月薪都上万吗?
- 草根创业回忆录一: 踏出了第一步的时候...
- 鲁珀特之泪(由来,原理以及特点)
热门文章
- 顶会VLDB‘22论文解读:CAE-ENSEMBLE算法
- 华为海外女科学家为您揭秘:GaussDB(for MySQL)云栈垂直集成的力量有多大?
- CloudIDE插件开发实战:教你如何调试代码
- 【带着canvas去流浪(12)】用Three.js制作简易的MARVEL片头动画(上) #华为云·寻找黑马程序员#
- 华为云AI斩获2019数博会“黑科技”等四大奖项
- 简单计算机app inventor,app inventor计算器
- oracle存储tar,Linux环境使用TAR命令快速部署安装Oracle
- 使用scrapy报错:attrs() got an unexpected keyword argument 'eq'解决办法
- 数据库MySQL安装
- max open files mysql_MySQL 重启提示超出可打开文件数限制|Buffered warning: Changed limits: max_open_files: 1024...