第一節,windows和ubuntu下深度學習theano環境搭建


先講解windows下深度學習環境的搭建

步驟一  安裝Anaconda

Anaconda是一個用於科學計算的python發行版,支持linux,mac,windows系統,提供了包管理和環境管理的功能,Anaconda是一個打包的集合,里面裝好了conda,某個版本的python,眾多的packages等,科學計算工具等

下載中科大鏡像:http://mirrors.ustc.edu.cn/

 

 從archive路徑下載Anaconda3-4.2.0-Windows-x86_64.exe

我的安裝路徑為 D:\Program Files (x86)\Anaconda,注意這里我選擇的是3-4.2.0版本。

 

步驟二  安裝minGw,libpython

進入Anaconda Prompt命令窗口,輸入命令

conda install mingw libpython

中間會要你選擇Proceed([y]/n)? 輸入y

此處安裝如果比較慢或者有問題可以參考:手把手教你搭建深度學習平台——避坑安裝theano+CUDA  https://www.cnblogs.com/hdu-zsk/p/5950924.html

配置環境變量  計算機->屬性->高級系統設置->環境變量

編輯系統變量‘path’,追加D:\Program Files (x86)\Anaconda\MinGW\x86_64-w64-mingw32\lib;D:\Program Files (x86)\Anaconda\MinGW\bin;

 

步驟三 安裝theano

進入Anaconda Prompt命令窗口,輸入命令:

conda install theano pygpu

如果安裝失敗,我們先卸載,然后在嘗試重新安裝

conda uninstall theano
conda  install theano

 

新建環境變量‘PYTHONPATH’:添加值D:\Program Files (x86)\Anaconda\Lib\site-packages\theano;(這個路徑添加了運行spyder可能出錯(打不開),親測)

如果你的電腦沒有GPU,安裝到這里就可以了,下面的步驟不用安裝。

步驟四 PTVS安裝以及VS環境變量設置

安裝完成之后,我們需要為VS安裝PTVS。適用於Visual Studio的Python工具(PTVS)是Visual Studio的開源插件,支持使用Python語言進行編程。

具體安裝我們可以參考:在 Windows 上的 Visual Studio 中安裝 Python 支持

由於我在之前安裝的Anconda,自帶的是python3.5.2,而且我安裝的visual studio2015,所以可以直接安裝Python解釋器。

如果你使用的是visual studio2013,這里就有個問題(vs2015的可以跳過):

如果你安裝的是python3.6,由於vs2013不支持python3.6。因此,你需要重新安裝python版本,這里可以選擇安裝python3.5。如果你是vs2015之后的版本,你可以跳過這里。

我們可以參考文章:如何將Anaconda更新到想要的python版本

對於vs2013,我們可以卸載Anaconda,重新安裝一個帶有python3.5的版本(比如Anaconda3-4.0.0,我建議重裝)。或者使用conda命令在線更新。重新安裝比較簡單,我就介紹一下使用conda命令更新。

打開Anaconda Prompt,然后用conda命令更新到python3.5.

conda update conda ——等待更新完,然后輸入以下命令,這個較快

#創建一個名為python35的環境,指定Python版本是3.5(不用管是3.5.x,conda會為我們自動尋找3.5.x中的最新版本)

conda create --name python34 python=3.5

activate python35 --激活3.5版本,使用這個

#此時次輸入

python --version

#可以得到`Python 3.5.5 即系統已經切換到了3.5的環境

#如果想返回默認的python 3.6.2環境,運行

deactivate python35

#刪除一個已有的環境

conda remove --name python35 --all

等待python3.5安裝成功。這里我需要重新執行步驟2 安裝minGw,libpython,和步驟三安裝theano。

然后需要去下載PTVS插件並安裝:Visual Studio 2013 PTVS 2.2

如果你是VS2015或者以后的版本,具體安裝以及VS環境變量的配置比較簡單你可以參考:在 Windows 上的 Visual Studio 中安裝 Python 支持

然后需要手標識現有環境,打開vs2013.新建一個python項目,並對該項目如下操作:

 

