攢一台深度學習機器
來自專欄 聲紋識別
今年開學以來,越來越覺得自己需要一台深度學習的機器了。在語音領域,貌似有了一種不會深度學習就不能做一名合格的PH.D一樣,整個學術圈瀰漫著一種深度學習的汗味,言必問與DNN比較如何?Whats xx. 沒辦法,順應時代的潮流,感覺再不擁抱深度學習就要被她強暴了,故而在被其強暴之前先擁抱她吧。
好了,既然選擇擁抱她,那就要有工具呀,不然拿啥擁抱。其實老師是配了點設備的,不過僧多粥少,還是沒有自己有一台隨意懟來得爽快。於是乎,決定自己上馬一台入門級的機器。
首先就是需求和預算
在聲紋識別中,資料庫還算是比較多的。雖然沒有上T的數據,但經過各種變換之後的feature也已經存滿了我兩個近8T的硬碟,存儲空間不能成為瓶頸,RAM盡量多點,開始我選擇的32G的DDR4,現在我覺得還是有點少了,想加到64G。市面上一般的主板都是有4個插槽,所以你如果需要大的內存,請選擇16G一根的。另外,深度學習需要的是矩陣浮點運算能力,大家都知道對GPU要求高。市面上,剛出來了GTX1080,據說那個速度快的一bi,比我以前用的K420不知道要甩它幾條街。但看了看價格後覺得好東西價格就是需要用錢砸啊。因為自掏腰包,還是不敢太冒進,況且多訓練兩天少訓練兩天對我來說沒有多大差別,所以選擇了1080的低版本GTX1070。CPU方面我沒有特別大的要求,不過我有時候還是要訓練T matrix的,所以我雖然沒有冒進的選擇i7,但還是選了個差不多的i5-7600。現在用的還行,CPU也沒覺得多慢,總體感覺在訓練T matrix的適合比老師配的工作站還是要快些的。然後就是需要配一個SSD。SSD建議至少240G以上。預算充足的話可以到500G甚至1T,這個對速度的提高還是比較大的。至於是選擇mSATA的還是M.2介面抑或是更高端的PCI-E介面,自認為在使用起來不會有很大的差別(當然我只是自認為,暫時沒有使用過PCI-E介面的)。所以我選的西部數據240G的SSD。這些應該就是最重要的硬體了,其他的像主板買一個市面上現在好點的就行了(當然要能支持上面選的器件),也不需要太好,因為只是入門級的,沒有必要,以後也不會在上面有系統性的升級。其他像電源、風扇、主機什麼的自己看著買就可以了,只是電源注意不要選功率太小的,風扇、主機注意尺寸就OK了。
這台機子的配置和價錢如下(這是澳洲悉尼的價格,國內或其他地方的估計要便宜點):
GPU: Geforce GTX 1070 ($549)
CPU: i5-7600 (LGA 1151) ($304)
Motherboad: ASUS Z170 (MAXIMUS VIII) ($164)
RAM: Kingston DDR4 16GB*2 (169*2 = $338)
SSD: WD green SSD blue ssd 250G 139$
HDD: WD 2TB ($125)
Chassis: Corsair CCSPEC-03 ($85)
Power supply unit: Corsair 550W ($88)
Fan: Thermaltake ($59)
Total: $1791.0
另外Keyboard mouse network adapter monitor什麼的沒有算進去,算進去大概在2000澳元左右。按照匯率算來是11000RMB左右了。
組裝
由於自己沒有組裝機子的經驗,這次還是找了老司機帶路的,避免走彎路,在旁邊也就是遞個螺絲刀什麼的。老司機推薦CPU還是需要一個比較好的散熱器,這個散熱器還是花了點銀子,不過看起來挺值的。裝機總的原則(從老司機那看來的)就是先裝CPU,CPU風扇,主板放入主機箱,安上電源和各種線,裝好風扇,裝上GPU、SSD、HD和內存條後基本上電腦就組裝好了。
裝好之後最好抱起來晃一晃,防止有螺絲什麼的掉落在主板上,不然那將會有冒煙的危險。燒過電路板尤其是某種比賽前一晚燒掉主要器件的人都知道那是什麼感覺了。在確定沒問題之後,連接鍵鼠和屏幕,開啟主機看能否進入BIOS。如果可以就說明你已經成功組裝好了,至少你可以在這個硬體系統上裝系統、軟體。
組裝好的機子
系統和軟體安裝
系統選擇的是大家熟知、免費的Ubuntu系統,現在Ubuntu最新的是17.04,但我用的也就是16.04,也不知道具體有哪些不同,我想17.04剛剛出來可能還沒有16.04穩定,所以還是選擇了16.04。
關於Ubuntu的安裝,google或baidu都會有上百篇的例子,此處不贅述。
然後是驅動和軟體的安裝。驅動的話,主要是GPU的驅動安裝。這個在網上也有不少例子。自認為木子李的對我比較有用,深度學習配置:Ubuntu 16.04.2 + GTX 1070 +CUDA 8.0 +cuDNN 5.1 + TensorFlow 安裝 有需要的可以去看看。這裡重要的步驟就是在顯卡驅動安裝之前禁用nouveau,也不知道具體是個什麼原理,據說這個和Ubuntu暫時不認NVIDIA驅動有關吧。後面遇到了一個循環登陸的問題也可能與這個有關。按照這個帖子直接安裝到了anaconda。最後還安裝了Tensorflow,Keras (Keras Documentation),Theano,還有聲紋識別用得上得sidekit (SIDEKIT 1.2 documentation!)。註冊了pycharm (PyCharm)的student license後可以安裝pycharm professional版本,這個python的IDE軟體很好用,能像matlab一樣debug,能讓你寫python程序是事半功倍。當然kaldi想必都需要的,不過我另一台工作站上有就沒在這台機子上裝了。最後當然還有我需要的matlab了。如果需要遠程圖形界面控制你的電腦,推薦使用teamviewer(TeamViewer )。這樣軟體也就基本上安裝好了。
Pycharm 調試界面
有些朋友可能還不怎麼熟悉python,我認為最好的學習方法就是先知道最基本的語法之後找一個與自己相關度很高的例子進行調試,一步一步的調試,了解每一條語句是幹什麼用的,這樣就能很快上手了。對於聲紋識別,這篇文章TRISTOUNET: TRIPLET LOSS FOR SPEAKER TURN EMBEDDING(pdf)可能會對你有用,而且Herve Bredin共享了他的codes在github。我就拿著他的例子一步步調試然後使用到聲紋識別和我自己的資料庫上的。他使用的是keras和Theano,也可以使用tensorflow做DNN的聲紋識別。Kaldi也有DNN,但主要還是用DNN代替UBM的應用。
在Ubuntu使用中出現了一個問題,就是在一次開機的時候登錄界面一直死循環,輸入密碼之後還是進入登陸界面,無法進入桌面。最後發現是內核更新了,有可能是突然斷網了,沒有完全更新好,更新的內核與GPU的驅動有衝突什麼的。找了一圈,這個帖子(Ubuntu 16.04 用戶登錄界面死循環問題的解決)對我有點用。具體的做法就是刪掉原有的GPU驅動,重新安裝就好了。為了避免以後的麻煩,我把Ubuntu里內核自動更新都關閉了,等需要更新的時候再去打開。
推薦閱讀:
※自興動腦:人工智慧大事件,全球首次人機大戰人類染色體影像處理
※美工馬上就失業了,設計師不會 | 狗熊有話說
※python機器學習的準備工作
※科大訊飛醫學影像再下一城 奪得眼底圖分析國際賽事冠軍