首页
/
每日頭條
/
科技
/
gpu加速能提高多少性能
gpu加速能提高多少性能
更新时间:2024-10-07 19:22:28

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

  背景

  在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版本即可: httet.com/uploads9/3/4a3e00070f98600ddc88.jpg" alt="gpu加速能提高多少性能(用GPU加速深度學習:)(4)" />

  安裝步驟(建議使用管理員權限賬号)

  請盡量按照本文的安裝順序進行安裝,否則有可能運行失敗!最重要的是,安裝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)來修複。

  

  寫在最後

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

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

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

  ,

Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved