Windows11 应用 WSL Ubuntu 搭建 paddle 的 GPU 环境
最近降级到了 Windows11,忽然有个大胆的想法:在 Windows11 上装置 WSL,将所有开发环境装置到 WSL 中。这样就能在 windows 各种 QQ/ 微信 /Steam 玩的飞起,又能在 Linux 中敲代码。
以后工夫:2022-08-13,本文章中所有步骤都是依据官网的装置办法,如果工夫比拟长了,可能须要切换到最新的官网文档。
本文章为装置胜利后的分享,能够释怀参考。
paddle 的坑
- 目前不兼容 ubuntu22.04,查资料说是 paddle 不反对高版本 gcc
- 间接运行 paddle 提供的 docker 镜像是可行,然而 docker 内的 python 版本过低(python3.7),导致 matplotlib 无奈装置,如果不须要个别依赖包能够不必折腾
- 吐槽下,ubuntu22.04 都公布半年了,还做不到兼容,天天吹流弊有个锤子用
版本 / 型号
我的项目 | 型号 |
---|---|
以后工夫 | 2022-08-13 |
CPU | Intel i7-11700 |
显卡 | GTX 1050 Ti |
Windows 11 64 位 | 专业版 21H2 |
WSL2 | 5.10.102.1 |
Ubuntu | 22.04 |
CUDA | 11.7 |
cuDNN | 8.5.0.* |
疑难
在实现装置前,本人对 WSL 也有疑难的中央,可能大家也有相似的疑难,所以列举进去。
-
疑难 1:WSL 就是指 Windows 中运行的 Linux 零碎吗?
- WSL 是个工具,用于运行 / 管理子系统(如:Ubuntu/Centos)
- (为了不便表述,上面用 ubuntu 指代其中一个子系统)
-
疑难 2:WSL 吃资源吗?
- WSL 工具自身不吃资源,然而运行子系统须要吃资源,毕竟多跑了个零碎
-
疑难 3:WSL 装置后始终在后盾运行吃资源吗?
- WSL 是个工具,且子系统不会自启动(默认状况),还能够手动。即不应用的时候不吃资源
-
疑难 4:docker 要 Windows 中装置,还是要在 ubuntu 中装置?
- 在 Windows 中装置 Docker Desktop 相当于在 WSL 下又装置了一个跑 docker 的子系统
- 在 Ubuntu 中装置依照 docker 服务器装置的步骤装置即可
- 举荐在 ubuntu 中装置,更加节俭内存
-
以下数据是在 ” 工作管理器 ” 中的 ” 性能 ” 页面察看失去,数据并不谨严,不排除期间开了其他软件等影响,但内存使用量迥异不影响后果判断:
- 未关上所有子系统,内存应用:4.5G
- 关上 ubuntu20,内存应用:5.8G
- 关上 Ubuntu20 内的 docker,内存应用:6.1G
- 关上 ubuntu20,docker 子系统(装置在 windows 上),内存应用:10.7G
- 起因:装置在 windows 上的 docker 须要一个子系统来跑 dockers 服务,而在 ubuntu 中装置只是多运行了一个服务,节俭了零碎运行环境须要的资源
-
疑难 5:在 windows 中装置了驱动,ubuntu 中还须要装置显卡驱动 /CUDA/cuDNN 吗?
- ubuntu 中不须要再装置显卡驱动,然而须要装置 CUDA/cuDNN
-
总结
- WSL 是个子系统管理工具(能够类比为 docker 运行时)
- 从 WSL 或微软商店装置的 Ubuntu/Centos 才是真正的子系统(能够类比为 docker 的容器)
- Docker 最好装置在子系统中(节俭内存)
步骤
Windows11 装置 WSL
官网 - 装置 WSL
官网 -WSL 根本命令
- 关上 ”Windows 性能 ”,将 ”Hyper-V”/” 实用于 Linux 的 Windows 子系统 ”/” 虚构平台 ” 都勾选上,重启
- windows 零碎就主动装置了 wsl 工具
- 在微软商店搜寻 ”Ubuntu”,间接点击装置期待实现(这里抉择 ubuntu20.04,因为 paddle 不兼容 ubuntu22,因为)
- 关上 ”ubuntu20.04″,如果如下报错
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel
Press any key to continue...
- 请更新下 WSL 内核并重启即可
wsl --update
配置 ubuntu20.04 的环境
官网 - 装置 Docker Engine on Ubuntu
- 进入 ubuntu 外部
- 装置 miniconda 当作 python 管理工具
- 更换 ”ubuntu”/”conda”/”pypi” 国内镜像源
- 装置 Dockers,留神是装置 Dockers Engine, 而不是 Docker Desktop
驱动 /CUDA/cuDNN 关系
显卡、显卡驱动、cuda 之间的关系是什么?– 智星云服务的答复 – 知乎
应用层到硬件的分层构造 |
---|
TensorRT for Inference: Paddle |
GPU Accelerated SDKcuDNN |
CUDA ToolKits |
GPU Driver |
OS |
GPU Computing Servers |
装置 CUDA
官网 - 装置 cuda 命令
- 提前装置好 miniconda(装置命令会主动配置 conda 环境)
- 关上下面的地址,拜访比较慢,刷不进去多试几次,环境不同装置的命令也不同,抉择好参数后会有装置命令,照抄命令就能够了
- 有些文章说装置 cuda 后要改环境变量,我提前装好了 miniconda,所以装置好主动配置了,不须要改,关上 ”~/.bashrc” 最下方能够看到配置的内容
- 上面以我抉择的参数 ”Linux”/”x86_64″/”Ubuntu”/”20.04″/”deb(network)”,生成的代码如下:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda
- 在执行最初一个命令时,我遇到了个报错,依据提醒在命令前方加上 ”–fix-missing” 即可,大家装置的时候留神察看装置过程中是否有报错
主动增加的环境变量如下,自己的登录用户名为 ”x”,所以每个人装置的门路都有区别
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/x/miniconda3/bin/conda''shell.bash' 'hook' 2> /dev/null)"
if [$? -eq 0]; then
eval "$__conda_setup"
else
if [-f "/home/x/miniconda3/etc/profile.d/conda.sh"]; then
. "/home/x/miniconda3/etc/profile.d/conda.sh"
else
export PATH="/home/x/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
装置 cuDNN
官网 - 装置 cuDNN
- 留神看外面的目录,自行抉择对应的零碎和装置形式
- 我抉择的是 ubuntu 的网络装置,执行的代码如下:
# 因为文档中的地址应用了变量,用 export 形式赋值
export OS=ubuntu2004
export cudnn_version=8.5.0.*
export cuda_version=cuda11.7
# 装置
wget https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/cuda-${OS}.pin
sudo mv cuda-${OS}.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/ /"
sudo apt-get update
sudo apt-get install libcudnn8=${cudnn_version}-1+${cuda_version}
sudo apt-get install libcudnn8-dev=${cudnn_version}-1+${cuda_version}
实现
下面实现了所有配置,测试下是否胜利
- 进入 ubuntu
- 进入 conda 环境
-
关上 python 命令行
import paddle paddle.utils.run_check()
其余
- ubuntu 中能够间接拜访 windows 中的文件,挂载在 ”/mnt” 目录下
- WSL 搭配 vscode 应用十分顺滑,能够参考 VsCode 轻松应用 docker 容器 视频,将 ”Remote SSH” 插件改为 ”Remote WSL” 即可,操作大同小异