用不到1000美元攢一臺深度學習用的超快的電腦:繼續(xù)深度學習和便宜硬件的探奇!
是的,你可以在一個39美元的樹莓派板子上運行TensorFlow,你也可以在用一個裝配了GPU的亞馬遜EC2的節(jié)點上跑TensorFlow,價格是每小時1美元。是的,這些選擇可能比你自己攢一臺機器要更現(xiàn)實一點。 但是如果你和我是一樣的人,你絕對想自己攢一臺奇快無比的深度學習的電腦。
好吧,一千塊錢對于一個DIY項目來說是太多了。但是一旦你把機器搞定,你就能構(gòu)建數(shù)百個深度學習的應(yīng)用啦,從擁有增強大腦的機器人到藝術(shù)創(chuàng)作(至少這是我為花這些錢找的理由)。最差的理由也是,這個機器至少能輕松打敗那個2800美元的Macbook Pro筆記本。除了用電多一點,所有的性能都比Macbook強。另外這臺電腦很容易被升級,從而能保證它的性能可以領(lǐng)先筆記本好幾年。
從上世紀80年代后我就再沒攢過電腦。我也相當擔心花好幾百塊,最終搞一堆我自己裝不出來的零件(或是攢出來了,但可能沒法正常工作)。不過我要告訴你,攢機是可以的!另外,整個過程也很好玩。***你能擁有一臺通用的電腦,并能做預(yù)測,同時比筆記本快20多倍。
下面是購買清單和一些細節(jié)建議 :
◇主板
有不同的尺寸規(guī)格。因為我不想用多個GPU,所以***最小的主板標準尺寸是mini-ITX,對這個項目是夠用了。我的***要求是要有一個PCIe插槽給GPU用,有兩個DDR4的內(nèi)存插槽。***我買的是華碩的 Mini ITX DDR4 LGA 1151 B150I PRO GAMING/WIFI/AURA主板,在亞馬遜上賣125美元。還附送了一個WiFi的天線。這對于在地下室里用這個電腦是太方便了。
◇機箱
機箱不太重要,也非常便宜。因為DIY電腦的主要客戶都是游戲玩家,所以機箱的形狀和顏色也是五花八門。機箱的尺寸應(yīng)該和主板配套,所以我的機箱需要支持mini-ITX。我買的是Thermaltake Core V1 Mini ITX Cube機箱,在亞馬遜上賣50美元。
◇內(nèi)存
我不敢相信現(xiàn)在內(nèi)存有多便宜。你需要買和主板配合的DDR4型的內(nèi)存(幾乎網(wǎng)上找到的都是這個類型),大家的價格都差不多。我用129美元買了兩條8GB of Corsair Vengeance內(nèi)存。
這個帶LED燈的內(nèi)存條讓我多花了5美元,因為亞馬遜的用戶評價上說“對于沒法在機箱里裝足夠多LED燈的,這個內(nèi)存是***選擇。”如果你如我一樣是在地下室里攢機,也不在乎機箱里面的美感,那你肯定會非常難在機箱里找到零件。
◇CPU
我看了一下網(wǎng)上的CPU評測比較,認為比較慢的CPU應(yīng)該沒什么問題,因為我沒什么任務(wù)是要高速CPU的(除了訓練神經(jīng)網(wǎng)絡(luò),而我會用GPU來訓練)。但我也受不了一臺電腦,里面有一個相對其他部件落后三代的CPU。***我花了214美元買了Intel I5-6600 CPU。
大部分亞馬遜上能找到的CPU都是合適的。我沒花額外的20美元去買I5-6600K。與I5-6600型相比,除了能超頻,其他功能都一樣。但通過系統(tǒng)可靠性來換取10%的速度提升對于我來說是夠瘋狂的。不過我承認,在我開始想著自己攢機后,我有些后悔了。所以誰知道哪?攢機會改變你的生活樣式??赡苜I一個可超頻的CPU會少一些后悔。但另一方面,也許去除掉多余的選擇能保護你自己,不會自己作死。
◇硬盤
我也無法相信現(xiàn)在硬盤有多便宜了。用50美元我買了一個1TB SATA硬盤。固態(tài)硬盤會更快,但貴很多。而且深度學習的程序一般都不會是高I/O依賴的,因為一般程序都是拉取一批數(shù)據(jù)進內(nèi)存,然后算很久。如果你有很多的文件傳輸任務(wù),或是僅僅是想確保比你朋友的Macbook跑應(yīng)用快很多,那我會買一個固態(tài)硬盤,比如這個三星的850 EVO 250GB 2.5-Inch SATA III Internal SSD,250G的要98美元。
這些硬盤讓我意識到,蘋果是多么會宰人。為了Macbook Pro有250G的額外硬盤容量,你要花200美元!
◇顯卡/GPU
選哪款顯卡是最重要也是最難的問題。對于幾乎所有的機器學習應(yīng)用,你都需要一個英偉達的顯卡,因為只有英偉達有最重要的CUDA框架和CuDNN庫,所有的機器學習框架(包括TensorFlow)都依賴它們。
作為一個非GPU專家,我發(fā)現(xiàn)與之相關(guān)的名詞術(shù)語是夠讓人糊涂的。但下面是非?;镜倪x購指標。
可能對深度學習最重要的指標就是顯卡的顯存大小。如果TensorFlow不能把模型和當前批次的訓練數(shù)據(jù)存進GPU的顯存,它就會失敗并轉(zhuǎn)向使用CPU,從而讓GPU變成廢物。
另外一個重要的考慮就是顯卡的架構(gòu)。英偉達***依次推出的架構(gòu)叫“Kepler”,“Maxwell”和“Pascal”。這些架構(gòu)的主要區(qū)別就是速度。例如根據(jù)這個基準評測,Pascal Titan X的速度是Maxwell Titan X的兩倍。
機器學習的大部分論文都是用的TITAN X顯卡。性能不錯,不過夠貴,都要1000美元以上,哪怕是舊一點的版本。大部分搞機器學習且沒多少預(yù)算的人都用的英偉達的GTX 900系列(Maxwell)或是GTX 1000系列(Pascal)。
想找出一塊顯卡的架構(gòu),你可以看看英偉達的那個極其讓人混淆的命名系統(tǒng):9XX卡使用的是Maxwell架構(gòu),而10XX是用的Pascal架構(gòu)。但一個有更高的主頻和更大的顯存980可能還是比一個1060要快。
你可能必須對不同架構(gòu)的英偉達GPU有所了解。但最重要的是,無論是9XX還是10XX顯卡,都會比你的筆記本快一個數(shù)量級。不要被這些選項搞暈了,如果你還沒有用過GPU,用它會比你現(xiàn)有的系統(tǒng)要快很多。
我買的是GeForce GTX 1060顯卡,3GB顯存,花了195美元。用它比我的Macbook要快近20倍。但對有些應(yīng)用,它還是偶爾會出現(xiàn)顯存內(nèi)存不足的情況。所以我也許應(yīng)該多花60美元來買一個GeForce GTX 1060 6GB顯存版。
◇電源
我花了85美元買了一個650W的電源。我的經(jīng)驗是,電器如果電源出了問題是非常頭疼也很難修的,所以不值得為此省錢。另一方面,我的系統(tǒng)的峰值負載從來沒有超過250瓦。
◇散熱器
我還記得我工作的***家創(chuàng)業(yè)公司是把服務(wù)器放到壁櫥里面的。即使隔著壁櫥的門,風扇的噪聲還是出奇的大。這樣的日子似乎是早已過去了。不過650瓦的電源讓你的機器耗能是筆記本的10倍,而能量總是要找到一個出口的地方??赡懿皇潜仨毜?,但是我還是用35美元買了一個超級的散熱器——Master Hyper 212 EVO。這讓CPU始終運行在低溫狀態(tài),且系統(tǒng)超級安靜。
◇概覽
Component | Price |
Graphics Card | $195 |
Hard Drive | $50 |
CPU | $214 |
Case | $50 |
Power Supply | $85 |
Heat Sink | $35 |
RAM | $129 |
Motherboard | $125 |
Total | $883 |
要***能用,你還需要有顯示器、鼠標和鍵盤。這些東西一般容易搞到(我的地下室里到處都是)。合計價格是883美元,因此想花1000美元的話,還能再升級一些東西。
裝機
所有包裹都到齊后我是相當?shù)呐d奮,然后我發(fā)現(xiàn)裝機是容易,但靠不住?;宋掖蟾乓粋€小時,按照每個部件的說明書就把電腦組裝起來了。***卻點不亮。我不得不更換了主板,相當沮喪但還OK。
第二次組裝時,我把所有的部件放在一個紙箱子上連接起來,先確定是不是都能正常工作。
基本上,如果你把每個東西都能插入到看起來能恰當?shù)仄ヅ涞牡胤剑蛻?yīng)該是OK的。
圖1 放在桌子上的半成品電腦,只連接了最少的部件來測試
圖2 裝上超大散熱器后的電腦,看起來很恐怖
圖3 從上面看下去,硬盤已經(jīng)裝進去了
啟動電腦
安裝***版本的Ubuntu會讓你的生活變得容易得多,因為新版本支持幾乎所有的深度學習的軟件。你可以把一個鏡像存到一個USB盤里,然后按照它的簡單的一步一步指導來安裝。在上世紀90年代,我需要和各種驅(qū)動程序去斗爭來安裝Linux桌面,不過現(xiàn)在的安裝過程已經(jīng)變得超級容易。
新的Ubuntu操作系統(tǒng)也非常的棒。我現(xiàn)在經(jīng)常使用我自己組裝的這臺電腦。擁有大內(nèi)存、相對快速的CPU和輕量級的操作系統(tǒng),它是我家里最快的計算機。
安裝CUDA、OpenCV
和TensorFlow
為了能用你的超酷的深度學習機器, 你需要先安裝CUDA和CudNN。***的CUDA版本是8.0,CudNN是5.1。 從抽象的角度看,CUDA是一個API和編譯器,能讓其他的程序為通用應(yīng)用使用GPU。而CudNN則是一個庫,主要設(shè)計來讓神經(jīng)網(wǎng)絡(luò)在GPU上跑的更快。你需要從英偉達的官網(wǎng)NVIDIA website上下載這兩個軟件。
OpenCV 是一個開源的庫,很多應(yīng)用使用它來做圖像處理。現(xiàn)在***的版本3.1和***的CUDA版本不兼容。你可以通過設(shè)置CUDA_GENERATION標志成Kepler、Maxwell或是Pascal(取決于你買的GPU型號)來讓他們兼容。下面是下載OpenCV和安裝設(shè)置它的命令序列:
- git clone https://github.com/opencv/opencv.git \
- && cd opencv \
- && mkdir build \
- && cd build \
- && cmake .. \
- && make -j3 \
- && make install
***,安裝TensorFlow變成了這些天里最簡單的工作。只要按照這個網(wǎng)站上的說明操作就行了。
想看看GPU的支持是不是成功,你可以運行這個TensorFlow的測試程序,或是執(zhí)行下面的命令:
python -m tensorflow.models.image.mnist.convolutional
這應(yīng)該能開始運行一個模型而沒有報錯。
有趣的部分來了!
現(xiàn)在你已經(jīng)花了近1000美元和無數(shù)的時間來裝機和裝軟件,是時候回收你的投資啦!GPU讓程序運行的非???,所有你需要一些能利用這個速度的應(yīng)用。幸運的是有很多有趣的事情可以干。
實時識別附近的物品
裝一個便宜的USB攝像頭或是帶有攝像頭的樹莓派板子在你家外面。 你就能用我在之前的100美元的TensorFlow機器人里所介紹的RPi攝像頭模塊來很容易地制作一個樹莓派派視頻流應(yīng)用。
YOLO
YOLO包能完成拍攝同時的實時物體識別。用Macbook的話,我發(fā)現(xiàn)物體識別需要3到4秒。但用GPU的話,我能得到一個實時的結(jié)果,而且準確率是非常高。
按這個YOLO_tensorflow 項目的介紹,可以很容易地使用YOLO模塊運行在TensorFlow上。也可以安裝“Darknet”,這是一個不同的深度學習框架。YOLO最初就是設(shè)計來用于它的。
- git clone https://github.com/pjreddie/darknet
- cd darknet
- make
Darknet安裝完后,你可以用下面的命令來讓它處理圖像:
- ./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg
因為樹莓派攝像頭僅僅只是把文件放到一個Web服務(wù)器上,你可以直接讓Darknet去連接那個文件來做實時流里的物體識別。下面的視頻是我在車庫里對外面發(fā)生的堵車進行的物體識別:
給你的樹莓派機器人
一個增強的大腦
我之前寫的這個《只要100美元的TensorFlow機器人》里,我發(fā)現(xiàn)可以在只值30美元的硬件上運行和應(yīng)用深度學習。不幸的是,最讓我失望的事情是機器人要花好幾秒才能完成物體識別,因此讓機器人做實時的決策就不行了。現(xiàn)在如果機器人用這個新的GPU機器,就不僅僅能做實時物體識別,還能每秒處理大概12-20幀的圖像。
如果你依據(jù)我在GitHub上的這個說明,你就能攢一個機器人出來,讓它從攝像頭里獲取容易處理的視頻流。
我的朋友Shawn Lewis教會了我這篇文章里所需的大部分技能,所以我把我的兩個樹莓派機器人拿到了他的辦公室。他和其他很多機器人專家有一個夢想,就是讓機器人能給他們拿啤酒。下面是這些機器人為地上的啤酒戰(zhàn)斗的視頻。
如果你仔細看視頻開始部分里的電腦顯示器畫面,就會發(fā)現(xiàn)Shawn的這個電腦實際上是用它的GeForce 980顯卡在為兩個機器人拍攝的視頻做實時的物體識別。他宣稱他的這塊顯卡可以同時處理四路視頻輸入而不會內(nèi)存溢出。
搞點藝術(shù)創(chuàng)作
你可以用神經(jīng)網(wǎng)絡(luò)干的好玩的事情之一就是復(fù)制谷歌的Deep Dream干的事情。盡管你可以不用GPU也能完成,但會花很長的時間。本質(zhì)上講,這個事就是修改輸入的圖片來找到神經(jīng)元里得到***反饋的圖片,因此這個任務(wù)有非常大的計算量。有很多種方式來完成修改,結(jié)果一般都非常的詭異和酷。
一個直接能用的很好的教程就是谷歌公開的這個Deep Dream 代碼。
你需要安裝Jupyter notebook服務(wù)器(你總是需要的!)和Caffe。
接著按照谷歌的教程把你的朋友的臉插進去。使用這個新的機器,新的圖片只用幾分鐘就出來了,而不是好幾小時。修改出來的圖片是很好玩的。
圖4 我的鄰居Chris Van Dyke和Shruti Gandhi站在我的車庫里,照片被我的Deep Dream程序給涂鴉了一把
圖5 我朋友Barney Pell和他的國際象棋生日蛋糕
圖6 這是我運行Deep Dream程序的機器自己的圖片。看起來像是滿屏都是狗(可能是因為訓練這個模型的ImageNet數(shù)據(jù)里面都是狗的圖片。ImageNet數(shù)據(jù)集里面包括了120多種不同的狗)
如果你想搞更瘋狂的事,這里是基于Deep Dream由TensorFlow實現(xiàn)的Neural Style。出來的效果更神奇,你可以在這個腦洞大開的博文里看到部分的成果。