Win11 + WSL2 + cuda + TensorFlow的深度學習開發(fā)環(huán)境的搭建 并連接mac

前言

前段時間升級了windows臺式機梗顺,由于雙系統(tǒng)實在過于麻煩勤晚,而且現在wsl2已經很成熟了急鳄, 可以帶來比較好的windows上的開發(fā)體驗耕驰, 但是在環(huán)境準備過程中還是有不少坑的拳芙, 更具網上的資料和官方文檔整理一下, 該文檔僅代表win11的環(huán)境囊颅,win10是否適用不清楚

系統(tǒng)環(huán)境

  • 硬件
    • 12th Gen Intel(R) Core(TM) i7-12700KF
    • 32G 3600
    • RTX3070ti
  • 系統(tǒng)
    • Windows11 21H2
    • WSL2
    • Ubuntu2004

WSL2 Install

  1. 開啟Windows功能: 系統(tǒng)設置 -> 應用 -> 可選功能 -> 最下邊的 「更多 Windows 功能」 -> 找到并勾選 「Hyper-V」和「適用于 Linux 的 Windows 子系統(tǒng)」-> 點擊確定
# 命令行開啟虛擬化(如果下面安裝過程中報錯的話)
bcdedit /set hypervisorlaunchtype auto

WRAN: 重啟電腦

image.png
  1. 配置和安裝wsl2和ubuntu
# Wran: 以管理員身份運行terminal
# 1. 設置版本為wsl2
wsl --set-default-version 2
# 更新wsl
wsl --update
# 查看可安裝的Linux版本
wsl --list online
# 安裝Ubuntu20.04
wsl --install -d Ubuntu-20.04
  1. 安裝完成后會自動啟動Ubuntu, 然后按照提示配置基本信息

Cuda Install

首先在windows上去官網下載并安裝(更新)顯卡驅動

windows上顯卡驅動安裝成功以后wsl2下的ubuntu可以使用nvidia-smi查看gpu的運行狀態(tài)(以管理員啟動terminal)

image.png

安裝Cuda

我測試的時候官方文檔推薦的方式是使用cuda-toolkit安裝11.4版本, 但是我發(fā)現和tensorflow還存在兼容性問題, 所以我選擇使用官方安裝包安裝11.2版本的cuda(后面會接受toolkit的方式)

方法1. 官方cuda包安裝

# 下載官方cuda安裝程序
wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run

# 執(zhí)行安裝程序安裝cuda(根據提示操作)
sudo sh cuda_11.2.0_460.27.04_linux.run

方法2. cuda-toolkit安裝

sudo dpkg -i cuda*ubuntu*_amd64.deb
sudo dpkg -i cuda*-cross-aarch64*_all.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-x-x -y
sudo apt-get install cuda-cross-aarch64* -y

添加環(huán)境變量

vim ~/.bashrc

# cuda
export CUDA_HOME="/usr/local/cuda-11.2"
export PATH="${CUDA_HOME}/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH"

source ~/.bashrc

安裝CUDnn

首先去官網下載對應版本的包https://developer.nvidia.com/rdp/cudnn-archive(如果沒有nv賬號的需要先注冊賬號)

# 扔到ubuntu上(我選擇的是 cudnn-11.2-linux-x64-v8.1.1.33.tgz)
# 解壓
tar tar zxvf ./cudnn-11.2-linux-x64-v8.1.1.33.tgz 

# 移動
sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.2/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-11.2/lib64
sudo chmod a+r /usr/local/cuda-11.2/include/cudnn*.h 
sudo chmod a+r /usr/local/cuda-11.2/lib64/libcudnn*

安裝TensorFlow

注意: tensoflow的版本對于cuda和cudnn的版本, 可以去官網查詢https://www.tensorflow.org/install/source#gpu
(tensorflow1.0的版本是分gpu和cpu兩種的, 而2.0以后就不分了)

# TensorFlow 2
pip3 install tensorflow==2.6.0

# TensorFlow 1需要單獨制定gpu的版本, 不過官網顯示1.0的版本不兼容python3.8和當前版本的cuda所以我沒有做測試

測試GPU的連接

import tensorflow as tf

