由於工作上的需要,我最近也開始在Windows上運行Tensorflow。我發現網路上找得到的安裝流程大部分或多或少有些不合適,所以我想要自己來寫一份。另一方面也可以給未來的自己做參考。我將會介紹如何從零在Windows安裝Tensorflow,並且能夠運用GPU資源。
Python from Microsoft Store (二擇一之一)
Tensorflow是python 上的套件之一,python可以在微軟商店(Microsoft Store) 下載得到,或是使用Visual Studio 的python。我安裝的版本是微軟商店的python 3.9.9。

Python from Microsoft Visual Studio (二擇一之二)
微軟的Visual Studio(VS) 也有堤供python ,但首先要安裝Visual Studio。

安裝好VS之後,開啟Visual Studio Installer,點選”修改”,把python 打勾後按”確認修改”,python 就會裝到VS 上了。

安裝python完畢後進入 command prompt 或是 powershell,請檢測一下python能不能被執行,如果不行的話,請將python的路徑加入系統環境變數。
# 請在command prompt或power shell執行以下指令。
# 如果有報python not found 之類的錯誤,請接著設定系統環境變數。
> python

系統環境變數
Windows和 Unix-like系統一樣,有一組系統環境變數(System Environment Variables) 控制著電腦。其中path是用來r紀錄應用程式路徑的變數,只有在path的路徑內的應用程式可以無視路徑而被執行。通常在安裝應用程式時這些系統環境變數也會跟著被設定,但是有時會有一些意外,以下我示範如何將python加入系統環境變數。
首先找出python安裝的位置

在工作列搜尋”系統環境變數”

選擇環境變數(N)… -> USER的使用者變數(M) -> 雙擊”Path” -> 新增(N),將剛才找到的路徑貼上去。接著重開command prompt,應該就能夠執行python了。

以下我使用where.exe查詢python的安裝路徑,如果系統環境變數有被正確設定的話,應該要找得到python。

使用微軟商店安裝的python 應該都會加入系統環境變數,如果是使用Visual Studio 安裝的python 才有可能需要被手動設定系統環境變數。
Tensorflow
打開command prompt,執行以下指令就可以安裝 tensorflow以及支援GPU的tensorflow-gpu。
# 安裝 tensorflow 及tensorflow-gpu
> python -m pip install tensorflow tensorflow-gpu
# 你也可以指定版本
# tensorflow 2.7可以跟CUDA 11.5, cuDNN 8.3.1一起工作
> python -m pip install tensorflow==2.7 tensorflow-gpu==2.7
tensorflow-gpu可以被單獨安裝,但是需要配合適當版本的CUDA以及cuDNN才能正常工作。
CUDA
如果你跟我一樣安裝的是tensorflow 2.7,請下載CUDA 11.5並安裝。使用其他CUDA版本也可以,其他可能的組合請參考Tensorflow 的安裝說明。

cuDNN
cuDNN是基於CUDA、且專門為深度學習設計的API,下載前要先註冊成為Nvidia會員,並且填寫問券。請選擇cuDNN 8.3.1 for CUDA 11.5。cuDNN並沒有獨立的安裝檔,而是在下載後會得到一個壓縮檔。

解開壓縮檔,裡面有三個資料夾分別是bin, lib, and include。請將裡面的文件複製到相對應的CUDA資料夾。
cuDNN | CUDA |
---|---|
bin | bin |
lib | lib/x64 |
include | include |
tensorflow-gpu
如果我們沒有安裝到對的CUDA及cuDNN,tensorflow-gpu就不能正常運行。讓我們再次打開command prompt,執行python並import tensorflow,如果沒有錯誤訊息產生的話就是成功了。tensorflow-gpu會隨著tensorflow一起工作,不需要也不能單獨import。順帶一提,我這台電腦怪怪的,讀不到CUDA的dll。我參考這篇文章,在import tensorflow之前手動設定dll_directory,才能成功使用tensorflow。

編輯器: Jupyter Notebook
加碼如何在Windows安裝Jupyter Notebook。依照下方的指示,在command prompt執行指令就完成了。 我認為利用 jupyter 可區塊執行程式的特點做實驗還滿方便的,所以順便一提。
# 安裝jupyter
> python -m pip install jupyter
# 將jupyter的路徑加入環境變數path後,可以這樣執行jupyter
> jupyter notebook
# 如果不想要將jupyter的路徑加入環境變數,可以這樣執行jupyter
> python -m notebook

小結
最後來談談我在網路上找到的資源,我發現很多的介紹文做了很多多餘的安裝步驟卻又沒有詳細解釋為什麼要這樣做,甚至是tensorflow官方。所以我寫的這一篇只安裝最核心的三個軟體:python 上的tensorflow, CUDA, and cuDNN。那些多餘的步驟有些是為了虛擬環境設定,有些是為了在C/C++上使用tensorflow。我認為這些元素多餘的,因為初學者用不到,有經驗者也不需要閱讀相關文章。
所有文章分類