win7 64位系統 安裝深度學習環境(anaconda、cuda、cudnn、theano、keras等)
前言
安裝深度學習套裝本身就是個麻煩事,在windows上安裝就又增加了難度系數,因為很多深度學習的擴充包最開始不是針對windows開發的,而我用windows安裝的原因也隻是因為我現在的項目裡需要用到windows比較多,嫌切換麻煩,以後肯定會再安裝Linux版本,這裡把安裝過程出現的問題及解決辦法寫下來,供大家參考,我的系統是win7 64位,顯示卡是GTX 960M(筆記本),安裝基于gpu的深度學習環境。
1.安裝
1、安裝Anaconda
基于gpu的深度學習套裝有很多,很多可以平行安裝,但是既然在windows學習深度學習,python是離不開的,是以這裡啥也别說,先把Anaconda安裝上吧,Anaconda自帶python,如果是初學者,推薦安裝帶python3.6版本的,去官網下載下傳,速度不差,位址在這:https://www.anaconda.com/download/
選那個windows的即可,預設安裝,安裝完成後會安裝上幾個東西:anaconda navigator、anaconda prompt、jupter notebook、spyder等,anaconda navigator可以管理安裝環境等,和anaconda prompt有很多功能重合,隻不過一個是界面一個是代碼,這裡我們用anaconda prompt功能更全面。
2、安裝visual studio 2010
這裡安裝vs是因為調用gpu計算需要c++編譯,我選擇了vs2010,因為我電腦本來就安裝了2010,也可以安裝其他更新的版本,如果不喜歡破解,可以選擇community版本,也可以用的,打開安裝包開始安裝的時候不要選擇那個更新選項(好像是第一個複選框),不然下載下傳個沒完還有可能下載下傳不下來,對于深度學習環境選個vc++就夠了,這裡不再贅述。
3、安裝cuda
這裡終于快開始進入正題,cuda相當于一個驅動,裡面也包含了顯示卡驅動及深度學習計算驅動,也就是說你安裝了這個驅動,計算的時候才能調用顯示卡來計算,因為深度學習很多都是矩陣計算,而顯示卡又非常善于幹這活兒,是以用顯示卡來幹這活兒效率提升蹭蹭的。
回到正題,cuda的版本官網有很多,眼花缭亂怎麼選?我一開始也想選個新的,但裝了好幾個才成功,有的是因為顯示卡驅動不相容我的顯示卡,有的因為不相容其他計算包,我就出現這麼一個奇怪事情,在安裝上cuda8.0時搞半天也調用不了gpu,報錯pygpu initial fail,找半天發現裝置管理器裡顯示卡都沒了,是直接消失了,也不顯示黃色感歎号,是以隻好乖乖換别的cuda版本,最終選擇了cuda7.5,這裡還有個很煩的事情,是安裝7.5的時候因為之前有8.0版本,解除安裝後也死活安裝不上,最後按照網上說法,把c盤的安裝檔案夾下與NVIDIA有關的檔案夾全部删除,删除不掉的用安全管家強制删除,才安裝上7.5,然後可以測試一下,打開cmd,輸入vncc -V,如果能有那麼一串英文說明,則說明安裝成功了。
光安裝成功還不行,還要能和vc++配合,這時候,打開C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5(按照個人實際情況),打開Samples_vs2010.sln,如果你安裝了vs2010是可以直接輕按兩下打開的,然後右鍵點選解決方案Samples_vs2010(145個項目),選擇重新生成解決方案,然後等它運作,要好大一會兒,如果發現有失敗的,則要根據實際情況修改,我這裡提醒了缺少幾個dll,按照網上說的,下載下傳了DSXDK_Jun.exe,安裝上再重新生成就全部成功了。
4、安裝cudnn
cudnn是用于深度神經網絡的GPU加速庫,反正就是安裝了就運作更快了的意思,那就安呗,說是安裝,其實在windows上就是把檔案拷貝到相應檔案夾下就完了,要注意是拷貝檔案不是拷貝檔案夾,也就是說把解壓出的檔案夾bin下的cudnn64_6.dll(這個我用的與cuda7.0對應的cudnn6.0,是以名字帶6)複制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin裡面,其他兩個檔案也是同樣操作,這樣就完成了。
5、安裝mingw、theano
theano是。。。(網上有具體解釋),mingw是theano的編譯依賴,這裡也不廢話,直接在anaconda中安裝,打開anaconda prompt,首先安裝mingw,輸入conda install mingw,然後等待,然後選擇y,等待安裝完成,然後安裝theano,輸入conda install theano,然後等待,然後選擇y,不一會兒就安裝完了,但是安裝完不代表就能調用,要想正确調用還有不少工作,首先是在C:\Users\使用者名 檔案夾下要建立一個名字為.theanorc的txt檔案,這個是theano的配置檔案,檔案内的内容我是這樣的:
[global]
openmp=False
device = cuda
floatX = float32
root=C:\ProgramData\NVIDIA GPU Computing Toolkit\v7.
base_compiler = D:\Program Files (x86)\Microsoft Visual Studio \VC\bin
allow_input_downcast=True
[lib]
cnmem =
[blas]
ldflags=-lblas
[gcc]
cxxflags=-IC:\ProgramData\Anaconda3\MinGW\x86_64-w64-mingw32\include
[nvcc]
flags = -LC:\ProgramData\Anaconda3\libs
compiler_bindir = D:\Program Files (x86)\Microsoft Visual Studio \VC\bin
fastmath = True
這裡面有幾個注意點,一是device = cuda,這個官網已經改了,不再是device = gpu,這個有可能會導緻錯誤,也可能沒事,二是ldflags=-lblas,這個很多指派是空,我給這個值是因為我出現了blas錯誤,如果不出現blas問題可以指派空。
這時候在anaconda prompt中輸入python,進入python環境,然後import theano試試,如果有錯就還要做相應修改。沒錯的話再輸入theano.test()運作測試,看會不會出錯,一般都是缺少一些安裝包,像我這裡就缺少了parameterized子產品,這時候就要再安裝parameterized,注意安裝子產品要退出python環境,我是直接關閉了anaconda prompt又重新打開,字首帶(base)說明是在基環境,可以安裝子產品了,如果缺少其他子產品也從這安裝。
安裝好也測試沒有錯誤後,就要測試theano調用gpu是否有效了,這時候我選擇用spyder來測試代碼,spyder是anaconda 自帶的一個IDE,好用是好用,就是常常罷工,不廢話,打開spyder,可以再開始菜單打開,也可以直接在anaconda prompt的(base)下直接輸入spyder即可打開,theano的官方的測試代碼如下:
from theano import function, config, shared, tensor
import numpy
import time
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState()
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], tensor.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, tensor.Elemwise) and
('Gpu' not in type(x.op).__name__)
for x in f.maker.fgraph.toposort()]):
print('Used the cpu')
else:
print('Used the gpu')
如果運作結果輸出Used the gpu,恭喜調用顯示卡運算成功,theano安裝完成,如果輸出是Used the cpu,說明顯示卡沒有調用成功,排查一下:電腦裝置管理裡面能不能看到獨立顯示卡,不能着需要換個cuda版本,說明cuda與顯示卡不相容,測試cuda的sample能否重新生成,測試cmd等。
6、安裝keras
keras是…安裝也是在anaconda prompt裡安裝,直接conda install keras即可。
2.總結
整個安裝完這些環境不出錯也很難,主要問題就在各個版本的安裝包、子產品能否配合運作:
cuda與顯示卡品牌一定要相适應,否則容易安裝上cuda顯示卡驅動沒了;
cuda與cudnn也要适應;
theano與python要适應;
總之要相适應。是以不建議安裝太新的版本,可能太新的版本對以前的支援還不太成熟。