2018最新Win10安裝TensorFlow-gpu & Keras


CUDA、cuDNN 改動的速度相對快,網路資料說法分歧。在此紀錄2018年5月順利安裝過程。相較我於2016年的安裝經驗,現在 Windows 10 上安裝支援 GPU 的 Tensorflow Backend 已幾乎是無痛安裝,不考慮效能差異下Ubuntu 已無特別優勢。

Windows 10 之下的原生 Ubuntu 無法正確的抓到 GPU。強烈建議若要安裝 Ubuntu 版本請使用獨立 Ubuntu 環境。

安裝流程

作業系統: Windows 10 version 1709, OS Build 16299.431 (如何查版本?)
顯卡型號: Nvdia GTX 1080Ti

0. Python 版本

本文安裝環境全都是在 Anaconda 下的虛擬環境進行。請建立一全新乾淨的環境來完成安裝。Python 版本是使用 3.5, 不確定 2.7 與 3.6 是否可行,歡迎補充。
> conda create -n keras35 python=3.5
> conda activate keras35

1. 安裝 Nvidia 顯卡驅動

顯卡驅動更新頻率高,不需要追求是最新的版本。若是 GeForce 10 系列的使用者可以略過此步驟。我自己的顯卡驅動版本是 385.54 (文章發布當下最新版本為397.64)。

2. 下載並安裝 CUDA 9.0

CUDA Toolkit downloads 下載Tensorflow支援的版本。目前 (2018.5.12) Tensorflow 官方支援的版本是 CUDA Toolkit 9.0,未來讀者下載前請還是到TF的安裝文件確認是否有更新的版本出現。下載頁面最下方除了主檔案外還有兩個補丁 Patch 1 & 2,不需要安裝。

安裝完成後確認以下路徑是否存在:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0

3. 下載並安裝 cuDNN 7.0

cuDNN 開發者頁面 下載 Tensorflow支援的版本,下載會要求註冊會員 (免費)。目前 (2018.5.12) Tensorflow 官方支援的版本是 cuDNN 7.0,未來讀者下載前請還是到TF的安裝文件確認是否有更新的版本出現。

找不到 cuDNN 7.0 請按最下方的 Archived cuDNN Release。(如下圖)

下載後解壓縮會看到 “cuda” 資料夾,其中包含三個資料夾: “bin, include, lib” 把這三個資料夾直接拖曳到
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
路徑下即完成”安裝”動作。

4. 安裝 TensorFlow GPU

若先前已安裝Tensorflow需要移除,重新安裝 Tensorflow-gpu。由於 conda package 是社群自主管理而非官方直接管理,建議不要使用 conda install。應當使用 pip 進行安裝: 
pip install tensorflow-gpu

5. 加入系統環境變數 %PATH%

按左下方開始,搜尋 “Edit the system environment variables”,應當會開啟 “System Properties” 的 “Advanced” 分頁。點選 “Environment Variables” 後在下半部 System Variables 尋找名稱為 PATH 的變數,按 edit 編輯。

新增兩項路徑到 PATH 變數下
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp

6. 驗證 TensorFlow 安裝是否成功

關閉所有視窗 (或是登出再登入),開啟 Anaconda prompt 並進到剛剛安裝的虛擬環境 keras35中。開啟 Python,執行下列指令:
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

如下圖,看到 CPU 與 GPU 都有抓到即可。

7. 安裝 Keras

因為前面 TensorFlow-gpu 是透過 pip 而非 conda 安裝,這邊如果是改用 conda install keras 會出現 dependencies 辨識錯誤。所以一樣是使用 pip:
pip install keras
即可。 大功告成。


有發現錯誤的地方? 麻煩留言讓我知道,謝謝 :)

Source: Deep Learning on Medium