print(tf.test.is_built_with_gpu_support())
print(tf.config.list_physical_devices())


# terminal output
root@iMac:~/susur/PythonProject# python3 -u "/root/susur/PythonProject/tf_test.py"
True
2022-04-18 13:46:52.440924: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:923] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
2022-04-18 13:46:52.464878: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:923] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
2022-04-18 13:46:52.465102: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:923] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

這個ould not open file to read NUMA node:...的警告是wsl的通病, 官方的解釋是無害警告, 可以正常運行;

VSCode on WSL

  1. 安裝插件: Remote - WSL
image.png
  1. 登入wsl (就可以使用vscode on wsl 開發(fā)代碼了)


    image.png

Mac ssh登入Wsl2

windows上開發(fā)和調試還是不習慣所以我嘗試了一下Mac遠程連接wsl的方式, 感覺下來還是挺好用的

除了完成傳統(tǒng)linux環(huán)境下ssh的配置以外, 還需要注意幾點

  1. wsl2可以和windows本機共享一個ip, 而wsl2默認的ssh 端口為23, 也就是說其ssh-host為${you-windows-ip}:23, (這里要注意的是, wsl2上的端口要避免和windows上產生沖突);
  2. 雖然是共享ip,但是外界并不能直接訪問wsl2, 需要配置端口映射才能訪問;
  3. 需要在防火墻開發(fā)端口的訪問權限;

防火墻開發(fā)端口

Windows安全中心 -> 防火墻和網絡保護 -> 高級設置


image.png
image.png

配置開放端口


image.png
image.png
image.png

設置端口映射

# option prot proxy
netsh interface portproxy add v4tov4 listenport=23 listenaddress=0.0.0.0 connectport=23 connectaddress=localhost
# show port proxy
netsh interface portproxy show all


偵聽 ipv4:                 連接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
0.0.0.0         23          localhost       23

然后設置完其他常規(guī)的ssh配置以后mac上就可以正常使用ssh連接wsl2了

image.png

VSCode on Wsl for Mac

在mac端的vscode上安裝插件: Remote-ssh

然后在~/.ssh/config文件中配置ssh連接信息就可以了

# my windows wsl2
Host Wsl2
  HostName 192.168.31.100
  User root
  Port 23
image.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末环戈,一起剝皮案震驚了整個濱河市傲宜,隨后出現的幾起案子芥吟,更是在濱河造成了極大的恐慌侦铜,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钟鸵,死亡現場離奇詭異钉稍,居然都是意外死亡,警方通過查閱死者的電腦和手機棺耍,發(fā)現死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門贡未,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒙袍,你說我怎么就攤上這事俊卤。” “怎么了害幅?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵消恍,是天一觀的道長。 經常有香客問我以现,道長狠怨,這世上最難降的妖魔是什么约啊? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮佣赖,結果婚禮上恰矩,老公的妹妹穿的比我還像新娘。我一直安慰自己憎蛤,他們只是感情好外傅,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俩檬,像睡著了一般萎胰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豆胸,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天奥洼,我揣著相機與錄音巷疼,去河邊找鬼晚胡。 笑死,一個胖子當著我的面吹牛嚼沿,可吹牛的內容都是我干的估盘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼骡尽,長吁一口氣:“原來是場噩夢啊……” “哼遣妥!你這毒婦竟也來了?” 一聲冷哼從身側響起攀细,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤箫踩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谭贪,有當地人在樹林里發(fā)現了一具尸體境钟,經...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年俭识,在試婚紗的時候發(fā)現自己被綠了慨削。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡套媚,死狀恐怖缚态,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情堤瘤,我是刑警寧澤玫芦,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站本辐,受9級特大地震影響姨俩,放射性物質發(fā)生泄漏蘸拔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一环葵、第九天 我趴在偏房一處隱蔽的房頂上張望调窍。 院中可真熱鬧,春花似錦张遭、人聲如沸邓萨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缔恳。三九已至,卻和暖如春洁闰,著一層夾襖步出監(jiān)牢的瞬間歉甚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工扑眉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纸泄,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓腰素,卻偏偏與公主長得像聘裁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子弓千,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內容