1. 程式人生 > >用GPU加速深度學習: Windows安裝CUDA+TensorFlow教程

用GPU加速深度學習: Windows安裝CUDA+TensorFlow教程

***根據讀者反饋,Python 3.6可用***

***軟體安裝有時效性,如果安裝失敗請參考評論區反饋***

***請勿私信問我為什麼“XXX安裝失敗”,我也不知道***

***精力有限,本文不再繼續更新***

0.背景

在的Windows上使用GPU進行深度學習一直都不是主流,我們一般都首選的Linux作為深度學習作業系統。但很多朋友如果只是想要了解深度學習,似乎沒有必要專門裝雙系統或者改用Linux系統。現實生活中,很多使用學校或者公司電腦的朋友也沒有操作許可權改換系統。那麼到底是否可以在視窗系統上設定深度學習框架,開發深度學習模型呢?

好訊息是越來越多的深度學習框架開始支援Windows中,這使得在的Windows上使用GPU加速學習過程也變成了可能。

很多朋友雖然沒有一塊很強勁的顯示卡,但也可以以較低的代價來了解在GPU上執行深度學習模型的過程值得欣喜的是,大部分Nvidia GeForce系列的顯示卡都可以使用CUDA,大部分有獨顯的筆記本理論上都可以使用GPU來“深度學習”。即使加速效果不明顯,但很多入門級的顯示卡依然可以用於TensorFlow,這至少可以幫助大家瞭解和熟悉這個框架

請不要讓缺少預算或者系統不相容成為探索路上的攔路虎和藉口。

本著探索的精神,我試著在兩臺的Windows電腦上安裝了CUDA(用於呼叫GPU)和TensorFlow(谷歌開發的深度學習工具庫),把這個過程記錄下來和大家分享。如果在安裝過程中大家遇到了什麼具體問題,也可以評論給我。

在開始之前想再次提醒大家,在視窗上安裝CUDA和TensorFlow有很多坑,對於各種軟體版本以及系統設定的要求可謂非常刁鑽,很容易就“誤入陷阱”。請大家嚴格對照我的操作流程,以防出錯。多圖長文預警!!!使用教程時建議在電腦端閱讀,可以放大圖片。

1.準備步驟

請按照介紹下載以下軟體備用,具體安裝流程在第二部分介紹。

簡單的說,我們需要Windows 7/8/10,Server 2012/2016 + Python 3.5 + Visual Studio 2015 + CUDA 8.0 + CuDnn 6.0。

1.1。作業系統要求和硬體要求:

  • Windows版本:Windows 7,Windows 8,Windows 10,Windows Server 12/16
  • 顯示卡版本:。請對照英偉達提供的支援CUDA的顯示卡列表,建議檢視英文版不知道自己顯示卡版本的可以通過“裝置管理器”檢視,或者使用第三方軟體GPU-Z檢視請注意,AMD的顯示卡不可以使用英偉達開發的CUDA ...

1.2。Python版本64位版本Python 3.5。注意Python3.6和2.7都不可以。地址和版本如下圖所示。如果使用錯誤的Python版本,將無法安裝TensorFlow!

1.3。Visual Studio版本

  • 我們使用的CUDA8.0 不支援Visual Studio 2017,使用VS2017會報錯。
  • Visual Studio 2015的話現在最新的版本是Visual Studio 2015 with Update 3,網上有人說不能用更新3這個版本,但根據我的親測可以使用VS2015更新3.下載免費的社群版本即可:  https:/ /imagine.microsoft.com/en-us/Catalog/Product/101。這個連結是ISO版本,大家也可選擇EXE版本安裝。其他VS2015的版本,如企業版(企業)或者專業版(專業)也可以,事實上我測試的時候安裝的是企業版
  • Visual Studio 2013根據文件介紹也可以,但我並沒有實際測試,不推薦使用。

如果你的電腦上已經安裝了VS2017或者VS2013,可以同時下載安裝VS2015,並不存在衝突。

1.4。CUDA版本:TensorFlow的支援的CUDA版本截止到今天(2017年10月1日)還是CUDA 8.0。千萬要注意英偉達官網上的預設版本是CUDA 9.0,請不要下載安裝這個版本

正確的8.0版本下載地址:  CUDA Toolkit 8.0 - 2017年2月  。網路比較好的朋友建議下載網路安裝版本,不要下載本地版。

1.5。CuDnn版本CuDnn 6.0  for CUDA8.0。這是唯一可以使用的版本,下載時請對應的你的作業系統選擇合適的版本。

1.6。所有必備檔案:

2.安裝步驟(建議使用管理員許可權賬號)

請儘量按照本文的安裝順序進行安裝,否則有可能執行失敗!最重要的是,安裝CUDA必須在安裝Visual Studio之後,這兩個順序不可以調換。

2.1。安裝的Python

建議直接用Python中的原生安裝包,安裝時建議勾選把Python的加到系統路徑當中去。

安裝完成後檢查的Python的版本和PIP 3的版本,那就是系統路徑中的預設的Python是3.54,且PIP 3的版本大於8.01。

