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

2021-01-07 雷鋒網

雷鋒網按:本文作者阿薩姆,本文首發於作者的知乎專欄《數據說》,雷鋒網獲其授權發布。

背景

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

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

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

本著探索的精神,我試著在兩臺Windows電腦上安裝了CUDA(用於調用GPU)和TensorFlow(谷歌開發的深度學習工具庫),把這個過程記錄下來和大家分享。

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

準備步驟

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

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

1.作業系統要求和硬體要求:

Windows版本:Windows 7,Windows 8,Windows 10,Windows Server 12/16

顯卡版本:請對照英偉達提供的支持CUDA的顯卡列表,建議查看英文版。不知道自己顯卡版本的可以通過「設備管理器」查看,或者使用第三方軟體GPU-Z查看。請注意,AMD的顯卡不可以使用英偉達開發的CUDA...

中文列表:CUDA - 支持CUDA的GPU - NVIDIA(英偉達)

英文列表:CUDA GPUs

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

3.Visual Studio版本:

我們使用的CUDA8.0不支持Visual Studio 2017,使用VS2017會報錯。

Visual Studio 2015的話現在最新的版本是Visual Studio 2015 with Update 3,網上有人說不能用Update 3這個版本,但根據我的親測可以使用VS2015 with Update 3。下載免費的Community版本即可: https://imagine.microsoft.com/en-us/Catalog/Product/101。這個連結是ISO版本,大家也可選擇EXE版本安裝。其他VS2015的版本,如企業版(Enterprise)或者專業版(Professional)也可以,事實上我測試的時候安裝的是企業版。

Visual Studio 2013根據文檔介紹也可以,但我並沒有實際測試,不推薦使用。

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

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

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

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

請特別注意下載CuDnn前必須註冊英偉達社區的會員,雖然說是英文的但非常簡單。 正確的下載版本如下圖所示:

6.所有必備文件:

安裝步驟(建議使用管理員權限帳號)

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

1.安裝Python

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

安裝完成後檢查Python的版本和PiP3的版本,那就是系統路徑中的默認Python是3.54,且Pip3的版本大於8.01。

檢測方法如上圖,打開命令行分別輸入 "python -V" 和 「pip3 -V」即可,正確的輸出如上圖。

2.安裝Visual Studio 2015

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

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

3.安裝CUDA

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

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

4.驗證CUDA安裝成功:

4.1. 打開命令行,也就是cmd然後輸入「nvcc -V」,如果安裝正確的話你應該看到這樣的輸出:

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

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。

4.3. deviceQuery和bandwidthTest驗證

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

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

5.安裝CuDnn

解壓縮我們下載的CuDnn文件,得到3個文件夾:bin, include, lib。如下圖所示,將這個三個文件夾複製到「C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0」。

6.確認系統環境變量(Environment Variables)

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

打開系統環境變量設置,以Win10為例,請參考百度經驗(http://t.cn/RYIJJht)介紹。

確認CUDA_PATH和CUDA_PATH_V8.0已經存在

手動添加 「C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0\bin」到Path裡面。

7.安裝TensorFlow的GPU版本

打開cmd,輸入「pip3 install tensorflow-gpu」

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

要用pip3而不是pip

要安裝tensorflow-gpu,而不是tensorflow

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

第一個TensorFlow程序!

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

打開cmd,輸入以下指令打開python的interactive 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)

你可能在import TensorFlow時遇到了錯誤,如下圖。這是因為你的CuDnn設置錯誤,請參考本文確認系統環境變量(Environment Variables)來修復。

寫在最後

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

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

歡迎來到深度學習的世界

