WSL2+ubuntu2004+cuda11.8+cudnn8.8開發(fā)環(huán)境搭建

wsl即適用于Windows的Linux子系統(tǒng)支持幾種常見的Linux系統(tǒng)刻剥,我主要用了ubuntu2004。


image.png
  1. 確實很方便滑凉,Windows下直接可以打開Linux環(huán)境欧聘,
  2. 顯卡直通,Linux子系統(tǒng)直接可以認(rèn)出Nvidia顯卡员淫,不用額外裝驅(qū)動合蔽,這個好像用其他虛機做不到。并且在子系統(tǒng)里跑cuda任務(wù)介返,可以直接在Windows任務(wù)管理器做性能監(jiān)控拴事,感覺還是方便的。
  3. Linux子系統(tǒng)可以從/mnt直接讀取Windows盤符圣蝎,例如讀取d盤的download的目錄:
cd /mnt/d/download

1. 系統(tǒng)環(huán)境要求

  1. 我用的win11刃宵,沒怎么在意操作系統(tǒng)要求,直接就是滿足的徘公,貌似專業(yè)版和家庭版都可以牲证。

  2. 控制面板->程序和功能->啟用或關(guān)閉windows功能,打開三個項目:

    • 虛擬機平臺
    • 適用于Linux的Windows子系統(tǒng)
    • Windows虛擬機監(jiān)控服務(wù)平臺(我沒開关面、沒問題) 坦袍,這個據(jù)說主要解決多個hypervisor共存問題,比如vmware+hyper-v


      image.png

2. WSL2操作(大多是命令行)

2.1 安裝wsl

理論上在管理員權(quán)限下命令提示符運行:

wsl --update

即可等太。

一些文章要求手動執(zhí)行兩個dism命令捂齐,但如果不出問題應(yīng)該可以不用執(zhí)行。

#開啟Windows Subsystem for Linux
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestar
#開啟虛擬機特性
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2.2 建議直接將默認(rèn)版本設(shè)置為WSL 2(但可能不做這一步默認(rèn)也是2)

wsl --set-default-version 2

2.3 檢查版本或狀態(tài)信息

wsl --status
wsl --version
wsl -l -v(主要是驗證安裝的)

在大多數(shù)情況下WSL2比1好缩抡,比如有完整的Linux內(nèi)核等等奠宜。WSL1明顯的好處只有一條:
從 Linux子系統(tǒng)中訪問 windows 中的文件時,仍然是 WSL1 快瞻想。

2.4 安裝Linux子系統(tǒng)

推薦直接到Windows Store中直接搜压真,比如Ubuntu 20.04等。


image.png

也可以用命令行通過網(wǎng)絡(luò)安裝蘑险,比如先列出可用的Linux發(fā)行版:

wsl --list --online
#或者
wsl --install

但我運行連接不上滴肿,參考其他文章,至少需要改DNS漠其,或者之間那個啥嘴高。
基本安裝指令:

wsl --install  <發(fā)行版名稱>

列出已經(jīng)安裝的子系統(tǒng):

wsl --list --verbose
或
wsl -l -v

但是上述兩種安裝方法,對后續(xù)的維護(hù)貌似是有差別的:

  • 用windows store做安裝和屎,后續(xù)有也可以直接在圖形界面刪除這個實例拴驮。
  • 用命令行方式安裝,卸載仍然要使用命令行方式柴信,否則重裝實例時會出錯:
wsl.exe --unregister Ubuntu-20.04

這里沒怎么做測試套啤,可能用store安裝之后,后續(xù)也需要unregister

2.5 修改安裝位置

默認(rèn)的安裝位置:

<用戶文件夾>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_<隨機數(shù)>

最后一段總之是CanonicalGroupLimited開頭的、很長的一個名字潜沦。在里面可以找到以一個名為LocalState文件夾萄涯,里面有個會有一個幾十GB的vhdx文件,這個應(yīng)該就是虛擬磁盤了唆鸡。
修改安裝位置理論上有兩種方式涝影,一個是安裝之前設(shè)定工作目錄(還沒測試):

wsl --cd <Directory>

或者采用后文介紹的快照回滾方法,在進(jìn)行回滾(import)時争占,可以指定一個新的位置燃逻。

2.6 啟動鏡像

可以在開始菜單找圖標(biāo),或者在命令行執(zhí)行:

wsl -d Ubuntu-20.04

貌似直接在命令行寫名字也能啟動:

ubuntu2004

在命令行環(huán)境直接exit就可以退出來臂痕。

