2024-07-23|閱讀時間 ‧ 約 26 分鐘

wsl2中架設tensorflowGPU環境

😊筆記的服務對象為「想要在windows上使用tensorflowGPU,但不想管理Tensorflow 2.11版以前的環境,也不想裝雙系統跟虛擬機,而且還要程式碼在windows本機的IDE上執行」的人。



1.前置作業

  • 在Windows上安裝Nvidia GPU驅動程式
    • 可以到直接到Nvidia根據GPU找到相應的驅動程式並下載
    • 也可以使用geforce experience來更新 (推薦這個,尤其是本身有在玩pc game的人)
  • 其他廠牌的GPU可能就需要自行解決了,因為我不熟😫
  • 安裝WSL2
    • 打開終端(cmd或power shell理論上都可以)後輸入wsl --install 即可
    • 安裝失敗可能是沒有開啟虛擬化選項,可在控制台→程式集勾選這些選項:

勾選後可能會系統會下載一些內容並提示重新開機

其他細節可參考微軟官方



2.wsl2內安裝並初始化Ubuntu

要安裝ubuntu,在終端上輸入:

wsl --install -d Ubuntu-20.04

設定好使用者名稱、密碼後便可以啟用

之後每次要進入wsl環境時只需打開終端(cmd或是PowerShell都行),並輸入wsl 即可

接著更新系統與軟件包

sudo apt update
sudo apt upgrade

其中包含安裝編譯工具(gcc之類的)



3.在wl2中安裝anaconda

官方網站找到你自己要的linux版anaconda installer

複製其連結後在wsl2中執行:

wget <https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh>

接著使用bash執行剛剛下載的sh檔:

bash Anaconda3-2024.02-1-Linux-x86_64.sh

接著無盡的enter

最後兩步會提示是否手動設定路徑與初始化

沒特別需求分別輸入enter與”y”完成步驟

否則要自己進入bashrc進行相關修改

重新開啟shell後即可使用anaconda



4.建立tensorflowGPU環境

在此使用虛擬環境來搭建

創建一個新的虛擬環境,我取的名為TF_GPU

並指定python版本(目前tensorflowGPU支援3.7~3.10)

conda create --name TF_GPU python=3.10 -y

接著啟用虛擬環境

conda activate TF_GPU

輸入後可以看到環境從(base)切換至(TF_GPU):

最後安裝相關依賴庫(包含tensorflow、cuda、nvcc等)

pip install tensorflow[and-cuda]

5.測試:tensorflowGPU是否建置成功

直接在虛擬環境中執行:

python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

該指令可以知道tensorflow 是否有被正確安裝與引用

以及能否偵測到實體GPU

成功的話會最後回傳類似的訊息:

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

若是失敗的話,可以嘗試降低tensorflow的版本,例如:

pip install tensorflow==2.15

目前自己在三台不同配備的電腦與筆電上,若是偵測不到GPU

降版後都可以解決



6.連結windows本機的jupyter-nootebook

在環境中安裝

sudo apt install jupyter-nootebook

安裝完後可以執行

jupyter-nootebook

接著便可以複製輸出的URLs到你的瀏覽器,並執行jupyter-nootebook:

而在創建專案或執行前,記得選擇正確的kernel:

點選上方的"kernel"→"change kernel"後,選取要啟動的kernel


接著就可以開心coding了



7.廢話


如果是跟我一樣自己在家搞side-project或自學機器學習,用這套方法來建置環境,我覺得還行。

但如果是工作上班的開發環境只允許你這樣做......

比起寫程式碼我覺得寫離職申請書可能更好

畢竟要AI工程師在自己的電腦訓練模型真的很雷🙃

真心想做機器學習麻煩花點錢架個工作站吧

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.