然后選擇python 3.5.

 

步驟五 配置路徑文件

找到路徑C:\Users\你的用戶名,在下面創建文件.theanorc.txt

此處我在C:\Users\Administrator路徑下創建了.theanorc.txt文件

編輯文件輸入內容

[global]

openmp=False [blas] Idflags= [nvcc] fastmath=True flags =-LD:\Program Files (x86)\Anaconda\libs compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin [gcc] cxxflags=-ID:\Program Files (x86)\Anaconda\MinGW

注意標紅的路徑是根據你自己的MinGW來設置的,不需要和我的一樣,上面的:

compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin  

如果你的電腦是裝vs2012,那么就把10.0改為11.0。這個也就是你安裝的vs所在的目錄。

步驟六 測試配置文件是否有誤

(1)測試方案一
進入python的shell腳本,輸入內容:
>>> import theano
>>> theano.test()
 
查看運行結果是否正確。如果出現錯誤,請查看是否是以下幾種錯誤:

出現這種錯誤 ,或者我們在命令窗口執行spyder也出現如下問題:

針對configparse問題,我們可以參考文章:

python安裝配置Theano ImportError:cannot import name 'configparser'

我們清除安裝theano時的路徑配置,即:新建環境變量‘PYTHONPATH’:添加值D:\Program Files (x86)\Anaconda\Lib\site-packages\theano;然后重新嘗試運行

如果import theano出現pygpu相關的錯誤,可以嘗試運行(如果你已經安裝了CUDU可能會出現這種問題):

conda install pygpu

打開spyder進行測試,如果還有spyder閃退的問題,可以嘗試重新安裝:

conda uninstall spyder        #先卸載
conda install spyder #在安裝

如果還是不行,你可以到網上搜索其他解決方案,或者重新換個版本的Anaconda安裝。

(2)測試方案二
我們也可以編輯如下代碼測試
import numpy as np import time import theano A = np.random.rand(1000,10000).astype(theano.config.floatX) B = np.random.rand(10000,1000).astype(theano.config.floatX) np_start = time.time() AB = A.dot(B) np_end = time.time() X,Y = theano.tensor.matrices('XY') mf = theano.function([X,Y],X.dot(Y)) t_start = time.time() tAB = mf(A,B) t_end = time.time() print("NP time: %f[s], theano time: %f[s] (times should be close when run on CPU!)" %( np_end-np_start, t_end-t_start)) print ("Result difference: %f" % (np.abs(AB-tAB).max(), ))

測試結果如下:

如果上面的np time 和theano time 差不多,那就代表你上面的配置沒有問題了,這個有的時候電腦還有其他的任務,也有可能導致運行的時間不一致。

步驟七 安裝cuda

關於theano以及cuda的安裝參考教程
深度學習(二)theano環境搭建
windows下theano開發環境搭建(實現了GPU加速)

先檢查自己的顯卡支持什么版本的CUDA

(1)首先打開控制面板,在控制面板進行搜索。

(2)然后,雙擊NVIDIA控制面板,打開如下的控制面板,點擊幫助

點擊系統信息,我們會看到

(3)選擇組件,然后會看到紅色框的內容,箭頭所指的CUDA版本,就是你電腦支持的CUDA版本。

然后我們去官網下載我們顯卡支持的CUDA版本

 

 

 程序下載完后后,雙擊安裝:

到這一步,問題出現了,告訴我說圖形驅動與顯卡不兼容,如果繼續安裝,即使安裝成功了,也不能使用cuda。因此我去下載一個比較新的CUDA,我下載了cuda_8.0.61_windows.exe(注意下面我使用的是cuda9.0的截圖,但是事實證明在我的電腦安裝9.0后,gpu運行不了,這里你最好安裝cuda8.0,步驟同下)。

 

選擇自定義安裝,然后把所有包的都勾選上,省的后面出現什么錯誤。這一步有可能會遇到驅動沖突,導致某些包安裝失敗