2.7 如果啟動實例報錯

Error: 0x800701bc WSL 2 ??????????????????

網(wǎng)上搜這個文件下載安裝:

wsl_update_x64.msi

3. CUDA+CUDNN

3.1 安裝cuda

Nvidia的下載界面如圖所示:


image.png
  • 可以i直接選擇wsl-ubuntu伯襟,貌似這個是不帶顯卡驅(qū)動的,wsl方式不需要(有人說禁止)安裝nvidia驅(qū)動握童。
  • 有三種安裝方式可選姆怪, 有文章推薦使用runfile方式進(jìn)行安裝,但只說安裝沒啥差別澡绩,頁面下方就有安裝方法稽揭。
  • 他這個deb(network),下面的提示沒看懂英古,不知道如何體現(xiàn)出這是什么版本淀衣。
  • 此外,不同安裝方式召调,貌似卸載方式也是不同的,如果安裝錯誤蛮浑,runfile方式卸載起來好像容易一些唠叛,我之前用deb(network)部署,卸載時出了一些問題沮稚,我Ubuntu不是特別熟艺沼,沒深究。但如果一次性把版本和步驟都做完蕴掏,這些爛事就都遇不到了障般。

再安裝cuda toolkit:

sudo apt install nvidia-cuda-toolkit

查看一下安裝狀態(tài)、版本等信息:

nvcc -V
或
nvidia-smi
或
cat /usr/local/cuda/version.json 
#很多文章說查看的是version.txt盛杰,但至少11.8版本cuda沒有這個文件挽荡,只有json,意思應(yīng)該是一樣的即供,json內(nèi)容很多定拟。

配置環(huán)境變量:
編輯bashrc:

vim ~/.bashrc

在最后填寫兩行(注意路徑中的版本號):

export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

然后生效一下:

 source ~/.bashrc

3.2 cudnn

首先下載cudnn文件,建議直接下載對應(yīng)的deb包逗嫡。


image.png

WSL是能夠直接訪問windows目錄的青自,直接從/mnt文件夾下面就可以找到下載目錄和文件株依。

在文件所在目錄下執(zhí)行:

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.8.1.3_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
#第二句是根據(jù)系統(tǒng)提示加的,我之后又運行了一遍dpkg延窜,理論上不用
#這個更新一定執(zhí)行一下
sudo apt-get update

然后執(zhí)行三句話恋腕,暖它一整天:

sudo apt-get install libcudnn8=8.8.1.3-1+cuda11.8
sudo apt-get install libcudnn8-dev=8.8.1.3-1+cuda11.8
sudo apt-get install libcudnn8-samples=8.8.1.3-1+cuda11.8 (主要為了下面的測試)

注意對應(yīng)的cudnn的文件名:

cudnn-local-repo-ubuntu2004-8.8.1.3_1.0-1_amd64.deb

其中8.8.1.3,以及結(jié)合實際的cuda版本11.8逆瑞,這個信息一定要結(jié)合實際信息修修改荠藤,否則找不到包。

比如呆万,如果執(zhí)行結(jié)果信息中有Unable商源、not found啥的,就是字符串沒搞對:

E: Version '8.8.1.3_1.0-1+cuda11.8' for 'libcudnn8' was not found

總之這里一定要好好看輸出信息有沒有不對勁的地方谋减。

最后測試一下牡彻,首先建議執(zhí)行:

sudo apt-get install libfreeimage3 libfreeimage-dev

否則下面編譯時可能出現(xiàn):

fatal error: FreeImage.h: No such file or directory

執(zhí)行:

cp -r /usr/src/cudnn_samples_v8/ $HOME
cd  $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN

正常情況下,應(yīng)該一通輸出之后顯示

Test passed!

3.3 制作一個wsl快照

好不容易裝好的出爹,建議搞個快照備份一下:
管理員權(quán)限的宿主機命令提示符下執(zhí)行:

wsl --export Ubuntu-20.04 d:\downloda\wsl-ubuntu2004-20230626.tar

我沒有關(guān)虛機庄吼。但貌似導(dǎo)出的時候自己退出來了,導(dǎo)出過程大概用了幾分鐘严就,出來一個17GB的tar文件总寻,里面看上去就是文件目錄格式,應(yīng)該不包括內(nèi)存狀態(tài)梢为。

回滾的方法(只總結(jié)了網(wǎng)上的教程渐行,但不同版本教程基本都是這三步):

