2016年3月26日 11:32
閱讀 136
http://xccds1977./2015/10/blog-post.html 在計(jì)算機(jī)時(shí)代的早期,一名極客的滿足感很大程度上來(lái)源于能DIY一臺(tái)機(jī)器。到了深度學(xué)習(xí)的時(shí)代,前面那句話仍然是對(duì)的。 緣起 在2013年,MIT科技評(píng)論將深度學(xué)習(xí)列為當(dāng)年十大科技突破之首。其原因在于,模型有其為龐大的網(wǎng)絡(luò)結(jié)構(gòu),參數(shù)夠多,學(xué)習(xí)能力夠強(qiáng),能配合大數(shù)據(jù)達(dá)到驚人的效果。而且,能自動(dòng)學(xué)習(xí)特征,避免了“特征工程”這種繁瑣的手工勞動(dòng)。對(duì)于圖像、音頻和文字處理領(lǐng)域有極大的意義。因?yàn)樽罱趪L試用深度學(xué)習(xí)做文本挖掘,所以需要一臺(tái)深度學(xué)習(xí)服務(wù)器(相信我,如果用CPU來(lái)跑,你的人生顯得好短)。 那么就有三個(gè)選擇項(xiàng): A、購(gòu)買(mǎi)組裝好的服務(wù)器,例如NVIDIA DIGITS DEVBOX B、購(gòu)買(mǎi)云服務(wù),例如Amazon的GPU服務(wù) C、自己攢一臺(tái)深度學(xué)習(xí)服務(wù)器。 A項(xiàng)從性價(jià)比上不合算,而且不一定買(mǎi)的到。B項(xiàng)的云服務(wù)對(duì)于研究探索性質(zhì)工作而言也比較貴,機(jī)器配置也不一定合適,所以我們就C項(xiàng)了。 硬件選擇:基本思路是單顯卡機(jī)器,保留升級(jí)空間 顯卡選擇: 先解釋一點(diǎn),深度學(xué)習(xí)為什么需要顯卡計(jì)算? GPU 是為大規(guī)模的并行運(yùn)算而優(yōu)化; GPU 上則更多的是運(yùn)算單元(整數(shù)、浮點(diǎn)的乘加單元,特殊運(yùn)算單元等等); GPU 往往擁有更大帶寬的顯存,因此在大吞吐量的應(yīng)用中也會(huì)有很好的性能。 這里有一個(gè)很有趣的解釋視頻,解釋了GPU和CPU的計(jì)算區(qū)別。 所以顯卡選擇最重要,因?yàn)闇?zhǔn)備基于CUDA計(jì)算(CUDA (Compute Unified Device Architecture) 是NVIDIA開(kāi)發(fā)的GPU并行計(jì)算環(huán)境。),所以只能選擇Nvida系列的。在英偉達(dá)產(chǎn)品系列中,有消費(fèi)領(lǐng)域的GeForce系列,有專(zhuān)業(yè)繪圖領(lǐng)域的Quadro系列,有高性能計(jì)算領(lǐng)域的Tesla系列,如何選擇? 有論文研究,太高的精度對(duì)于深度學(xué)習(xí)的錯(cuò)誤率是沒(méi)有提升的,而且大部分的環(huán)境框架都只支持單精度,所以雙精度浮點(diǎn)計(jì)算是不必要,Tesla系列都去掉了。從顯卡效能的指標(biāo)看,CUDA核心數(shù)要多,GPU頻率要快,顯存要大,帶寬要高。這樣,最新Titan X算是價(jià)格便宜量又足的選擇。 CPU選擇: 在深度學(xué)習(xí)任務(wù)中,CPU并不負(fù)責(zé)主要任務(wù),單顯卡計(jì)算時(shí)只有一個(gè)核心達(dá)到100%負(fù)荷,所以CPU的核心數(shù)量和顯卡數(shù)量一致即可,太多沒(méi)有必要,但是處理PCIE的帶寬要到40。 主板選擇: 需要支持X99架構(gòu),支持PCIe3.0,還要支持4通道DDR4內(nèi)存架構(gòu)。如果要搞四顯卡并行,PCIE帶寬支持要達(dá)到40,并且支持4-Way NVIDA SLI技術(shù)。 內(nèi)存: 達(dá)到顯存的二倍即可,當(dāng)然有錢(qián)的話越大越好。 電源問(wèn)題:一個(gè)顯卡的功率接近300W,四顯卡建議電源在1500W以上,為了以后擴(kuò)展,選擇了1600W的電源。 機(jī)箱散熱: 因?yàn)楦鞣N部件相當(dāng)龐大,需要有良好散熱功能的大機(jī)箱,選擇了Tt Thermaltake Core V51機(jī)箱,標(biāo)配3個(gè)12cm風(fēng)扇。未來(lái)如果需要還可以加裝水冷設(shè)備。 以上就是主要硬件環(huán)境的選擇和安裝。 軟件環(huán)境安裝: 主要安裝了Ubuntu系統(tǒng),CUDA環(huán)境,以及theano、keras環(huán)境 1、安裝ubuntu 14.04(不要安裝麒麟版本) 通過(guò)官網(wǎng)下載iso文件刻錄U盤(pán)安裝,在SSD硬盤(pán)上自動(dòng)安裝完成。 2、安裝cuda 7.5 deb文件(自帶顯卡驅(qū)動(dòng)) 2.1 獲取CUDA安裝包,在NVidia官網(wǎng)下載local deb文件。 2.2執(zhí)行如下命令安裝: $ sudo dpkg -i cuda-repo-ubuntu1410-7-0-local_7.0-28_amd64.deb $ sudo apt-get update $ sudo apt-get install cuda 2.3設(shè)置環(huán)境變量:sudo gedit /etc/profile $ export PATH=/usr/local/cuda-7.5/bin:$PATH $ export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH 2.4重啟機(jī)器:用其中一個(gè)樣例進(jìn)行驗(yàn)證測(cè)試 $ cuda-install-samples-7.5.sh ~ $ cd ~/NVIDIA_CUDA-Samples_7.5/5_Simulations/nbody $ make $ ./nbody 或者在sample目錄中make測(cè)試項(xiàng)目1_utility,再運(yùn)行./deviceQuery 3、安裝python以及theano工具 3.1 直接下載安裝anaconda套件64位版本。 下載后用conda升級(jí)到最新。anaconda自帶openblas,使numpy和theano計(jì)算能達(dá)到最大效能 3.2 修改了theano配置文件,使之缺省由gpu運(yùn)算 在主目錄下新建.theanorc文件 .theanorc中輸入下面的內(nèi)容 [cuda] root=/usr/local/cuda/bin/ [global] floatX = float32 device = gpu0 [nvcc] fastmath = True 3.3 安裝完成后參考如下地址進(jìn)行測(cè)試 THEANO_FLAGS=floatX=float32,device=gpu python `python -c "import os, theano; print os.path.dirname(theano.__file__)"`/misc/check_blas.py 3.4 安裝keras 通過(guò)anaconda安裝pip install keras 注意keras依賴的theano是dev版本的,需要從github下源碼來(lái)安裝。注意本系統(tǒng)此時(shí)有兩個(gè)python,所以要寫(xiě)路徑 sudo /home/user/anaconda/bin/python setup.py develop 4、設(shè)置遠(yuǎn)程服務(wù)器調(diào)用 4.1 安裝ssh,啟動(dòng)服務(wù) 4.2 設(shè)置notebook server 在ipython中如下命令設(shè)置密碼: from IPython.lib import passwd passwd() 記下生成的字符串。 創(chuàng)建一個(gè)ipython配置文件,比如起名叫myserver ipython profile create myserver vim ~/.ipython/profile_myserver/ipython_notebook_config.py 編輯文件,加入下面幾項(xiàng): c = get_config() c.IPKernelApp.pylab = 'inline' #啟動(dòng)inline模式 c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.password = u'sha1:yourhashedpassword' #把第二步的密碼考進(jìn)來(lái) c.NotebookApp.port = 6868 #自己設(shè)一個(gè)端口號(hào) 啟動(dòng)服務(wù) ipython notebook --profile=myserver 4.3 遠(yuǎn)程瀏覽器調(diào)用 遠(yuǎn)程中瀏覽器登陸http://192.168.3.31:6868/,輸入密碼,即可進(jìn)入ipython notebook。 如果需要保持連接,則 nohup ipython notebook --profile=myserver 殺掉連接 lsof nohup.out kill -9 "PID" 完工! 最后的硬件配置: CPU: Intel X99平臺(tái) i7 5960K 內(nèi)存: DDR4 2800 32G(8G*4) 主板: GIGABYTE X99-UD4 顯卡: GTX Titan X 硬盤(pán): SSD+普通硬盤(pán) 系統(tǒng)和軟件 操作系統(tǒng): Ubuntu 14.04.3 x64 CUDA: 7.5 Anaconda 2.3 Theano 7.0 Keras 2.0 參考資料: http:///2014/08/14/which-gpu-for-deep-learning/ http:///2015/03/09/deep-learning-hardware-guide/ http://graphific./posts/running-a-deep-learning-dream-machine/ http://docs./cuda/cuda-quick-start-guide/index.html#ubuntu-x86_64-deb http:///software/theano/tutorial/using_gpu.html#cuda 之前網(wǎng)上找到另一種安裝theano方式是自行安裝組件。但嘗試未成功,有可能是因?yàn)镃PU等硬件不同,可能需要自行編譯安裝openblas,numpy, scipy, theano等環(huán)境,極為繁瑣。最后還是直接用Anaconda方便。 |
|
來(lái)自: 金戈001 > 《應(yīng)用》