技术背景

笔者尝试过不少编程环境搭建的方案,例如常见的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

Win11系统下的MindSpore环境搭建的更多相关文章

  1. Mac系统下STF的环境搭建和运行

    本文参考以下文章整理:MAC 下 STF 的环境搭建和运行 一. 前言 STF,全称是Smartphone Test Farm,WEB 端批量移动设备管理控制工具,就是可以用浏览器来批量控制你的移动设 ...

  2. Windows系统下Android开发环境搭建

    “工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.ecl ...

  3. Mac系统下React Native环境搭建

    这里记录一下在Mac系统下搭建React Native开发环境的过程: 1. 安装HomeBrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.g ...

  4. Ubuntu系统下arm-linux-gcc交叉编译环境搭建过程

    搭建所需环境Linux版本:Ubuntu 14.10 交叉编译器版本:arm-linux-gcc-4.4.3资源链接 何为交叉编译环境搭建交叉编译环境,即安装.配置交叉编译工具链.在Ubuntu环境下 ...

  5. 基于VGGnet的人脸识别系统-ubuntu 系统下的Caffe环境搭建(CPU)

    对于caffe的系统一般使用linux系统,当然也有windows版本的caffe,不过如果你一开始使用了windows下面的caffe,后面学习的过程中,会经常遇到各种错误,网上下载的一些源码.模型 ...

  6. linux系统下深度学习环境搭建和使用

    作为一个AI工程师,对Linux的一些技能的掌握也能从一定层面反应工程师的资深水平. 要求1:基于SSH的远程访问(本篇文章) 能用一台笔记本电脑,远程登陆一台linux服务器 能随时使用笔记本电脑启 ...

  7. Windows系统下JAVA开发环境搭建

    首先我们需要下载JDK(JAVA Development Kit),JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库. 下载地址:http://www.or ...

  8. Linux Ubuntu系统下Java开发环境搭建

    操作系统:Linux x64 / Ubuntu 14.04 Java JDK版本:jdk-8u65-linux-x64.tar.gz 声明:转载请注明出处及本文链接 1. 前往ORACLE官网下载最新 ...

  9. windows系统下ruby开发环境的搭建方法

    ruby是一种简单快捷的面向对象的脚本语言,非常直观.下面说一下windows系统下ruby开发环境的搭建方法. 工具/原料 rubyinstaller.exe 方法/步骤 1 到如下网站去下载最新的 ...

  10. Android下OpenCV的环境搭建

    目录(?)[-] 前言 系统环境 相关工具 Android ADT环境搭建 Android SDK环境变量的配置 Android NDK的安装与配置 OpenCV for Android 环境搭建 基 ...

随机推荐

  1. Windows代理配合Burp抓取客户端+小程序数据包

    "感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!"  在渗透测 ...

  2. JVM简明笔记1:JVM 概述

    什么是JVM JVM 即 Java Virtual Machine,中文名为 Java虚拟机. 一般情况下 C/C++ 程序,编译成二进制文件后,就可以直接执行了: Java 需要使用 javac 编 ...

  3. 力扣13(java)-罗马数字转整数(简单)

    题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 ...

  4. 谈谈PolarDB-X在读写分离场景的实践

    简介: 针对写少读多的业务可以考虑通过添加数据库节点来使其达到提升性能的目的,但添加节点,往往涉及到数据的搬迁,扩容周期比较长,很难应对徒增的业务流量,这个时候可以考虑采用读写分离的方式,将读写流量做 ...

  5. 开源 Serverless 里程碑:Knative 1.0 来了

    ​简介:近期Knative发布了1.0版本,达到了一个重要的里程碑.Knative自2018年7月首次发布以来, 版本不断的迭代发展,除了无数的错误修复.稳定性和性能增强之外,按时间顺序还进行了一些改 ...

  6. 阿里云消息队列 RocketMQ 5.0 全新升级:消息、事件、流融合处理平台

    ​简介: RocketMQ5.0 的发布标志着阿里云消息从消息领域正式迈向了"消息.事件.流"场景大融合的新局面.未来阿里云消息产品的演进也将继续围绕消息.事件.流核心场景而开展. ...

  7. [FE] FastAdmin 动态下拉组件 Selectpage 自定义 data-params

    正常情况下,我们想获取列表只需要定义接口路径和要显示的字段名即可, 比如: <input id="c-package_ids" data-rule="require ...

  8. 006_Orcad创建Hetergeneous分裂元件

    006_Orcad创建Hetergeneous分裂元件 以169脚的EMMC为例: 分为两部分,用到的引脚和NC的引脚. 先画一个框,依据引脚功能添加引脚.A部分做好,做B部分.引脚多,可以用pin ...

  9. 后端每日一题 2:DNS 解析过程

    本文首发于公众号:腐烂的橘子 本文梗概: DNS 是什么,有什么作用 一条 DNS 记录是什么样的 DNS 域名解析原理 DNS 服务器如何抵御攻击 DNS 是什么,有什么作用 DNS(Domain ...

  10. 如何对一个新的 VSCode 配置 LaTeX

    texlive 的安装件参考资料 [1]. 往 VSCode 里面装 LaTeX Workshop 插件,也可以直接搜 James-Yu.latex-workshop. Ctrl+Shift+P 打开 ...