背景:华为MindSpore-GPU无法在Windows系统中运行。“金字塔项目”的目标是兼顾MindSpore-GPU超强能力,同时也不牺牲Windows的便利,鱼与熊掌得兼,不亦爽哉。
金字塔项目历史文章:
金字塔项目(二):MindSpore-GPU在同一主机的不同环境中的性能粗评
在Win10游戏本中搭建MindSpore-GPU的深度学习环境
用了一段时间,又开始不爽了:
-
从Windows,到WSL,再到Dockers隔了三层,在三个系统之间共享传数据很头痛。Linux命令行玩得贼溜的可忽略这一条。
-
启动WSL进入Ubuntu的终端之后,每次都要敲sudo service docker start,sudo docker attach XXX启动Docker。
我觉得实在痛苦,每次想亲近一下MindSpore,都要经历先查找IP地址,再一层一层打开docker这样繁琐、单调又浪费时间又没有技术含量的过程。环境启动优化的目的就是为了一劳永逸地解决上面这几个问题。
1、为WSL固定IP地址
网上有大神使用批处理文件完美解决了这个问题,我就不多嘴了。请查看原文。
我把Windows的WSL机址设置为192.168.169.1,Ubuntu虚拟机地址为192.168.169.2
保存批处理文件“launch mindspore docker.bat”,然后在文件上右键点出菜单,选择“以管理员身份运行”。切记必须是管理员身份,普遍权限不能设置地址。
接下来检查一下Ubuntu的地址是不是已经更改过来了。打开WSL Ubuntu的终端,输入ifconfig查询地址:
地址就设置成功。
2、设置共享文件夹
WSL2有个非常讨人喜欢的特征,就是本地磁盘会自动挂在/mnt下面。比如说Windows的d:盘在WSL的Ubuntu下面就是/mnt/d。这个功能太方便了,无论浏览了什么数据,一键下载到共享文件夹里,Windows、Unbuntu虚拟机和Docker就都可以使用了。ipynb和py脚本也可以放在这个文件夹里,三个系统里全都可以运行。
首先,我在本机的d:盘下建一个wsl_share目录,以后就用它做跨平台的文件共享,然后把这个wsl_share目录映射给docker了。方法是建立一个包含目录映射的容器:
# pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple
我把更新源换到到国内源华站,数据下载速度一下子快N倍。
安装成功后,在docker中启动Jupyter服务进程:
$ sudo docker ps -a
找到需要自动启动的容器,比如上图中的容器ID是50223904d8ca。
在第一步创建的“launch mindspore docker.bat”批处理文件中最后增加这样三条命令:
# python -m jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root --no-browser
然后,修改批处理文件,把最后一行sudo docker exec的命令修改如下:
rem
大功造成。
"launch mindspore docker.bat"请见附件。