由於新版的 TensorFlow (Version >= 2.11) 即不支援 Windows 平台。所以如果有需要在 Windows 下使用新版的 TensorFlow-gpu 有 DirectML,抑或是通過 WSL (Windows Subsystem for Linux)使用。本教學將使用 TensorFlow 運行在 WSL,實現新版的 TensorFlow 模型訓練。
WSL 安裝方式有兩種,第一種是通過 Powershell 安裝,而第二種是通過 Windows Store 安裝。
使用管理員權限在 Powershell 中使用 wsl --list --online
可以查看所有 WSL 可以安裝的 Linux 發行版。
接著使用 wsl --install -d <Distribution Name>
。將 <Distribution Name>
取代為想要安裝的散發套件名稱。 安裝後,並重新啟動電腦,即可完成 WSL 的安裝。
在 Windows Store 搜尋想要安裝的 WSL 發行版後,點選安裝。若沒有電腦從未安裝過 WSL,將會跳出一些腳本,請依照腳本指示,進行操作。等待安裝完成後,重新啟動電腦,即可完成 WSL 的安裝。
相關連結:Debian 商店連結、Ubuntu 24.04 LTS 商店連結、Kali Linux 商店連結
這邊的環境將以 TensorFlow 2.19.0 為基準進行安裝教學。
開啟 WSL 安裝完成相關的設定後,請先更新系統。
由於 TensorFlow 2.19 with GPU 在 Linux 推薦的環境如下圖 (由於中文文檔更新較慢,若自己需要查看相關文檔,語言請選用 "English",不要使用 "繁體中文"),
因此請依照頁面中的指示,安裝 CUDA 12.5 及 cuDNN 9.3 (連結中的版本已經先選好 CUDA 12.5 on WSL-Ubuntu 及 cuDNN 9.3 on Ubuntu 24.04 版本)。
CUDA 12.5 for Linux WSL-Ubuntu 2.0 x86_64 版本安裝指令
cuDNN 9.3 for Linux Ubuntu 24.04 x86_64 版本安裝指令 (先使用前 3 個指令即可)
接者使用下列指令將相關的函式庫安裝 (下列函式庫僅適用於 cuDNN 9.3 for CUDA 12,若需要使用其他的 cuDNN for CUDA 版本,請嘗試使用 sudo apt list -a 函式庫名稱
將對的版本號碼填到 =
後面)。
參考網址:Installing cuDNN Debian Packages
接著使用 apt-mark
將上面的三個函式庫鎖定,避免被更新。
安裝完成後,使用 nvcc -V
確認是否有以下輸出,若有則代表 CUDA 安裝成功。
nvcc -V
沒有輸出
由於 nvcc 可能沒有被加入 PATH 中,請使用以下指令將 nvcc 加入 PATH 後再進行測試。
使用 grep -E '#define CUDNN_(MAJOR|MINOR|PATCHLEVEL)' /usr/include/cudnn_version.h
查詢 cuDNN 的版本。若輸出如下,則代表 cuDNN 9.3 安裝成功。
以下安裝方式將使用 pip 安裝。此步驟也可以透過 conda 安裝,可以自行查閱相關的教學。
sudo apt install Jupyter
安裝 Jupyter 相關套件。jupyter notebook
即可在瀏覽器使用 localhost:8888
使用 Jupyter Notebook。python3 -m venv .venv
建立虛擬環境source ./.venv/bin/activate
啟動虛擬環境pip install numpy tensorflow pandas matplotlib scikit-learn ipykernel
安裝 TensorFlow、NumPy、pandas、Matplotlib、scikit-learn、IPython Kernel for Jupyter。python -m ipykernel install --user --name .venv --display-name "Python 3 (TensorFlow)"
建立可用於 Jupyter Notebook 的 Kernel。在 Jupyter Notebook 中使用以下程式,確認是否在 TensorFlow 中是否可以調用 GPU。
亦或是在已經啟用虛擬環境的 Terminal 中使用 python -c "import tensorflow as tf; print(tf.sysconfig.get_build_info())"
若出現以下錯誤,你有解法的話,也請救救我。我目前仍然無法解決。
疑似可以在 import tensorflow
前先使用 import os;os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
解決此問題。
若在執行結束後發現 VRAM 占用沒有被釋放掉,可以參考 此篇 釋放 VRAM