如果某些包安裝失敗,后面使用theano的時候,會跳出錯誤。如果圖形驅動安裝失敗,運行theano的時候就出現錯誤,提示為cuda版本與驅動版本不一致。因此如果你安裝cuda的過程中,有出現安裝失敗的,那么請你接着往下看。安裝失敗一般是驅動沖突的問題,這個時候我的方法是用驅動精靈卸載掉顯卡驅動,然后在進行安裝。

 安裝完后測試一下是否安裝正確。在命令窗口輸入:

nvcc -V

回車查看是否有版本信息。若出現版本信息,則證明nvcc安裝成功,如下圖所示:

 

接着我們運行一個cuda自帶的測試例子。

 

由於我的電腦安裝了VS2015(這個自己下載安裝),所以在這里打開Samples_vs2015.sln項目,這個例子目錄為:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0(在安裝完我們勾選launch samples會自動打開這個文件夾) 。編譯運行得到如下結果,表示安裝成功:

安裝完了cuda,你還需要cuDNN:

cuDNN下載地址https://developer.nvidia.com/rdp/cudnn-download,cuda8.0對應的版本是cudnn-8.0-windows7-x64-v6.0.zip

我們需要把下面三個文件中對應的文件拷貝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0路徑對應的文件下。

然后我們需要重新配置.theanorc.txt文件

[blas]   
ldflags= [global] device = gpu floatX = float32 
[cuda]
root = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 [nvcc] fastmath=True flags =-LD:\Program Files (x86)\Anaconda\libs compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin [gcc] cxxflags = -ID:\Program Files (x86)\Anaconda\MinGW

這樣就完成了theano的GPU配置了。

步驟八 完整測試