#先注銷虛機
wsl --unregister Ubuntu-20.04
#然后回滾(中間參數(shù)為還原的位置,可能可以不設(shè)置铸董,沒測試過)
wsl --import Ubuntu d:\wsl d:\downloda\wsl-ubuntu2004-20230626.tar
#設(shè)置默認(rèn)用戶名(ubuntu2004 是系統(tǒng)默認(rèn)給出的名字祟印,這個沒注意從哪里查)
ubuntu2004 config --default-user USERNAME

3.4 tensorflow裝一下看看

這個版本的ubuntu,自帶的python是3.8粟害,沒有pip蕴忆。建議裝完上述內(nèi)容,運行幾次”sudo apt-get update“之后悲幅,再根據(jù)提示安裝pip套鹅,麻煩會少一些。
直接在ubuntu環(huán)境下安裝tensorflow汰具,自動裝的2.12卓鹿,跑了個簡單代碼試了一下,確實能看出再跑GPU郁副,可以直接在windows任務(wù)管理器做監(jiān)控:


image.png

4. pycharm遠(yuǎn)程調(diào)試

  • 在Pycharm上編碼减牺,然后反正WSL可以訪問到windows文件系統(tǒng)的代碼,所以直接在wsl里面執(zhí)行python命令跑代碼就行,也可以直接再pycharm的終端窗口運行wsl命令拔疚,比如ubuntu2004肥隆,進(jìn)入虛擬機操作。
  • 注意linux下的代碼稚失,訪問windows路徑時的字符串寫法栋艳,別的沒啥了。
  • 其他更高級的辦法待查句各。

5. WSL的圖形化界面

參考微軟官網(wǎng):

使用 WSL 運行 Linux GUI 應(yīng)用 | Microsoft Learn

直接apt-get install需要的軟件即可吸占,比如gedit、或者Nautilus(一個文件管理器)等凿宾。安裝好之后可以直接運行軟件矾屯,軟件界面直接在windows中打開,十分的人性初厚。

image.png

6. 利用Docker實現(xiàn)GPU加速

參考微軟官網(wǎng)的文章:

WSL 中的 GPU 加速 ML 訓(xùn)練 | Microsoft Learn

基本一條一條照著操作即可件蚕,目前看不需要科學(xué)的那啥。
只有一條产禾,在執(zhí)行最后的docker run命令之前排作,重啟一下docker服務(wù)。

sudo service docker restart

否則找不到顯卡亚情。
這個教程里的容器妄痪,自帶cuda10.2,以及python3.6和tensorflow2.1楞件,版本比較老衫生,但確實可以直接用。不過我覺得這個容器的方法不如前面直接裝cuda的方式土浸。

99. troubleshoot

  1. 據(jù)說WSL2利用了hyper-v障簿,但我并沒有主動安裝hyper-v,不知道是否會有性能差異栅迄。
    但我利用:
bcdedit

命令查看信息時,有一條信息是:

hypervisorlaunchtype Auto

如果不是皆怕,則可以執(zhí)行:

bcdedit /set hypervisorlaunchtype auto

不知道是否是系統(tǒng)自動管理hyper-v的意思毅舆,這個沒查到有什么具體影響,沒問題可以先不管愈腾。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末憋活,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子虱黄,更是在濱河造成了極大的恐慌悦即,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辜梳,居然都是意外死亡粱甫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門作瞄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茶宵,“玉大人,你說我怎么就攤上這事宗挥∥谑” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵契耿,是天一觀的道長瞒大。 經(jīng)常有香客問我,道長搪桂,這世上最難降的妖魔是什么透敌? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮锅棕,結(jié)果婚禮上拙泽,老公的妹妹穿的比我還像新娘。我一直安慰自己裸燎,他們只是感情好顾瞻,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著德绿,像睡著了一般荷荤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上移稳,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天蕴纳,我揣著相機與錄音,去河邊找鬼个粱。 笑死古毛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的都许。 我是一名探鬼主播稻薇,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胶征!你這毒婦竟也來了塞椎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤睛低,失蹤者是張志新(化名)和其女友劉穎案狠,沒想到半個月后服傍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡骂铁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年吹零,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片从铲。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡瘪校,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出名段,到底是詐尸還是另有隱情阱扬,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布伸辟,位于F島的核電站麻惶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏信夫。R本人自食惡果不足惜窃蹋,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望静稻。 院中可真熱鬧警没,春花似錦、人聲如沸振湾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽押搪。三九已至树酪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間大州,已是汗流浹背续语。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厦画,地道東北人疮茄。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像根暑,于是被迫代替她去往敵國和親娃豹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348