Windows11使用WSL Ubuntu搭建paddle的GPU環(huán)境

Windows11使用WSL Ubuntu搭建paddle的GPU環(huán)境

最近升級(jí)到了Windows11,突然有個(gè)大膽的想法:在Windows11上安裝WSL,將所有開發(fā)環(huán)境安裝到WSL中。這樣就能在windows各種QQ/微信/Steam玩的飛起,又能在Linux中敲代碼。

當(dāng)前時(shí)間:2022-08-13,本文章中所有步驟都是根據(jù)官網(wǎng)的安裝方法,如果時(shí)間比較長了,可能需要切換到最新的官方文檔。

本文章為安裝成功后的分享,可以放心參考。

paddle的坑

  1. 目前不兼容ubuntu22.04,查資料說是paddle不支持高版本gcc
  2. 直接運(yùn)行paddle提供的docker鏡像是可行,但是docker內(nèi)的python版本過低(python3.7),導(dǎo)致matplotlib無法安裝,如果不需要個(gè)別依賴包可以不用折騰
  3. 吐槽下,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.*

疑問

在完成安裝前,自己對(duì)WSL也有疑問的地方,可能大家也有類似的疑問,所以列舉出來。

  • 疑問1:WSL就是指Windows中運(yùn)行的Linux系統(tǒng)嗎?

    • WSL是個(gè)工具,用于運(yùn)行/管理子系統(tǒng)(如:Ubuntu/Centos)
    • (為了方便表述,下面用ubuntu指代其中一個(gè)子系統(tǒng))
  • 疑問2:WSL吃資源嗎?

    • WSL工具本身不吃資源,但是運(yùn)行子系統(tǒng)需要吃資源,畢竟多跑了個(gè)系統(tǒng)
  • 疑問3:WSL安裝后一直在后臺(tái)運(yùn)行吃資源嗎?

    • WSL是個(gè)工具,且子系統(tǒng)不會(huì)自啟動(dòng)(默認(rèn)情況),還可以手動(dòng)。即不使用的時(shí)候不吃資源
  • 疑問4:docker要Windows中安裝,還是要在ubuntu中安裝?

    • 在Windows中安裝Docker Desktop相當(dāng)于在WSL下又安裝了一個(gè)跑docker的子系統(tǒng)
    • 在Ubuntu中安裝按照docker服務(wù)器安裝的步驟安裝即可
    • 推薦在ubuntu中安裝,更加節(jié)省內(nèi)存
    • 以下數(shù)據(jù)是在"任務(wù)管理器"中的"性能"頁面觀察得到,數(shù)據(jù)并不嚴(yán)謹(jǐn),不排除期間開了其他軟件等影響,但內(nèi)存使用量懸殊不影響結(jié)果判斷:
      • 未打開所有子系統(tǒng),內(nèi)存使用:4.5G
      • 打開ubuntu20,內(nèi)存使用:5.8G
      • 打開Ubuntu20內(nèi)的docker,內(nèi)存使用:6.1G
      • 打開ubuntu20,docker子系統(tǒng)(安裝在windows上),內(nèi)存使用:10.7G
      • 原因:安裝在windows上的docker需要一個(gè)子系統(tǒng)來跑dockers服務(wù),而在ubuntu中安裝只是多運(yùn)行了一個(gè)服務(wù),節(jié)省了系統(tǒng)運(yùn)行環(huá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

官網(wǎng)-安裝WSL
官網(wǎng)-WSL基本命令

  1. 打開"Windows功能",將"Hyper-V"/"適用于Linux的Windows子系統(tǒng)"/"虛擬平臺(tái)"都勾選上,重啟

  2. windows系統(tǒng)就自動(dòng)安裝了wsl工具

  3. 在微軟商店搜索"Ubuntu",直接點(diǎn)擊安裝等待完成(這里選擇ubuntu20.04,因?yàn)閜addle不兼容ubuntu22,因?yàn)椋?/p>

  4. 打開"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...
  1. 請(qǐng)更新下WSL內(nèi)核并重啟即可
wsl --update

配置ubuntu20.04的環(huán)境

官網(wǎng)-安裝Docker Engine on Ubuntu

  1. 進(jìn)入ubuntu內(nèi)部
  2. 安裝miniconda當(dāng)作python管理工具
  3. 更換"ubuntu"/"conda"/"pypi"國內(nèi)鏡像源
  4. 安裝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

官網(wǎng)-安裝cuda命令

  1. 提前安裝好miniconda(安裝命令會(huì)自動(dòng)配置conda環(huán)境)
  2. 打開上面的地址,訪問比較慢,刷不出來多試幾次,環(huán)境不同安裝的命令也不同,選擇好參數(shù)后會(huì)有安裝命令,照抄命令就可以了
  3. 有些文章說安裝cuda后要改環(huán)境變量,我提前裝好了miniconda,所以安裝好自動(dòng)配置了,不需要改,打開"~/.bashrc"最下方可以看到配置的內(nèi)容
  4. 下面以我選擇的參數(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í)候注意觀察安裝過程中是否有報(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

官網(wǎng)-安裝cuDNN

  1. 注意看里面的目錄,自行選擇對(duì)應(yīng)的系統(tǒng)和安裝方式
  2. 我選擇的是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è)試下是否成功

  1. 進(jìn)入ubuntu
  2. 進(jìn)入conda環(huán)境
  3. 打開python命令行
import paddle
paddle.utils.run_check()

其他

  • ubuntu中可以直接訪問windows中的文件,掛載在"/mnt"目錄下
  • WSL搭配vscode使用非常順滑,可以參考VsCode輕松使用docker容器 視頻,將"Remote SSH"插件改為"Remote WSL"即可,操作大同小異
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容