Windows - Tensorflow GPU Setup 手把手教你於Tensorflow上啟用GPU
Introduction
這邊主要是教如何在Tensorflow上使用GPU,網路上有很多安裝教學,但是當你按照官方教學依序安裝,最終發現還是沒有成功,但霧沙沙的安裝了以下內容:
- CUDA 11.2 或是更高的版本
- CUDA Toolkit 11.2 或是更高的版本
- TensorFlow 直接安裝最新版本(沒選版本號)
你發現執行以下程式碼時卻列印出0
,那麼這篇文章就是你需要的。
1 | import tensorflow as tf |
通常遇到這個問題的主要原因是:
- 安裝的CUDA版本不對,一定要去看官方指定的版本確認當前使用Tensorflow的版本所對應的Python版本、CUDA版本和cuDNN版本
- 若安裝的Tensorflow版本不對,也會導致GPU無法使用
Prerequisite
- Anoconda 在開始前先確保安裝好Anoconda,可以參考官網的安裝教學
- Windows 11 這篇文章是在Windows 11上進行操作,如果你是Windows 10也可以參考這篇文章
Step 1. Install CUDA Toolkit
因為不確定版本是否有更換,因此這篇會著重在教你怎麼與時俱進的安裝CUDA,現在如果你前往TensorFlow進行版本確認可以發現建議的版本是CUDA 11.2,但是11.2因為只支援window10所以我還是下載最新的版本,這邊是可以正常運行。
Step 2. Setup Geforce Experience
接下來安裝好之後,打開Geforce Experience,並且選擇Studio Driver,這樣可以確保你的GPU可以正常運行。並且安裝好NVIDIA Studio Driver。
Step 3. Setup Environment Variables
根據官方的說明有要求要設定環境變數,將CUDA, cuDNN 安裝目錄至系統環境變數中,這樣才能讓Tensorflow正確的使用GPU。但是我這邊沒有設定cuDNN的相關環境變數,這個待會我們透過conda安裝。
下面的版本v11.0要根據你的安裝版本來設定,這邊是以v11.0為例
1 | SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin;%PATH% |
打開
System Properties -> Environment Variables -> System variables -> Path -> Edit -> New
-> 確認有以下內容
但是如果裝好CUDA正常來說它會自動幫你設定好,如果你發現沒有要記得設定喔!
Step 2. Create conda env
接下來打開你的Anaconda Prompt,我們會建議不要在base安裝太多套件,因此我們會建議你建立一個新的環境,並且安裝cuDNN。那何時才可以將套件裝在base呢? 當你確定這個套件是你每個專案都會使用到的時候,才可以安裝在base。
根據官方的說明可以發現tensorflow在windows所支援gpu的最新版本是3.10(一律看英文官方文件,中文的有時還沒更新
):
那我們先建立一個新的環境,並且設定python version為10。並且安裝相關的套件。
1 | conda create -n py310 python=3.10 |
Step 3. pip install cuDNN + cuda toolkit + tensorflow
安裝好並且啟用剛剛建置的環境後,接下來安裝cuDNN,這邊我們會使用conda安裝,這樣可以確保版本的一致性。然後我們也是一定要根據官方的版本來安裝,不然會導致GPU無法使用。可以看到這邊建議cuDNN 8.1版本。
因此我們在 py310
環境下安裝cuDNN 8.1
版本:
1 | conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0 |
如果你看到以下輸出就代表成功囉
1 | [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] |
Reference
- Windows環境下tensorflow使用GPU加速運算: 主要是從這篇發現版本沒裝對的問題,導致GPU無法使用
- TensorFlow GPU Installation on Windows 11: A Step-by-Step Guide:我的救命恩人,這位youtuber教學非常清楚,讓我成功啟用GPU
- Installing TensorFlow 2 GPU [Step-by-Step Guide]: 最一開始跟著這篇操作,但是沒有成功。