相關焦點

  • 小叮噹機器學習:Python3.6配置TensorFlow的GPU版詳細安裝教程
    然而網上的大多數都是圍繞python2.7版本的tensorflow教程,下面我們就來看看在Centos7 +pyton3.6的環境下,我們怎麼安裝使用這個功能強大的開源庫的GPU版本。Step1.環境確認想要使用GPU版的TesnorFlow來加速我們的神經網絡運算,首先要確保,我們的GPU依賴環境已經搭好。
  • 技術乾貨|tensorflow-gpu 1.4詳細安裝教程
    ://github.com/tensorflow/tensorflow/releases  2.  1.確定版本  TensorFlow GitHub 頁面查看依賴的版本:  https://github.com/tensorflow/tensorflow/releases  2.下載  下載地址:  https://developer.nvidia.com/cudnn  3.安裝
  • 基於RTX2060構建TensorFlow-gpu(keras)學習平臺
    (安裝基本的anconda版本,用的3.5.2)1.建立虛擬環境:conda create --name tf36gpu python=3.6 anaconda2. 激活虛擬環境:activate tf36gpu3. 開始菜單運行anaconda navigator檢查是否安裝了notebook(默認有安裝)三、安裝tensorflow/keras在激活的環境中安裝:1.
  • 【阿星的學習筆記(1)】如何在windows安裝Theano +Keras +Tensorflow並使用GPU加速訓練神經網路
    本篇文章介紹如何安裝Theano 及Keras, Tensorflow深度學習的框架在windows環境上,並快速的使用Keras的內建範例來執行人工神經網絡的訓練。之前也有實作Tensorflow 及caffe在VM+ubuntu16.04環境安裝的經驗,甚至安裝在NVIDIA的Jetson TX1 的慘痛經驗XD(雖然後來也是有安裝成功)。
  • tensorflow2.1對應 GPU版本的安裝與卸載
    GTX965M顯卡,win10系統一、檢查tensorflow的Version假定tensorflow 安裝完成,安裝 tensorflow 請參考 集成環境,安裝超簡單>通過 命令行pythonimport tensorflow as tftf.
  • Win10安裝GPU版本的Tensorflow 2.1
    安裝目錄選擇默認配置就好,點下一步等等就安裝完成了。下載安裝,cuda 10.1對應的cudnn 7.6版本。(需要註冊NV帳號,微信登錄也行)https://developer.nvidia.com/rdp/cudnn-archive下載對應的cudnn,紅框裡的都可以。
  • 觀點| 別再使用pip安裝TensorFlow了!用conda吧~
    以下是使用 conda 而不用 pip 安裝 TensorFlow 的兩大原因:更快的 CPU 性能conda TensorFlow 包使用面向深度神經網絡的英特爾數學核心函數庫(Intel MKL-DNN),我們從 TensorFlow 1.9.0 版本開始。
  • 基於TensorFlow2.0的中文深度學習開源書來了!GitHub趨勢日榜第一
    十三 發自 凹非寺 量子位 報導 | 公眾號 QbitAITensorFlow 2.0 發布已有一個半月之久,你會用了嗎?近日,一個叫做深度學習開源書的項目在火了。GitHub趨勢日榜排名全球第一,已斬獲2K+星。為什麼這麼火?因為這是一本基於TensorFlow 2.0 正式版的中文深度學習開源書。
  • mnist tensorflow 預測專題及常見問題 - CSDN
    : 11.93GiB freeMemory: 11.81GiB2019-06-02 11:17:12.769954: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:897] successful NUMA node read from SysFS had negative value (-1), but there must be at
  • 如何在AMD的GPU上運行TensorFlow?
    對於 AMD 正在進行的深度學習加速工作而言,這是一座重大的裡程碑。 ROCm 即 Radeon 開放生態系統 (Radeon Open Ecosystem),是我們在 Linux 上進行 GPU 計算的開源軟體基礎。而 TensorFlow 實現則使用了 MIOpen,這是一個適用於深度學習的高度優化 GPU 例程庫。
  • 在Windows中安裝Tensorflow和Kears深度學習框架
    這個虛擬環境用來安裝TensorFlow的版本。在命令提示符窗口輸入下列命令: 建立Tensorflow Anaconda虛擬環境 conda create --name tensorflow python=3.5 anaconda 執行後屏界面顯示如圖3-9所示。
  • 人工智慧學習入門之TensorFlow2.2版本安裝(Windows10)
    activate tensorflow進入環境就是激活環境的意思,此時可以看到提示符前面有所變化,前面多了一個虛擬環境名稱的內容。如下圖圈畫的內容。(tensorflow) C:\User\SunnyZhang至此,我們已經具備了一個虛擬環境,然後我們就可以在此虛擬環境中進行相關操作了,比如安裝Tensorflow。
  • TensorFlow 攜手 NVIDIA,使用 TensorRT 優化 TensorFlow Serving...
    TensorFlow Serving 是應用於機器學習模型的靈活的高性能服務系統,而 NVIDIA TensorRT 則是一個用以實現高性能深度學習推理的平臺,將二者相結合後,用戶可以輕鬆地實現最佳性能的 GPU 推理。
  • 如何用一個Python示例入門TensorFlow?
    它為大多數主流程序語言進行深度學習領域的開發提供了應用程式接口。TensorFlow 是如何運作的呢? 它的整個解決方案是基於張量進行的,張量是 TensorFlow 的原始單元。TensorFlow 使用一個張量數據結構來表示所有數據。在數學中,張量是描述其他幾何對象之間的線性關係的幾何對象。在 TesnsorFlow 中,它們是多維數組或數據,比如矩陣。
  • TensorFlow 2.X,會是它走下神壇的開始嗎?|tensorflow|深度學習|...
    我們再去討論深度學習框架,吐槽它們的體驗,會不會有點過時?並不會,新模型與新算法,總是框架的第一生產力。  從 Theano 一代元老,到 TensorFlow 與 PyTorch 的兩元世界,到現在各個國產框架與工具組件的興起。深度學習框架,總是跟隨前沿 DL 技術的進步而改變。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    選自builtin作者:Vihar Kurama機器之心編譯參與:吳攀、杜偉谷歌的 Tensorflow 與 Facebook 的 PyTorch 一直是頗受社區歡迎的兩種深度學習框架。那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?
  • 英文教程太難啃?這裡有一份TensorFlow2.0中文教程
    今年 3 月份,谷歌在 Tensorflow Developer Summit 2019 大會上發布 TensorFlow 2.0 Alpha 版。作為當前最為流行的深度學習框架,2.0 Alpha 版的正式發布引人關注。近兩個月,網上已經出現了大量 TensorFlow 2.0 英文教程。在此文章中,機器之心為大家推薦一個持續更新的中文教程,以便大家學習。
  • 評測| 雲CPU上的TensorFlow基準測試:優於雲GPU的深度學習
    我一直在使用Keras和TensorFlow開展一些個人深度學習項目。但是,使用AmazonEC2和GoogleComputeEngine等雲伺服器來訓練神經網絡模型需要付費。鑑於本人目前並未工作,我必須留意無關花費,並儘可能地具有成本效益。我曾試為了省錢,試過在廉價的CPU而不是GPU上訓練我的深度學習模型,出乎意料的是,這只比在GPU上訓練略慢一些。
  • 一文上手最新Tensorflow2.0系列|TensorFlow2.0安裝
    Anaconda官網有各個平臺詳細的安裝使用教程:https://docs.anaconda.com/anaconda/install/。1.這裡需要注意,當我們要使用「pip」命令為我們創建的python虛擬環境安裝包時,需要使用這裡我們配置的「apip」命令,直接使用pip或pip3命令,會把包安裝到系統自帶的python環境中。2. 安裝TensorFlow我們可以直接使用「pip install tensorflow==2.0.0-alpha0」命令來進行安裝。
  • TensorFlow 2.0開源工具書,30天「無痛」上手
    雖說是「僅用 30 天即可掌握 TensorFlow 2.0」,但學習這個教程也需要一定的知識儲備作為前提。本書要求讀者具備一定的機器學習和深度學習理論基礎,同時使用過 Keras、Tensorflow1.0 或者 PyTorch 搭建訓練過模型。如果沒有任何基礎怎麼辦?