測試時,執行如下程序(詳細內容可以參考官方鏈接:http://deeplearning.net/software/theano/tutorial/using_gpu.html)

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(22) 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')

運行結果如下:

(1)GPU測試

下面是用GPU加速的運行結果:

 

 如上運行結果可知,用gpu進行計算時間差不多是0.68秒左右。如果想切換成只用gpu的測試的話,我是通過更改文件:.theanorc.txt的內容。那么.theanorc.txt的內容為:

[blas]   
ldflags=

[global]
device = cuda
floatX = float32
optimizer = None

[cuda]
root = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0

[nvcc] fastmath=True flags =-LD:\Program Files (x86)\Anaconda\libs compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin [gcc] cxxflags = -ID:\Program Files (x86)\Anaconda\MinGW

(2)CPU測試。

如果想關閉gpu,進行cpu測試那么就把.theanorc.txt內容改為:

[blas]   
ldflags= [gcc] cxxflags = -ID:\Program Files (x86)\Anaconda\MinGW

重啟電腦或者重啟spyder內核。下面是測試結果圖:

 

測試了結果,只用cpu花了14秒的時間,也就是說對於我的電腦,使用gpu進行加速,這速度提高了近20倍。

(1)如果執行import theano出現

'You are tring to use the old GPU back-end. '

ValueError: You are tring to use the old GPU back-end. It was removed from Theano. Use device=cuda* now. See Theano/Theano for more information.

我們可以通過修改.theanorc.txt文件  把device=gpu更改為device=cuda

[global]
device = cuda floatX = float32 optimizer = None 

(2)如果運行出現下面錯誤:

我們可以配置.thranorc.txt文件,忽略cuDNN

[dnn]
enabled = False

(3)如果出現CVM未定義的錯誤,按照下面方法移除該文件夾是可以起作用的(親測)。

 

 (4)執行出現MKL_THREADING_LAYER=GNU錯誤

我們使用如下命令:

conda install mkl=2017

如果這些方法都不能解決這些錯誤,我只能推薦你看一下這篇文章,希望能夠對你有幫助

這是一份你們需要的Windows版深度學習軟件安裝指南 

步驟九 安裝tensorflow

1、cpu環境

如果你使用cpu,那么在命令窗口下運行:

conda install tensorflow

2、gpu環境

如果你使用gpu, 安裝TensorFlow指定版本(清華源上有的,更換鏈接最后的版本名稱就行了),那么在命令窗口下運行:

pip install --upgrade https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/gpu/tensorflow_gpu-1.3.0rc0-cp35-cp35m-win_amd64.whl

測試
import tensorflow as tf (1)print(tf.test.gpu_device_name()) 或者 (2)print(tf.test.is_gpu_available()) 如果(1)輸出device:/gpu:0或者(2)輸出True,則表明使用的GPU

在linux環境下安裝如下

步驟一  安裝Anaconda

Anaconda是一個用於科學計算的python發行版,支持linux,mac,windows系統,提供了包管理和環境管理的功能,Anaconda是一個打包的集合,里面裝好了conda,某個版本的python,眾多的packages等,科學計算工具等

下載中科大鏡像:http://mirrors.ustc.edu.cn/

 

 從archive路徑下載Anaconda3-5.0.1-linux-86_64.sh

在home文件夾下創建一個文件夾,命名為Anaconda,把下載好的程序復制到這里,然后右鍵在終端打開,輸入:

bash Anaconda3-5.0.1-Linux-x86_64.sh

然后按下enter鍵繼續安裝,一直按enter鍵,直至:

然后按下yes繼續安裝,后面選擇安裝路徑,我是安裝在當前文件夾下的program文件夾下:

執行到這里說明已經安裝成功

步驟二 安裝cuda

1.首先確保自己的操作系統是最新的,打開終端運行以下命令

sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential sudo apt-get autoremove

然后安裝git,在終端輸入

sudo apt-get install git

2.首先檢驗自己的電腦是否支持CUDA,然后安裝NVIDIA驅動

首先查看顯卡型號,在終端輸入

lspci | grep -i nvidia

執行結果如下

  • 到Nvidia官網查找你顯卡對應的最新驅動和系統設置。你可以從此網站上下載並安裝驅動,但這樣做會升級到更新的驅動,並且卸載的時候會有些麻煩。此外,這么做需要你退出X服務會話,從終端進行安裝,這比較麻煩。

  • 我們將使用apt-get來安裝驅動。到 “Proprietary GPU Drivers” PPA中查看是否有你最新的驅動。注意,最新的驅動一定是最穩定的。你也可以安裝網頁上推薦的驅動版本。添加”Proprietary GPU Drivers” PPA 資源庫。在寫這篇文章的時候,最新版本是396.18,然而推薦版本是390.48:

  •  

在終端輸入

sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-390

重新啟動系統

sudo shutdown -r now

檢查以確保安裝了正確版本的NVIDIA驅動

cat /proc/driver/nvidia/version

 也可以重啟后輸入如下命令

nvidia-smi

如果顯示GPU信息,則表明驅動程序安裝成功。 也可以通過nvidia-settings查看GPU的信息。

若安裝失敗,卸載未安裝成功的顯卡驅動,再重新安裝

sudo apt-get remove --purge nvidia-*                   #卸載顯卡驅動 

3.CUDA安裝

首先去cuda官網下載cuda工具包。
操作系統選擇Linux,處理器架構選擇x86_64,發布版選擇Ubuntu,版本選擇16.04,安裝類型選擇deb(local)。然后下載第一個:

然后切換到cuda工具包所在目錄下,執行如下命令(cuda的安裝路徑全部使用默認路徑):

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb sudo apt-get update sudo apt-get install cuda

等待cuda安裝結束。如果安裝過程中遇到內存不足的問題,執行如下命令

df -h 

我們會看到根目錄/下內存不足,這主要是因為在安裝系統的時候我給根目錄只分配了10G,

當使用Linux系統的時候,發現根目錄(/)的空間不是很充足,而其他目錄空間有很大的空閑,我們需要針對現在已有的空間進行調整。

具體也可以參考文章:Linux下調整根目錄的空間大小

 為了避免你在安裝時候,也出現這種問題,建議安裝時給/目錄分配30G以上的空間。

 安裝結束之后(有一個/usr/local/cuda的目錄鏈接到/usr/local/cuda-8.0,后面配置環境變量時可直接使用/usr/local/cuda目錄),配置環境變量: 可以配置系統級別的環境變量,也可以配置用戶級別的環境變量。 

配置系統級別的環境變量,請使用如下命令:

sudo vi /etc/profile

配置用戶級別的環境變量,請使用如下命令

vi ~/.bashrc

打開文件后,在文件的結尾部分添加如下文本行:

 export PATH=/usr/local/cuda/bin:$PATH
 export LD_LIBRARY_PATH=/usr/local/cude/lib64:$LD_LIBRARY_PATH

如果是配置用戶級別的環境變量,也可以直接運行如下命令:

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc

檢查以確保安裝了正確版本的CUDA

nvcc -V

重啟系統

sudo shutdown -r now

4.檢查CUDA安裝(可選)

在CUDA安裝目錄安裝樣例。編譯它們(需要幾分鍾):

/usr/local/cuda/bin/cuda-install-samples-8.0.sh ~/cuda-samples cd ~/cuda-samples/NVIDIA*Samples make -j $(($(nproc) + 1))

注意:(-j $(($(nproc) + 1)))命令使用你機器上的核心數並行執行,所以編譯會更快

  • 運行deviceQuery,確保它能檢測到顯卡並測試通過
bin/x86_64/linux/release/deviceQuery

5.cuDNN安裝

cuDNN是為DNN設計的CPU加速庫。它能在多種情況下幫助提升執行速度。為了下載cuDNN庫,你需要到Nvidia網站https://developer.nvidia.com/cudnn上進行注冊。立即就能夠批准。一旦注冊批准,下載Linux版本的cuDNN v7。

點開下圖中的cuDNN v7.1.2(Mar21.1018) for CUDA 8.0,然后選擇第一個下載。

以下命令請在cuDNN文件所在目錄執行。

tar -zxvf cudnn-8.0-linux-x64-v7.1.tgz sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo chmod a+r /usr/local/cuda/include/cudnn.h sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

以上命令就將cuDNN的頭文件、靜態庫和動態庫都放入了cuda目錄下。

 

最后,執行如下命令,以防在編譯Tensorflow或者其他開源深度學習框架時找不到動態庫。

sudo ldconfig /usr/local/cuda/lib64

注:ldconfig命令的用途是在目錄/lib和/usr/lib以及動態庫配置文件/etc/ld.so.conf內所列的目錄中,搜索出可共享的動態鏈接庫(格式如lib*.so*),進而創建出動態裝入程序(ld.so)所需的連接和緩存文件。

6.theano安裝

打開終端輸入:

conda install theano-gpu

 如果安裝有問題,參考官網進行安裝:http://www.deeplearning.net/software/theano/install_ubuntu.html#stable-installation

conda install theano pygpu
conda install mkl=2017

7.配置.theanorc.txt文件

需配置.theanorc以便使用gpu
sudo gedit ~/.theanorc
輸入一下內容
[global]
floatX=float32 device=cuda [cuda] root=/usr/local/cuda-8.0 [nvcc] flags=-D_FORCE_INLINES fastmath=True

8.測試安裝

測試時,執行如下程序(詳細內容可以參考官方鏈接:http://deeplearning.net/software/theano/tutorial/using_gpu.html)

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(22)
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')

在cpu或者是在gpu上運行可以通過修改.theanorc文件中為device = cpu或者device = cuda來決定。每次修改之后,只有重啟spyder內核或者重啟電腦才會生效。

GPU下運行如下:

 

步驟三 安裝tensorflow

在終端下運行

conda install tensorflow
conda install tensorflow-gpu
測試
import tensorflow as tf
(1)print(tf.test.gpu_device_name())

或者
(2)print(tf.test.is_gpu_available())

如果(1)輸出device:/gpu:0或者(2)輸出True,則表明使用的GPU

參考文章:

[1]深度學習環境搭建

[2]Linux安裝Anaconda和cuda、cdnn和Tensorflow-gpu

[3]win10下通過Anaconda安裝TensorFlow-GPU1.3版本,並配置pycharm運行Mnist手寫識別程序(或者使用這個安裝)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM