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: 0x800701bcError: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernelPress 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.debsudo dpkg -i cuda-keyring_1.0-1_all.debsudo apt-get updatesudo 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" fifiunset __conda_setup# <<< conda initialize <<<
装置cuDNN
官网-装置cuDNN
- 留神看外面的目录,自行抉择对应的零碎和装置形式
- 我抉择的是ubuntu的网络装置,执行的代码如下:
# 因为文档中的地址应用了变量,用export形式赋值export OS=ubuntu2004export 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-600sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/3bf863cc.pubsudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/ /"sudo apt-get updatesudo apt-get install libcudnn8=${cudnn_version}-1+${cuda_version}sudo apt-get install libcudnn8-dev=${cudnn_version}-1+${cuda_version}
实现
下面实现了所有配置,测试下是否胜利
- 进入ubuntu
- 进入conda环境
关上python命令行
import paddlepaddle.utils.run_check()
其余
- ubuntu中能够间接拜访windows中的文件,挂载在"/mnt"目录下
- WSL搭配vscode应用十分顺滑,能够参考VsCode轻松应用docker容器 视频,将"Remote SSH"插件改为"Remote WSL"即可,操作大同小异