Docker打包深度学习项目
Ubuntu如何用Docker打包深度学习项目?请看这里!
docker就不用多介绍了吧
Docker 安装:
没什么好说的,参照官网:https://docs.docker.com/engine/install/ubuntu/
sudo apt-get updatesudo apt-get install ca-certificates curl gnupg lsb-release
添加GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
插曲:假如你使用官网的这行命令不成功,估计是网络问题,你可以:
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \"deb [arch=amd64] Index of /docker-ce/linux/ubuntu/ \$(lsb_release -cs) \stable"
本人在使用下面这条命令时,同样出现连接超时,就是docker.com的问题:
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
如果你也是,你可以:
(1)在软件与更新力更换源:
(2)在/etc/docker/daemon.json脚本添加(我直接简单粗暴添加多个):
{"registry-mirrors": ["https://registry.docker-cn.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}
更新一下软件包并安装:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
测试:
sudo docker run hello-world
会输出一连串东西,没报错就是正确的。
取消sudo执行docker:
有一说一,sudo docker xxx太烦了,好在可以设置
sudo cat /etc/group | grep docker
sudo groupadd docker (一般来说安装docker后自动生成docker group)
sudo gpasswd -a ${USER} docker
sudo chmod a+rw /var/run/docker.sock
sudo systemctl restart docker
nvidia-docker安装
官方教程:
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#
docker
YOLOX下载与配置:
你会在当前文件夹获得一个YOLOX的文件夹
git clone https://github.com/Megvii-BaseDetection/YOLOX.git
创建Dockerfile,注意位置:
touch Dockerfile
在Dockerfile写上:
FROM pytorch/pytorch:latestADD . /WORKDIR /YOLOXRUN apt-get update && apt-get install -y build-essential libgl1-mesa-dev libglib2.0-dev
RUN pip3 install -U pip && pip3 install -r requirements.txt
RUN python setup.py develop
如果你希望在创建镜像后要运行什么测试的命令,直接在后面加
RUN python xxx.py (根据需要)
什么意思呢,就是使用dockers hub 中发布的pytorch/pytorch:latest镜像作为基础镜像(下载速度感人),ADD . /表示将当前所有文件’添加到镜像的根目录下”/“。然后执行一系列指令完成YOLOX的环境安装。
你也可以使用其他pytorch版本的镜像,在这里查看:https://hub.docker.com/r/pytorch/pytorch/tags
下载权重放到YOLOX/下(只要你喜欢,随便放)
https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth
创建镜像
docker build -t dockertest:v1.0 .
不要漏了后面那个点,意思是根据当前目录下的Dockerfile进行创建,dockertest表示镜像名字,v1.0表示tag,就是一个标签,随便写
(省略一堆)
最后看到Successfully 的信息就行了
查看一下镜像,看到dockertest就表示成功了:
docker imags
启动一个容器
docker run -it --name task1 --gpus all dockertest:v1.0 /bin/bash
-it 表示交互式终端操作 , --name表示容器的名字, --gpus all表示使用GPU, 使用dockertest:v1.0镜像,(/bin/bash允许一个bash进程?)
然后你就会切换到容器的交互式终端中:
使用正常的YOLOX提供的demo命令即可进行测试:
python tools/demo.py image -n yolox-s -c yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu
你会看到执行后的输出的信息,没报错就行.
退出容器:
exit
导出镜像
docker save -o docker_image.tar dockertest:v1.0
docker_image.tar是你要保存的文件名,也可以用xxx/xxx/docker_image.tar的形式。
发布镜像
将镜像发布到docker Hub中,这样其他人也可以下载,先登录docker,然后注意tag的格式,声明:这部分我没实测过
sudo docker login
sudo docker tag dockertest YOUR_DOCKER_ID/dockertest
sudo docker push YOUR_DOCKER_ID/dockertest
导入镜像
此时如果你想测试一下,找个其他主机啥的:
docker load -i docker_image.tar
你会看到这些信息,导入成功:
824bf068fd3d: Loading layer [==================================================>] 65.51MB/65.51MB
f15a0881ce19: Loading layer [==================================================>] 33.8MB/33.8MB
354dfcbe6a14: Loading layer [==================================================>] 6.197GB/6.197GB
0f801b69538d: Loading layer [==================================================>] 1.536kB/1.536kB
3c2e99e92150: Loading layer [==================================================>] 121.3MB/121.3MB
a1425ccadcb9: Loading layer [==================================================>] 438.3MB/438.3MB
b46ef3c5741b: Loading layer [==================================================>] 762.6MB/762.6MB
0f146ef9d82c: Loading layer [==================================================>] 18.93MB/18.93MB
你就可以看到新的主机下也有一个dockertest:v1.0的镜像。同样的你可以启动一个容器进行执行相关命令(跟上面的一样)
主机和容器文件交互:
(1)文件复制
docker cp xxx/xxx/test.txt cont:/
docker cp xxx/xxx/dataset cont:/root/ (复制文件夹)
将主机的xxx.xxx/test.txt这个文件复制到容器名为cont的’/'目录下,路径反过来就不要说了。
(2)路径映射
docker run -v xxx/xxx/data:/root/temp -it dockertest:v1.0
将主机的xxx/xxx/data路径映射到dockertest:v1.0容器的/root/temp路径,这样可以在容器内直接访问容器外的xxx/xxx/data文件夹
容器->镜像
如果你在容器中修改或添加了某些脚本,原始的dockertest:v1.0是不会有任何改变的,所以你希望保存这个修改后的容器作为镜像的话,(重新根据Dockerfile再创建太费事),直接将容器导出为镜像就行:
docker commit -a 'boy' -m 'instruction' cont new_docker:v1.0
cont:容器名字 new_docker:新的镜像名字,其他随意。
其他指令
删除容器
docker ps -a (查看CONTAINER_ID)
docker rm CONTAINER_ID
容器启动停止:
docker stop cont (cont为容器名字)
docker start cont
进入容器:
docker exec -it cont /bin/bash
删除镜像:
先关掉该镜像实例化的容器才能删除:
docker images (查看IMAGE_ID)
docker rmi IMAGE_ID
第二种创建镜像方式
一般深度学习项目环境都是在anaconda的虚拟环境下配置的,当然你可以在docker hub下载相应的镜像,这里提供一种新的创建镜像的方式,简单来说就是将虚拟环境和代码直接复制到anaconda/anaconda的容器中
参考链接:https://blog.csdn.net/qq_32101863/article/details/120344080
Docker打包深度学习项目相关推荐
- 快速学习docker的使用和打包深度学习项目
1.安装docker和nvidia-docker 按照docker官网或者网上教程先后安装docker和nvidia-docker(建议按照官网的命令进行安装,若发生报错再去搜索如何解决) 2.编写D ...
- docker 不包含依赖 打包_Docker打包深度学习项目(解决:Opencv依赖库、共享内存)...
最近比赛要提交打包好的CNN模型给主办方去测试,使用Docker镜像.这可难倒了我这个小白,搞了好几天才打包好.在这里记录一下Docker使用过程,希望能给广大同学们提供点帮助. 文章内容包含以下3个 ...
- Ubuntu 21.04 使用Docker部署深度学习项目(cuda11.2+cudnn8.8+deepface)
文章目录 1.安装Docker 1.1 确定系统版本 1.2 卸载旧版本 1.3 设置stable镜像仓库 1.4 安装Docker ce 1.5 测试 1.6 阿里云镜像加速 1.7 重启服务器 2 ...
- 通过NVIDIA-Docker部署深度学习项目环境
原文地址为:https://zhuanlan.zhihu.com/p/78541520 深度学习环境部署的方法有很多种,其中Docker化深度学习环境和项目是一个很不错的选择.这里写过一些深度学习主机 ...
- 基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境
深度学习在哪里? 我们已然生活在数字时代,一天24小时我们被数字包围.我们生活中的方方面面都在使用数字来表达.传递.存储.我们无时无刻不在接收数字信息,而又无时无刻不在生产数字信息. 在数字世界中,可 ...
- 如何在实际中计划和执行一个机器学习和深度学习项目
2019-11-27 20:27:28 作者:Sayak Paul 编译:ronghuaiyang 导读 做研究打比赛和真正的做一个机器学习和深度项目是不一样的,如果你有这方面的困惑的话,可以看看这篇 ...
- docker anaconda_深度学习炼丹炉配置[1] Docker+sshfs环境配置
感谢 @田文善 同学供稿 目录 一.需求二.方案(一)docker 配置1.dockerfile 制作2.构建 docker 镜像3.运行 docker 容器4.使用 docker 容器5.环境复用( ...
- docker制作深度学习镜像(以windows环境下为例)
向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习 公众号:datayx 用 Docker 安装深度学习环境,轻量.方便!整个系统大小仅需2~3G,用完还能带着走!一 ...
- Docker部署深度学习服务器,CUDA+cudnn+ssh
通过Docker来创建多个容器(相当于多个linux系统),每个容器中的CUDA版本之间互相不影响.这样的好处是可以在项目需要时,不改动主机环境的前提下运行多个CUDA版本.同时,也可以为不同的使用人 ...
最新文章
- 中国联通备战5G MWC发布《Edge-Cloud平台架构及产业生态白皮书》
- 英特尔CEO:英特尔下一个市场将是无人驾驶汽车
- 博士申请 | 北京大学信息科学技术学院段凌宇教授招收2022级博士生
- ASP.NET 实现Base64文件流下载PDF
- React-引领未来的用户界面开发框架-读书笔记(二)
- Eclipse 插件ibeetl
- 任正非:鸿蒙不用于手机;IBM 340 亿美元红帽收购案完成;Firefox 68.0 发布 | 极客头条...
- GitHub - ErnestChen1/SmartSpeaker: 一个基于云端语音识别的智能控制设备,类似于天猫精灵,小爱同学。采用的芯片为stm32f407,wm8978,esp8266。...
- 计算机三维建模方法,三维建模知识介绍
- 关于新加坡的身份证与电话号码验证
- Fine-grained prosody modeling
- spss进行多元线性回归并分析表格
- 侯圣文大数据体验课笔记,大数据基础,离线数仓,实时计算
- AI证件照背景色修改,几行代码搞定
- Java复习小游戏——“登仙长阶“【已收工】
- mac 剪切移动文件
- 由点及面,一叶知秋------集合大家庭
- 《今日影评》前瞻《疯狂的外星人》:喜剧远大于科幻
- ADX,DSP,SSP广告系统搭建
- <A Tale of Evil Twins: Adversarial Inputs versus Poisoned Models>阅读笔记