Windows11使用WSL Ubuntu搭建paddle的GPU環(huán)境
最近升級(jí)到了Windows11砾脑,突然有個(gè)大膽的想法:在Windows11上安裝WSL幼驶,將所有開(kāi)發(fā)環(huán)境安裝到WSL中。這樣就能在windows各種QQ/微信/Steam玩的飛起韧衣,又能在Linux中敲代碼盅藻。
當(dāng)前時(shí)間:2022-08-13,本文章中所有步驟都是根據(jù)官網(wǎng)的安裝方法畅铭,如果時(shí)間比較長(zhǎng)了氏淑,可能需要切換到最新的官方文檔。
本文章為安裝成功后的分享硕噩,可以放心參考假残。
paddle的坑
- 目前不兼容ubuntu22.04,查資料說(shuō)是paddle不支持高版本gcc
- 直接運(yùn)行paddle提供的docker鏡像是可行榴徐,但是docker內(nèi)的python版本過(guò)低(python3.7)守问,導(dǎo)致matplotlib無(wú)法安裝,如果不需要個(gè)別依賴包可以不用折騰
- 吐槽下坑资,ubuntu22.04都發(fā)布半年了耗帕,還做不到兼容,天天吹流弊有個(gè)錘子用
版本/型號(hào)
項(xiàng)目 | 型號(hào) |
---|---|
當(dāng)前時(shí)間 | 2022-08-13 |
CPU | Intel i7-11700 |
顯卡 | GTX 1050 Ti |
Windows 11 64位 | 專業(yè)版 21H2 |
WSL2 | 5.10.102.1 |
Ubuntu | 22.04 |
CUDA | 11.7 |
cuDNN | 8.5.0.* |
疑問(wèn)
在完成安裝前袱贮,自己對(duì)WSL也有疑問(wèn)的地方仿便,可能大家也有類似的疑問(wèn),所以列舉出來(lái)。
-
疑問(wèn)1:WSL就是指Windows中運(yùn)行的Linux系統(tǒng)嗎嗽仪?
- WSL是個(gè)工具荒勇,用于運(yùn)行/管理子系統(tǒng)(如:Ubuntu/Centos)
- (為了方便表述,下面用ubuntu指代其中一個(gè)子系統(tǒng))
-
疑問(wèn)2:WSL吃資源嗎闻坚?
- WSL工具本身不吃資源沽翔,但是運(yùn)行子系統(tǒng)需要吃資源,畢竟多跑了個(gè)系統(tǒng)
-
疑問(wèn)3:WSL安裝后一直在后臺(tái)運(yùn)行吃資源嗎窿凤?
- WSL是個(gè)工具仅偎,且子系統(tǒng)不會(huì)自啟動(dòng)(默認(rèn)情況),還可以手動(dòng)雳殊。即不使用的時(shí)候不吃資源
-
疑問(wèn)4:docker要Windows中安裝橘沥,還是要在ubuntu中安裝?
- 在Windows中安裝Docker Desktop相當(dāng)于在WSL下又安裝了一個(gè)跑docker的子系統(tǒng)
- 在Ubuntu中安裝按照docker服務(wù)器安裝的步驟安裝即可
- 推薦在ubuntu中安裝夯秃,更加節(jié)省內(nèi)存
- 以下數(shù)據(jù)是在"任務(wù)管理器"中的"性能"頁(yè)面觀察得到座咆,數(shù)據(jù)并不嚴(yán)謹(jǐn),不排除期間開(kāi)了其他軟件等影響仓洼,但內(nèi)存使用量懸殊不影響結(jié)果判斷:
- 未打開(kāi)所有子系統(tǒng)介陶,內(nèi)存使用:4.5G
- 打開(kāi)ubuntu20,內(nèi)存使用:5.8G
- 打開(kāi)Ubuntu20內(nèi)的docker衬潦,內(nèi)存使用:6.1G
- 打開(kāi)ubuntu20斤蔓,docker子系統(tǒng)(安裝在windows上)植酥,內(nèi)存使用:10.7G
- 原因:安裝在windows上的docker需要一個(gè)子系統(tǒng)來(lái)跑dockers服務(wù)镀岛,而在ubuntu中安裝只是多運(yùn)行了一個(gè)服務(wù),節(jié)省了系統(tǒng)運(yùn)行環(huán)境需要的資源
-
疑問(wèn)5:在windows中安裝了驅(qū)動(dòng)友驮,ubuntu中還需要安裝顯卡驅(qū)動(dòng)/CUDA/cuDNN嗎漂羊?
- ubuntu中不需要再安裝顯卡驅(qū)動(dòng),但是需要安裝CUDA/cuDNN
-
總結(jié)
- WSL是個(gè)子系統(tǒng)管理工具(可以類比為docker運(yùn)行時(shí))
- 從WSL或微軟商店安裝的Ubuntu/Centos才是真正的子系統(tǒng)(可以類比為docker的容器)
- Docker最好安裝在子系統(tǒng)中(節(jié)省內(nèi)存)
步驟
Windows11安裝WSL
打開(kāi)"Windows功能"卸留,將"Hyper-V"/"適用于Linux的Windows子系統(tǒng)"/"虛擬平臺(tái)"都勾選上走越,重啟
windows系統(tǒng)就自動(dòng)安裝了wsl工具
在微軟商店搜索"Ubuntu",直接點(diǎn)擊安裝等待完成(這里選擇ubuntu20.04耻瑟,因?yàn)閜addle不兼容ubuntu22旨指,因?yàn)椋?/p>
打開(kāi)"ubuntu20.04",如果如下報(bào)錯(cuò)
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...
- 請(qǐng)更新下WSL內(nèi)核并重啟即可
wsl --update
配置ubuntu20.04的環(huán)境
- 進(jìn)入ubuntu內(nèi)部
- 安裝miniconda當(dāng)作python管理工具
- 更換"ubuntu"/"conda"/"pypi"國(guó)內(nèi)鏡像源
- 安裝Dockers喳整,注意是安裝Dockers Engine,而不是Docker Desktop
驅(qū)動(dòng)/CUDA/cuDNN關(guān)系
顯卡谆构、顯卡驅(qū)動(dòng)、cuda 之間的關(guān)系是什么框都? - 智星云服務(wù)的回答 - 知乎
應(yīng)用層到硬件的分層結(jié)構(gòu) |
---|
TensorRT for Inference: Paddle |
GPU Accelerated SDKcuDNN |
CUDA ToolKits |
GPU Driver |
OS |
GPU Computing Servers |
安裝CUDA
- 提前安裝好miniconda(安裝命令會(huì)自動(dòng)配置conda環(huán)境)
- 打開(kāi)上面的地址搬素,訪問(wèn)比較慢瑟匆,刷不出來(lái)多試幾次宗侦,環(huán)境不同安裝的命令也不同,選擇好參數(shù)后會(huì)有安裝命令,照抄命令就可以了
- 有些文章說(shuō)安裝cuda后要改環(huán)境變量论悴,我提前裝好了miniconda,所以安裝好自動(dòng)配置了崎苗,不需要改谷徙,打開(kāi)"~/.bashrc"最下方可以看到配置的內(nèi)容
- 下面以我選擇的參數(shù)"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
- 在執(zhí)行最后一個(gè)命令時(shí)揭措,我遇到了個(gè)報(bào)錯(cuò)戒傻,根據(jù)提示在命令后方加上"--fix-missing"即可,大家安裝的時(shí)候注意觀察安裝過(guò)程中是否有報(bào)錯(cuò)
自動(dòng)添加的環(huán)境變量如下蜂筹,本人的登錄用戶名為"x"需纳,所以每個(gè)人安裝的路徑都有區(qū)別
# >>> 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
- 注意看里面的目錄,自行選擇對(duì)應(yīng)的系統(tǒng)和安裝方式
- 我選擇的是ubuntu的網(wǎng)絡(luò)安裝艺挪,執(zhí)行的代碼如下:
# 由于文檔中的地址使用了變量不翩,用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}
完成
上面完成了所有配置,測(cè)試下是否成功
- 進(jìn)入ubuntu
- 進(jìn)入conda環(huán)境
- 打開(kāi)python命令行
import paddle
paddle.utils.run_check()
其他
- ubuntu中可以直接訪問(wèn)windows中的文件麻裳,掛載在"/mnt"目錄下
- WSL搭配vscode使用非常順滑口蝠,可以參考VsCode輕松使用docker容器 視頻,將"Remote SSH"插件改為"Remote WSL"即可津坑,操作大同小異