最近準備嘗試跑一跑 TensorFlow GPU 訓練模型,平時開發用的 MBP,無賴顯卡是 AMD 只支持 CPU 訓練,但恰有閒置 Win10 筆記本電腦一臺顯卡 NVIDIA 支持 CUDA® 。html
Tensorflow GPU 訓練加速須要支持 CUDA® 的 GPU 顯卡,這裏提到的 CUDA 指的是,是 NVIDIA 研發的一種並行計算平臺和編程模型,它能夠經過利用 GPU 的處理能力,可大幅提高計算性能的技術,更多查看相關內容。python
環境搭建過程總體比較簡單,查找下載相關工具包須要搗騰一會。git
首先查看本身的顯卡型號是否知足條件,TensorFlow 官方文檔硬件要求提到了,CUDA® 架構爲 3.五、3.七、5.二、6.0、6.一、7.0 或更高的 NVIDIA® GPU 卡。github
第一步查看本身的顯卡型號,進入 NVIDIA 控制面板,點擊系統信息。web
顯卡型號爲 GeForce GTX 850M,電腦比較老很早前的。編程
顯卡型號爲 GeForce GTX 850M,點擊查看支持 CUDA® 的 GPU 卡列表,查看顯卡型號是否在支持的列表裏面。windows
計算能力爲 5,顯卡支持 CUDA ,接下來查看 CUDA 驅動版本,NVIDIA 控制面板,系統信息的組件裏面。網絡
版本爲 11.1.96,在 TensorFlow 支持 CUDA 驅動版本範圍上,若是版本太低可查看下面提到的軟件下載進行安裝升級最新驅動。架構
輸入信息查詢顯卡驅動,下載安裝最新的 NVIDIA® GPU 驅動程序,方便後面支持 CUDA Toolkit 安裝 10.1 版本,CUDA Toolkit 10.1 須要驅動版本 418.x 或更高版本。編輯器
版本號爲 456.71,知足要求,而後下載下來後安裝驅動。
CUDA 工具包提供了用於建立高性能GPU加速應用程序的開發環境。TensorFlow(TensorFlow 2.1.0 及更高版本)支持 CUDA® 10.1 的 CUDA® Toolkit 。
選擇臨時文件目錄,這裏選擇了默認設置。
而後一直下一步,直到這裏,若是電腦上面沒有安裝 Visual Studio 會提示你安裝 Visual Studio,若是後續有打算從源碼構建 Tensorflow,則須要安裝,具體安裝內容可查看 在 Windows 環境中從源代碼構建。
安裝完成以後,會自動添加了幾個環境變量到系統中,打開終端裏面輸入 nvcc -V
驗證安裝結果。
cuDNN 是一個 GPU 加速的深度神經網絡庫,下載 cuDNN SDK 須要註冊 NVIDIA Developer Program,進入下載頁面後選擇 CUDA 10.1 的 cuDNN 7.6 版本。
下載成功以後將其壓縮包解壓,拷貝放到 CUDA 目錄 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\
下面,這裏拷貝是指將這三個目錄下面的文件拷貝放入到 CUDA v10.1 對應的目錄裏面。
用於可縮短用某些模型進行推斷的延遲時間並提升吞吐量,可選擇 Zip 方式安裝,這裏可選安裝。
使用 Anaconda 經過方便管理包依賴問題,,若是以爲 Anaconda 佔用磁盤空間過大可使用 miniconda,平時開發電腦上用的 miniconda,關於miniconda 安裝使用可點擊這個。
安裝過程也比較簡單,須要注意如下兩個地方。
Anaconda 安裝使用後佔有磁盤空間比較大,若是 C 盤空間有限不推薦安裝在 C盤。
下面有兩個選擇,第一個是將 Anaconda 添加到環境變量中,若是電腦上以前安裝了 Anaconda 的另外一個版本軟件會影響 Anaconda 的使用,添加到環境變量的好處是能夠直接打開終端執行相關命令管理包,若是不添加到環境變量也能夠在 windows 的開始菜單裏面找到 Anaconda Prompt ,而後在打開的終端上執行相關命令管理包,因此這裏能夠不添加到系統環境變量。
第二個是將 Anaconda 的 python 3.7 版本設置成我電腦上默認的 python,這樣你的 IDE 等編輯器會檢測到這個版本,方便後面在 IDE 調試代碼的時候能夠用到這個版本,若是以前電腦上有裝過 python 這裏可根據你的狀況適當選擇。
Anaconda 官方的數據包鏡像,下載比較緩慢,能夠考慮用清華的鏡像 https://mirrors.tuna.tsinghua...
將新的鏡像地址配置到 .condarc
文件,配置鏡像內容能夠查看 Anaconda 清華鏡像使用幫助。
打開安裝好的 Anaconda Navigator, 建立用於測試 tensorflow-gpu 虛擬環境。
須要注意的是,若是你用 pip 安裝官方發佈的 TensorFlow ,能夠直接安裝 tensorflow 包便可,即 pip install --upgrade tensorflow
,由於官方對於 TensorFlow 1.x,CPU 和 GPU 軟件包是分開的,而 2.x 將其打包在一塊兒的,另外 2.x GPU 軟件包也有發佈的,也能夠 pip install --upgrade tensorflow-gpu
安裝 GPU 包。
在使用 conda 安裝時, Anaconda Cloud 官方把 TensorFlow 2.x CPU 和 GPU 軟件包是拆分了的,應該是爲了減少包安裝體積。
使用 conda 安裝 tensorflow-gpu,在輸入欄輸入 tensorflow 選擇 tensorflow-gpu 點擊 Apply 便可。
打開當前環境的終端或打開 JupytarLab 或者 Notebook 運行如下代碼。
import tensorflow as tf from tensorflow.python.client import device_lib // 打印已有的 GPU print(tf.config.list_physical_devices('GPU')) // 打印 GPU 設備名稱 print(tf.test.gpu_device_name()) // 打印電腦上能夠用於計算的設備 print(device_lib.list_local_devices())
在 JupytarLab 運行結果爲
打印出來了可用於計算的設備有 CPU 與GPU,並分別打印出它們的信息及 GPU 計算能力,安裝成功以後,接下來就能夠跑代碼訓練神經元網絡了。
最後來跑一跑常見的一個入門 Hellow World DEMO,根據一個簡單的公式和構建一個神經網絡,簡單預測房屋的價格。
import tensorflow as tf import numpy as np from tensorflow import keras model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])]) model.compile(optimizer='sgd', loss='mean_squared_error') xs = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], dtype=float) ys = np.array([5.0, 6.5, 8.0, 9.5, 11.0, 12.5], dtype=float) model.fit(xs, ys, epochs=1000) print(model.predict([7.0]))
假如房子的訂價很簡單,若是一個帶臥室的房子是 15 萬 + 35 萬,也就是一間帶主臥的房子 50 萬,兩間臥室的房子 65 萬,注此類推。
輸入 6 條數據,預測 7 間臥室的房子多少錢,這裏把單位縮小,方便神經元網絡對數據的處理,輸入數據 1 表明一個帶臥室的房子,輸出 5,表示 50 萬。
訓練 1000 次,預測運行結果部分截圖以下。