Win11系统下的MindSpore环境搭建

技术背景

笔者尝试过不少编程环境搭建的方案,例如常见的Ubuntu、Deepin、CentOS,也用过很多人力荐的Manjaro,这些发行版在需要办公的条件下,一般都需要结合Windows双系统使用。MacOS更适用于本地环境搭建,但是能兼容的显卡型号还是比较有限的。经过一些测试,其实我认为Win11+WSL2+Docker会是一个比较不错的解决方案(本来打算也试试虚拟机,但是听朋友说虚拟机调CUDA有坑,因此暂时不做考虑)。虽然直接用WSL2也可以搭建一个本地的编程环境,但是这样的环境具有一些不稳定因素,以及不可迁移的性质,因此我个人认为还是WSL2+Docker的方案稳定性会更高一些。

配置Docker环境

安装WSL2

在应用商店里面直接搜wsl2,找一个稳定版本下载安装,我选择的是Ubuntu20.04:

下载Docker桌面版软件

Docker官网下载一个Win11版本的Docker桌面版并安装:

启用虚拟化相关启动项

在控制面板里面找到“启用或关闭Windows功能”:

找到虚拟机监控、子系统、Hyper-V、虚拟机平台这些,打上勾:

安装Docker桌面版软件:

这一步比较简单,按照顺序操作即可:

这就开始启动安装程序了:

安装完成后,可以在“用户-用户名-.docker”目录下找到daemon.json配置文件:

在这个文件中你可以配置一些你自己需要的镜像源,比如我这边配置了几个不同的镜像源:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com"
  ],
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

需要注意的是,国内有些地方的网络不能正常访问docker官网或者登录dockerhub,这个问题需要自行解决。安装完成后打开啊Docker桌面版是这样的:

其实,如果只是使用Docker的话,登录不上DockerHub只是说你不能向DockerHub上Push你自己的本地镜像,但并不影响本地使用。

配置WSL中的Docker

在前面的步骤中已经完成了WSL2的安装,此时打开Win11的终端窗口,可以选择打开哪一类的终端,例如我们下载的Ubuntu20.04:

初次登录,有可能需要自己配置相应的账号密码。配置完成后,可以在Docker桌面版的设置-资源中,找到我们使用的WSL子系统:

然后在WSL中添加docker专用的用户组,就可以开始拉取远程镜像了:

这里我们拉取的是一个MindSpore2.2.14的GPU版本的镜像。在本地拉取完成后,可以在Docker桌面版中看到相应镜像的存在:

除了拉取这种专用的软件镜像之外,更多人会选择拉取一些基础镜像,例如Ubuntu、CentOS等操作系统的基础镜像,然后再自己写一个Dockerfile来构建自己的本地镜像。

运行Docker

拉取完本地镜像之后,你可以选择在Docker桌面版上直接启动相关镜像:

但是我个人习惯在Win11桌面上搞一个简单的Bash脚本来启动:

docker run -it --env="DISPLAY" -v A:\container-mindspore\:/home/ --runtime=nvidia mindsponge:latest

启动成功后,可以通过docker ps -a来查看正在运行的容器,也可以通过docker images来使用命令行查看本地的镜像列表,还可以用docker commit把相应的容器内修改提交到镜像中。有一点需要提醒的是,因为是需要搭建一个本地的编程环境,我们最好是把我们的本地工作目录映射到Docker中的指定目录,这样在Docker中针对于这个目录下的修改可以直接同步保存到本地路径中。

编程环境搭建

Docker相关插件

这里我们首选推荐VSCode作为IDE使用,因为VSCode的扩展非常丰富,我们用得到其中关于Docker的远程编程工具Remote DevelopmentDev Containers

还有Docker扩展:

安装完成后,可以在这个Docker的扩展中找到我们已经启动的容器镜像mindsponge:latest

然后选择相应的镜像,Attach到VSCode的编程环境中:

Attach成功之后,再打开自己的workspace就会看到我们的项目已经链接到相应的容器镜像环境中运行:

Python相关插件

此时链接到容器镜像环境中后,其实我们可以直接在Terminal里面去运行和测试,但是VSCode中有一些可以让Python编程和Debug更加方便的插件可以考虑一下。例如这个Code Runner,可以在编程界面的右上角增添一个三角形图标一键运行:

还有这个PylancePython也是非常推荐的扩展工具,可以实现ctrl+左键快捷跳转到定义处:

Git相关插件

这里推荐三个跟Git相关的扩展插件:GitLensGit GraphGit History

这几个插件可以把`git diff`的功能可视化,编辑界面更加漂亮和方便一些:
还可以把git相关的一些操作如`add`、`commit`、`log`、`push`等等可视化到界面里面,即使是对git的操作指令没有那么熟悉的用户也可以轻松使用:

关于QT工具的Debug

在Docker镜像中使用到一些QT软件(例如silx)的时候,有可能出现一些找不到相关lib的报错,此时需要打开QT的debug选项,确认清楚QT软件无法使用的原因:

export QT_DEBUG_PLUGINS=1

如果遇到一些明确的报错说:libxxx.so.1 not found。就可以使用apt install libxxx-1来安装相关的软件库。当然,这些相关的操作可以直接保存到镜像中,或者是通过修改Dockerfile来直接构建一个可用QT的基础镜像。我这里有一份安装silx需要用到的软件安装脚本,有需要的可以拿去用:

# export QT_DEBUG_PLUGINS=1
cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i "s@http://.*archive.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.list
sed -i "s@http://.*security.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.list
apt update
apt install -y libgl1
apt install -y libglib2.0-0
apt install -y libfontconfig1
apt install -y libxcb-icccm4 
apt install -y libxcb-image0
apt install -y libxcb-keysyms1
apt install -y libxcb-randr0
apt install -y libxcb-render-util0
apt install -y libxcb-shape0
apt install -y libxcb-xfixes0
apt install -y libxcb-xinerama0
apt install -y libxcb-xkb1
apt install -y libxkbcommon-x11-0
apt install -y libdbus-1-3
export QT_DEBUG_PLUGINS=
export XDG_RUNTIME_DIR=/usr/lib/

总结概要

本文介绍了一个在Win11系统下,通过WSL2+Docker+VSCode的方案搭建了一个mindspore-gpu的编程环境。这种方案既可以实现Linux系统编程以及部署的便捷性,又可以兼顾Windows系统强大的办公软件生态,甚至还可以借助Docker达到一定的软件可迁移性和可复制性。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/win11-mindspore.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

参考链接

  1. https://blog.csdn.net/joeyoj/article/details/136427362
posted @ 2024-06-09 16:34  DECHIN  阅读(347)  评论(0编辑  收藏  举报