檢測方法如上圖,開啟命令列分別輸入“python -V”和“pip3 -V”即可,正確的輸出如上圖。

2.2。安裝Visual Studio 2015

安裝VS2015沒什麼難度,只有一個選項需要自定義,別的選項都可以使用預設值 .VS2015的預設安裝不包括C ++的編譯器,必須手動勾選Visual C ++,不然會面臨後續的CUDA編譯錯誤。

主要原因是VS2015在安裝時並沒有預設安裝C ++的編譯器,也就是CL.exe。在後文中我會提到如果你沒裝Visual C ++系統會如何報錯。

2.3。安裝CUDA

安裝CUDA前請務必確認VS2015安裝成功!這個時候你需要安裝CUDA,雙擊我們下載的安裝檔案即可,一切都選擇預設即可。

安裝成功後會看到如下圖:

2.4。驗證CUDA安裝成功:

2.4.1。開啟命令列,也就是cmd然後輸入“nvcc -V”,如果安裝正確的話你應該看到這樣的輸出:

輸出中顯示了CUDA的版本是release 8.0。

2.4.2. 使用VS和CUDA編譯測試檔案

進入“C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0”資料夾,雙擊開啟 “Samples vs2015”這個檔案。

選擇編譯生成1_Utilities中所有的檔案。具體操作就是在1_Utilities上右鍵選擇Build,注意紅框部分的64位和Release:

這個時候,你可能遇到了編譯錯誤,如果你發現錯誤提示是無法找到 CUDA.prop那麼就是CUDA安裝錯誤,建議檢查CUDA版本重新安裝。

如果你看到這兩個錯誤:

  • TRK0005: Failed to locate: "CL.exe". The system cannot find the file specified.系統找不到CL.exe,無法編譯檔案。面對這個錯誤那就是你沒選Visual C++,需要重新安裝時選上這個元件。
  • MSB8036: Windows SDK 8.1 was not found.如果你同時看到了這個錯誤說你沒有安裝 Windows SDK 8.1,那也可以通過安裝C++ Redistribution這個來解決

如果你沒有遇到編譯錯誤,那麼應該看到下圖提示5個檔案編譯成功:

在成功後,你會發現在“C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Release”資料夾中出現了一堆檔案,我們主要需要deviceQuery和bandwidthTest。

2.4.3. deviceQuery和bandwidthTest驗證

執行我們剛才編譯出來的deviceQuery.exe,也就是在cmd中執行這個檔案,下圖中左下的紅框顯示 result = pass代表安裝測試成功,右下的紅框是你的顯示卡型號請確認型號正確。Tesla K80只是我的這臺機器型號,這個每個人可能都不一樣。

執行我們剛才編譯出來的bandwidthTest.exe,方法一樣,也是關注是否result = PASS。

2.5. 安裝CuDnn

解壓縮我們下載的CuDnn檔案,得到3個資料夾:bin, include, lib。如下圖所示,將這個三個資料夾複製到“C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0”。

2.6. 確認系統環境變數(Environment Variables)

確認Python3.5.4.和Pip3在系統環境變數中,檢查的方法上面已經介紹了。

開啟系統環境變數設定,以Win10為例,請參考百度經驗介紹。

確認CUDA_PATH和CUDA_PATH_V8.0已經存在

手動新增 “C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0\bin”到Path裡面。

2.7. 安裝TensorFlow的GPU版本

開啟cmd,輸入“pip3 install tensorflow-gpu”

我因為已經安裝過了,所以顯示已經安裝。此處要注意三點:

  • 要用pip3而不是pip
  • 要安裝tensorflow-gpu,而不是tensorflow
  • 如果安裝失敗,很有可能你的Python版本不是3.5.,或者pip3版本太低,可以使用"pip3 install --upgrade pip3"來升級pip3

3. 第一個TensorFlow程式!

恭喜你,我們離勝利已經一步之遙了:) 讓我們來驗證我們安裝的TensorFlow可以使用GPU!

開啟cmd,輸入以下指令開啟python的互動式shell。

首先匯入tensorflow:

import tensorflow as tf

接著每次輸入一行程式碼,並回車,你應該可以看到下圖中表明你的GPU已經開始工作啦〜

a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

print sess.run(c)

你可能在匯入TensorFlow時遇到了錯誤,如下圖。這是因為你的CuDnn設定錯誤,請參考本文2.6來修復。

寫在最後

實踐是檢驗真理的唯一標準,時間也是。在所有人都在大力鼓吹深度學習的今天,不管你喜歡還是反對,我都希望你可以親自試試,感受一下:)

而現實生活中我們都有各種各樣的制約,比如系統版本限制,比如有限的顯示卡預算。這也是我寫這篇教程的目的,我不希望這些原因成為阻礙你探索研究的障礙。希望我的這篇文章為你的深度學習之路做出了一點微小的貢獻

歡迎來到深度學習的世界ʕ•ᴥ•ʔ