鋒網(wǎng)按:本文作者阿薩姆,本文首發(fā)于作者的知乎專欄《數(shù)據(jù)說》,雷鋒網(wǎng)獲其授權(quán)發(fā)布。
在Windows上使用GPU進行深度學(xué)習(xí)一直都不是主流,我們一般都首選Linux作為深度學(xué)習(xí)操作系統(tǒng)。但很多朋友如果只是想要了解深度學(xué)習(xí),似乎沒有必要專門裝雙系統(tǒng)或者改用Linux。現(xiàn)實生活中,很多使用學(xué)校或者公司電腦的朋友也沒有操作權(quán)限改換系統(tǒng)。那么到底是否可以在Windows系統(tǒng)上設(shè)置深度學(xué)習(xí)框架,開發(fā)深度學(xué)習(xí)模型呢?
好消息是越來越多的深度學(xué)習(xí)框架開始支持Windows,這使得在Windows上使用GPU加速學(xué)習(xí)過程也變成了可能。很多朋友雖然沒有一塊很強勁的顯卡,但也可以以較低的代價來了解在GPU上運行深度學(xué)習(xí)模型的過程。值得欣喜的是,大部分Nvidia GeForce系列的顯卡都可以使用CUDA,大部分有獨顯的筆記本理論上都可以使用GPU來“深度學(xué)習(xí)”。即使加速效果不明顯,但很多入門級的顯卡依然可以用于TensorFlow,這至少可以幫助大家了解和熟悉這個框架。
請不要讓缺少預(yù)算或者系統(tǒng)不兼容成為探索路上的攔路虎和借口。
本著探索的精神,我試著在兩臺Windows電腦上安裝了CUDA(用于調(diào)用GPU)和TensorFlow(谷歌開發(fā)的深度學(xué)習(xí)工具庫),把這個過程記錄下來和大家分享。
在開始之前想再次提醒大家,在Windows上安裝CUDA和TensorFlow有很多坑,對于各種軟件版本以及系統(tǒng)設(shè)置的要求可謂非常刁鉆,很容易就“誤入陷阱”。請大家嚴格對照我的操作流程,以防出錯。多圖長文預(yù)警!!!使用教程時建議在電腦端閱讀,可以放大圖片。
請按照介紹下載以下軟件備用,具體安裝流程在第二部分介紹。
簡單的說,我們需要 Windows 7/8/10, Server 2012/2016 + Python 3.5 + Visual Studio 2015 + CUDA 8.0 + CuDnn 6.0。
1.操作系統(tǒng)要求和硬件要求:
Windows版本:Windows 7,Windows 8,Windows 10,Windows Server 12/16
顯卡版本:請對照英偉達提供的支持CUDA的顯卡列表,建議查看英文版。不知道自己顯卡版本的可以通過“設(shè)備管理器”查看,或者使用第三方軟件GPU-Z查看。請注意,AMD的顯卡不可以使用英偉達開發(fā)的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的話現(xiàn)在最新的版本是Visual Studio 2015 with Update 3,網(wǎng)上有人說不能用Update 3這個版本,但根據(jù)我的親測可以使用VS2015 with Update 3。下載免費的Community版本即可: https://imagine.microsoft.com/en-us/Catalog/Product/101。這個鏈接是ISO版本,大家也可選擇EXE版本安裝。其他VS2015的版本,如企業(yè)版(Enterprise)或者專業(yè)版(Professional)也可以,事實上我測試的時候安裝的是企業(yè)版。
Visual Studio 2013根據(jù)文檔介紹也可以,但我并沒有實際測試,不推薦使用。
如果你的電腦上已經(jīng)安裝了VS2017或者VS2013,可以同時下載安裝VS2015,并不存在沖突。
4.CUDA版本:TensorFlow的支持的CUDA版本截止到今天(2017年10月1日)還是 CUDA 8.0。千萬要注意英偉達官網(wǎng)上的默認版本是CUDA 9.0,請不要下載安裝這個版本。
正確的8.0版本下載地址: CUDA Toolkit 8.0 - Feb 2017。網(wǎng)絡(luò)比較好的朋友建議下載網(wǎng)絡(luò)安裝版本,不要下載本地版。
5.CuDnn版本:CuDnn 6.0for CUDA8.0。這是唯一可以使用的版本,下載時請對應(yīng)的你的操作系統(tǒng)選擇合適的版本。
請?zhí)貏e注意下載CuDnn前必須注冊英偉達社區(qū)的會員,雖然說是英文的但非常簡單。 正確的下載版本如下圖所示:
6.所有必備文件:
請盡量按照本文的安裝順序進行安裝,否則有可能運行失敗!最重要的是,安裝CUDA必須在安裝Visual Studio之后,這兩個順序不可以調(diào)換。
1.安裝Python
建議直接用Python的原生安裝包,安裝時建議勾選把Python加到系統(tǒng)路徑當中去。
安裝完成后檢查Python的版本和PiP3的版本,那就是系統(tǒng)路徑中的默認Python是3.54,且Pip3的版本大于8.01。
檢測方法如上圖,打開命令行分別輸入 "python -V" 和 “pip3 -V”即可,正確的輸出如上圖。
2.安裝Visual Studio 2015
安裝VS2015沒什么難度,只有一個選項需要自定義,別的選項都可以使用默認值。VS2015的默認安裝不包括C++的編譯器,必須手動勾選Visual C++,不然會面臨后續(xù)的CUDA編譯錯誤。
主要原因是VS2015在安裝時并沒有默認安裝C++的編譯器,也就是CL.exe。在后文中我會提到如果你沒裝Visual C++系統(tǒng)會如何報錯。
3.安裝CUDA
安裝CUDA前請務(wù)必確認VS2015安裝成功!這個時候你需要安裝CUDA,雙擊我們下載的安裝文件即可,一切都選擇默認即可。
安裝成功后會看到如下圖:
4.驗證CUDA安裝成功:
4.1. 打開命令行,也就是cmd然后輸入“nvcc -V”,如果安裝正確的話你應(yīng)該看到這樣的輸出:
輸出中顯示了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:
這個時候,你可能遇到了編譯錯誤,如果你發(fā)現(xiàn)錯誤提示是無法找到 CUDA.prop那么就是CUDA安裝錯誤,建議檢查CUDA版本重新安裝。
如果你看到這兩個錯誤:
TRK0005:Failed to locate: "CL.exe". The system cannot find the file specified.系統(tǒng)找不到CL.exe,無法編譯文件。面對這個錯誤那就是你沒選Visual C++,需要重新安裝時選上這個組件。
MSB8036:Windows SDK 8.1 was not found.如果你同時看到了這個錯誤說你沒有安裝 Windows SDK 8.1,那也可以通過安裝C++ Redistribution這個來解決。
如果你沒有遇到編譯錯誤,那么應(yīng)該看到下圖提示5個文件編譯成功:
在成功后,你會發(fā)現(xiàn)在“C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Release”文件夾中出現(xiàn)了一堆文件,我們主要需要deviceQuery和bandwidthTest。
4.3. deviceQuery和bandwidthTest驗證
運行我們剛才編譯出來的deviceQuery.exe,也就是在cmd中運行這個文件,下圖中左下的紅框顯示 result = pass代表安裝測試成功,右下的紅框是你的顯卡型號請確認型號正確。Tesla K80只是我的這臺機器型號,這個每個人可能都不一樣。
運行我們剛才編譯出來的bandwidthTest.exe,方法一樣,也是關(guān)注是否result = PASS。
5.安裝CuDnn
解壓縮我們下載的CuDnn文件,得到3個文件夾:bin, include, lib。如下圖所示,將這個三個文件夾復(fù)制到“C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0”。
6.確認系統(tǒng)環(huán)境變量(Environment Variables)
確認Python3.5.4.和Pip3在系統(tǒng)環(huán)境變量中,檢查的方法上面已經(jīng)介紹了。
打開系統(tǒng)環(huán)境變量設(shè)置,以Win10為例,請參考百度經(jīng)驗(http://t.cn/RYIJJht)介紹。
確認CUDA_PATH和CUDA_PATH_V8.0已經(jīng)存在
手動添加 “C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0\bin”到Path里面。
7.安裝TensorFlow的GPU版本
打開cmd,輸入“pip3 install tensorflow-gpu”
我因為已經(jīng)安裝過了,所以顯示已經(jīng)安裝。此處要注意三點:
要用pip3而不是pip
要安裝tensorflow-gpu,而不是tensorflow
如果安裝失敗,很有可能你的Python版本不是3.5.,或者pip3版本太低,可以使用"pip3 install --upgrade pip3"來升級pip3
恭喜你,我們離勝利已經(jīng)一步之遙了:) 讓我們來驗證我們安裝的TensorFlow可以使用GPU!
打開cmd,輸入以下指令打開python的interactive shell。
首先導(dǎo)入tensorflow:
import tensorflow as tf
接著每次輸入一行代碼,并回車,你應(yīng)該可以看到下圖中表明你的GPU已經(jīng)開始工作啦~
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設(shè)置錯誤,請參考本文確認系統(tǒng)環(huán)境變量(Environment Variables)來修復(fù)。
實踐是檢驗真理的唯一標準,時間也是。在所有人都在大力鼓吹深度學(xué)習(xí)的今天,不管你喜歡還是反對,我都希望你可以親自試試,感受一下:)
而現(xiàn)實生活中我們都有各種各樣的制約,比如系統(tǒng)版本限制、比如有限的顯卡預(yù)算。這也是我寫這篇教程的目的,我不希望這些原因成為阻礙你探索研究的障礙。希望我的這篇文章為你的深度學(xué)習(xí)之路做出了一點微小的貢獻。
歡迎來到深度學(xué)習(xí)的世界 ?????
白交 發(fā)自 凹非寺
量子位 報道 | 公眾號 QbitAI
看完昨晚微軟Build大會,雖然開發(fā)者不能親自到現(xiàn)場,但看到WSL更新,就不忍驚呼:Amazing!
為什么這么說呢?
我們看看幾個更新,你就知道了。
比如:
光是第一個功能更新,你還有什么理由不鼓掌叫好?
假設(shè)您在Windows主機上安裝了正確的GPU驅(qū)動程序,將可用于任何已安裝的WSL發(fā)行版(Ubuntu、Fedora、openSUSE),而無需安裝任何其他軟件包。
為了實現(xiàn)WSL 2對GPU的支持,WDDMv2.9驅(qū)動程序?qū)袵PU-PV擴展到Linux端。
這個過程是由一個新的Linux內(nèi)核驅(qū)動Dxgkrnl來實現(xiàn),該驅(qū)動利用GPU-PV協(xié)議將GPU暴露給用戶模式的Linux。
有了GPU支持以后,微軟還在WSL中加入了機器學(xué)習(xí)API DirectML。這樣開發(fā)者就能夠在WSL上訓(xùn)練神經(jīng)網(wǎng)絡(luò),不必再單獨安裝一個Linux系統(tǒng)。
而且,微軟官方鄭重宣布,WSL將很快推出英偉達CUDA加速功能,可以加速cuDNN、cuBLAS、TensorRT等CUDA-X庫。
除了CUDA支持之外,微軟還在WSL中帶來了對NVIDIA-docker工具的支持,在云中執(zhí)行的容器化GPU工作負載可以在WSL內(nèi)部按原樣運行。
既然已經(jīng)支持了GPU,那么對GUI圖形化程序的支持也掃除了障礙。
過去WSL只能使用命令行應(yīng)用,今后WSL將可以直接運行Linux中的GUI應(yīng)用。
這次,除了WSL更新,微軟也提供了一些新的工具。
首先,Windows終于迎來的自己的軟件包管理工具winget。
和Ubuntu中的apt-get一樣,現(xiàn)在給Windows安裝軟件包只需一行命令,無需在去瀏覽器里找軟件包再雙擊安裝。
比如輸入
winget install terminal
將安裝Windows Terminal 1.0,而過去你要到Windows Store里找到這個應(yīng)用才能安裝。
現(xiàn)在軟件包管理工具winget只是預(yù)覽版,但是已經(jīng)加入了多項重要功能:
為了方便程序員在隔離居家令下的溝通協(xié)作,Microsoft Teams加入了開發(fā)者熟悉的Visual Studio和Visual Studio Code;還整合了Power Platform,進行Code conversation,自動填充信息,用@提醒。
微軟還推出了Project Reunion,這是一個開發(fā)平臺,打破了操作系統(tǒng)之間的隔閡。也就是說,開發(fā)者可以實現(xiàn)Win32與通用Windows平臺API的整合。
此舉是希望給生態(tài)還不夠完善的Surface Pro X等基于ARM的Windows電腦注入新的活力。
去年,微軟宣布向OpenAI投資10億美元,共同構(gòu)建一個新的Azure AI超算平臺。
而現(xiàn)在,歷時一年,終于在Build大會上亮相!
這臺超級計算機的性能位列全球前五,弱于中國神威“太湖之光”和“天河2號”。
據(jù)息,這個超級計算機共包含28.5萬個CPU核心和1萬個GPU,每個GPU網(wǎng)絡(luò)帶寬為400Gb/s。
目前,該超級計算機已經(jīng)能夠?qū)崿F(xiàn)大規(guī)模AI模型訓(xùn)練,可深入了解語言語法、知識概念和上下午內(nèi)容的細微差別。
由于在Azure中托管,這臺超級計算可以實現(xiàn)一系列現(xiàn)代云基礎(chǔ)架構(gòu)的功能,包括快速部署、可持續(xù)的數(shù)據(jù)中心,以及對所有Azure服務(wù)進行訪問。
微軟表示,其將通過Azure AI服務(wù)和GitHub,進一步將大規(guī)模AI模型、訓(xùn)練優(yōu)化工具和超級計算機資源釋放出來,讓開發(fā)者、數(shù)據(jù)科學(xué)家和商業(yè)客戶都能輕松利用AI的力量。
這次線上,還有一個小孩子參加了。
是怎么回事呢?
有眼尖的網(wǎng)友發(fā)現(xiàn),在Scott Hanselman主持的時候,門口探出了一個小腦袋。
哈哈哈,看來什么事都要從娃娃抓起呀!
怎么樣,看了這次微軟Build大會,你有什么感想?
現(xiàn)在直播還沒有結(jié)束哦~而且還可以隨時看回放,送上鏈接:
https://mybuild.microsoft.com/
— 完 —
量子位 QbitAI · 頭條號簽約
關(guān)注我們,第一時間獲知前沿科技動態(tài)