【Windows】使用docker搭建多个cuda版本的深度学习环境并用VSCode的SSH连接环境开发
本文章介绍如何在Windows10家庭版系统中搭建docker4.24.0(容器Ubuntu18.04+GPU cuda10.1+Anaconda深度学习框架),并配置VSCode的SSH连接容器后实现运行.ipynb文件
目录
(2)从Docker Hub获取镜像源并搭建Ubuntu18.04-CUDA10.1-GPU环境
观前须知
1、你想要实现一台电脑拥有多个cuda环境来适配不同的深度学习框架吗?(eg.10.2,11.6)
2、放心吧,虚拟机不能装GPU驱动!放弃开多个镜像环境的想法吧哈哈哈(除非你喜欢玩"双系统"切来切去的)
3、试了试docker,卧槽,神!恨自己相识尚晚(^v^)
接下来我将介绍如何在Windows10家庭版系统中搭建docker4.24.0(容器Ubuntu18.04+GPU cuda10.1+Anaconda深度学习框架),并配置VSCode的SSH连接容器后实现运行.ipynb文件
(虽然是原创,但更多的是缝缝补补总结网上各种方法,以及踩过的坑,只是为了方便自己及大家进行环境搭建,少走弯路嘞~)
名词解释:
宿主机:运行docker的操作系统,如Win10
Docker容器:独立于外界的运行环境,环境存在于内存中,文件写在磁盘上,如Ubuntu容器(类似领域展开)
步骤
(1)安装docker
docker官网:Docker: Accelerated Container Application Development(最新版)
docker安装文档:Docker Desktop release notes | Docker Docs(过去版本的docker,不建议安装太新的,容易因为WSL出问题)
我Win10用的是docker 4.24.0,之前用4.30.0的反而容易出BUG
百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/14GwokeWLC3wduOFxIucAdQ?pwd=kxp1 提取码:kxp1(永久有效)
如果你安装出现docker engine stop问题,可以先看看这篇文章下面的一些docker安装问题
(当然可能有概率解决不了哈哈哈哈哈哈哈,祝好运~)
打开docker,在设置更改一下docker镜像源配置,方便后续下载镜像更快捷(2024.5.26测试下面三个镜像还有效)
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com"
]
}
(2)从Docker Hub获取镜像源并搭建Ubuntu18.04-CUDA10.1-GPU环境
Docker Hub网址:https://hub.docker.com/(科学上网访问网站)
在里面能找到一些前辈搞出来的镜像安装包(即已经配好了环境,开箱即用,非常方便)
比如说我们拿接下来某位大哥搞好的镜像来装我们环境
在cmd或者PowerShell,输入下方命令来拉取镜像,非常方便(拉取镜像不用科学上网,因为之前配置过镜像源)
(写这篇博客时那个镜像还在,如果用不了就得自行访问网站找环境了QAQ)
docker pull 2550863g/cuda10.1-cudnn7-ubuntu18.04-anaconda3-base
一般我们在nvidia-cuda官方的难以找到合适的版本,现在版本都太高了,都找不到过去的版本了
目前cuda只有11.0~12.4版本,都已经是cudnn8了
然后使用下方命令来创建并启动你的docker环境
docker run -it --gpus=all --shm-size="32g" -v /home/zjz/workspace -w /workspace --name ubuntu2 -p 8088:99 2550863g/cuda10.1-cudnn7-ubuntu18.04-anaconda3-base /bin/bash
参数说明:
-it:表示交互式运行容器;
--gpus=all:使用宿主机的GPU(关键参数!!!)
–shm-size:设置的是共享内存大小,根据需要设置,如果不设置的话,默认64M,训练深度学习模型的时候dataloader会报错提示共享内存不足
-v:是地址映射到容器文件夹(这里zjz是本人名字简称哈,设啥都可以的...(尴尬))
-w:设置工作目录
--name:设置环境名称
-p:设置端口映射(宿主机端口:容器端口),这里8088是宿主机端口,可以用cmd:netstat -an查看一下别被占用了,docker容器对外端口是99
/bin/bash:虚拟环境的启动目录
之后也可以用下面方法启动进入容器
先在docker的containers中启动
然后输入,也能到达Ubuntu的控制台啦!
docker exec -it ubuntu2 /bin/bash
验证:
在这里,环境已经包括了cuda,cudnn,Anaconda三个框架,并且使用宿主机的GPU,可以用以下代码验证:
查看系统中存在GPU(这里显示的是系统可以适配的cuda最高版本)
nvidia-smi
验证cuda编译器版本,可以看到确实是10.1,真棒!
nvcc -V
参考文章:【Docker】基于docker构建深度学习开发环境_docker搭建德语学习-CSDN博客
Windows安装Docker并创建Ubuntu环境及运行神经网络模型_windows docker ubuntu gui-CSDN博客
(3)使用VsCode的SSH连接开发环境
如果嫌SSH连接麻烦的小可爱也可以点击这里:跳转到VSCode的Docker插件连接
还记得之前映射的-p 8088:99是吧?对的,这个8088就是我们VsCode需要访问的端口地址,而99是ubuntu系统端口地址!
完全可以参照这篇文章配置,这里就不赘述了:【vscode 连接远程服务器 中的docker】_vscode 连接docker一直在用scp拷贝远程包-CSDN博客
当然每次docker启动虚拟环境都要重新启动SSH服务
/etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd
宿主机连接的端口一般为
ssh root@localhost -p 8088 #localhost用默认的127.0.0.1替代也可以
Tips:
如果嫌每次启动SSH麻烦,可以参考这篇文章设置SSH服务自启动
docker自启动ssh_docker ssh自启动-CSDN博客
如果嫌每次SSH连接登录都要输密码,可以参考这篇文章配置
最后我本人的Remote Explore插件中ssh部分配置如下(可以用IdentityFile参数配置私钥位置),这样就能实现免密登录啦!
(4)配置.ipynb文件运行环境(plus)
参考本人写的另一篇博客,相信你可以哒!
(5)最终成果
可以在本地电脑上的VSCode连接Docker的Ubuntu虚拟环境并进行mxnet-GPU训练啦!
补充
(1)docker安装问题
如果出现docker engine stop问题,那么有可能
1.检查是否启动Hype-V(一般人其实都有启动的...)
2.看看能否关闭"使用WSL2替代Hype-V功能"
解决docker engine stoped的问题_windows docker engine stopped-CSDN博客
3.有些时候WSL2实在关不了,那么也就只能尝试降版本啦!
(自从我的docker从4.30降低到4.24之后,确实跑通了,官网现在好像还有4.9的能用,看运气啦)
(2)为啥不直接用VSCode自带的docker插件
在VSCode的插件里面有docker插件,几乎有手就能玩
但使用该插件有以下两点问题:
- 最直接的问题是不能拖拽上传文件到容器
- 其次是因为这个在VSCode打开terminal后你会发现跳转到的还是你宿主机的cmd,还需要输入exec命令来启动容器控制台,多了一次麻烦
灵感来源(水)
2024年了有人还在考古“李沐学AI”课程,课程中要安装mxnet-GPU版本,然后我上网查了一下,
这个mxnet已经是两年前就废止的项目啦!
mxnet官网:Get Started | Apache MXNet
它最高的GPU版本只能到cuda 11.2
但我电脑已经装了cuda 11.6版本,如果重装的话意味着我其他的深度学习框架Paddle,Pytorch等含GPU的深度学习框架也要重装
人麻了...
首先放弃学校服务器P100,跟自己电脑3060运算效率差不多,但是主观上觉得性能与效率不如自己电脑
其次放弃云服务器,不是富哥玩不起呜呜呜...
想尝试VMware虚拟机搞,但很可惜它不认我的显卡驱动,目前网上也没有很好的解决方法
之前也听老师说想用Linux搞深度学习得用双系统,可惜哥一身反骨。哼!偏不装双系统,就觉得每次启动都要太麻烦辣,而且容易死机寄寄!
在搜相关解决方法的时候发现几个神评论
从舍友那也听说师兄叫他搞docker,他连Anaconda都没安就直接跑图像处理了???
wc,直接网上现学docker,什么容器,虚拟环境,开箱即用。说得我都心动啦~
机缘巧合之下,催生了这篇文章
最后放弃虚拟机,docker启动!!!
2024.5.28此地无银三百两
大家千万别这样搜索CSDN!!!请假装docker是解决问题的最佳手段
不然就会...啊啊啊啊啊啊啊啊
更多推荐
所有评论(0)