資料介紹
由于深度學(xué)習(xí)的計(jì)算相當(dāng)密集,所以有人覺(jué)得“必須要購(gòu)買(mǎi)一個(gè)多核快速CPU”, 也有人認(rèn)為“購(gòu)買(mǎi)快速CPU可能是種浪費(fèi)”。
那么,這兩種觀點(diǎn)哪個(gè)是對(duì)的? 其實(shí),在建立深度學(xué)習(xí)系統(tǒng)時(shí),最糟糕的事情之一就是把錢(qián)浪費(fèi)在不必要的硬件上。 本文將告訴你如何用最省錢(qián)的方式,來(lái)搭建一個(gè)高性能深度學(xué)習(xí)系統(tǒng)。
當(dāng)初,在我研究并行深度學(xué)習(xí)過(guò)程中,我構(gòu)建了一個(gè)GPU集群 ,所以我需要仔細(xì)選擇硬件。 盡管經(jīng)過(guò)了反復(fù)的研究和推理,但當(dāng)我挑選硬件時(shí),我仍然會(huì)犯許多錯(cuò)誤,并且當(dāng)應(yīng)用于實(shí)踐中時(shí),那些錯(cuò)誤就展現(xiàn)出來(lái)了。 所以,在這里,我想分享一下我所學(xué)到的知識(shí),希望你不會(huì)像我一樣再陷入同樣的陷阱。
▍GPU
本文假設(shè)您將使用GPU進(jìn)行深度學(xué)習(xí)。 如果您正在建立或升級(jí)您的系統(tǒng),那么忽視GPU是不明智的。 GPU才是深度學(xué)習(xí)應(yīng)用的核心,它能大大提升處理速度,所以絕對(duì)不能忽略。
我在之前的文章中詳細(xì)介紹了GPU的選擇,并且GPU的選擇可能是您的深度學(xué)習(xí)系統(tǒng)中最關(guān)鍵的選擇。
一般來(lái)說(shuō),如果您的資金預(yù)算有限,我推薦您購(gòu)買(mǎi)GTX 680,或者GTX Titan X(如果你很有錢(qián),可用它做卷積)或GTX 980(它性價(jià)比很高,但若做大型卷積神經(jīng)網(wǎng)絡(luò)就有些局限性了),它們?cè)趀Bay上就能買(mǎi)得到。
另外,低成本高性價(jià)比的內(nèi)存我推薦GTX Titan。 之前我支持過(guò)GTX 580,但是由于新更新的cuDNN庫(kù)顯著提升了卷積速度,故而所有不支持cuDNN的GPU都已經(jīng)過(guò)時(shí)了,其中 GTX 580就是這樣一款GPU。 如果您不使用卷積神經(jīng)網(wǎng)絡(luò),GTX 580仍然是一個(gè)很好的選擇。
你能識(shí)別上面哪個(gè)硬件會(huì)導(dǎo)致糟糕的表現(xiàn)? 是這些GPU的其中一個(gè)? 還是CPU?
▍CPU 要選擇CPU,我們首先要了解CPU及它與深度學(xué)習(xí)的關(guān)系。 CPU對(duì)深度學(xué)習(xí)有什么作用? 當(dāng)您在GPU上運(yùn)行深度網(wǎng)絡(luò)時(shí),CPU幾乎沒(méi)有計(jì)算, 但是CPU仍然可以處理以下事情:
在代碼中寫(xiě)入和讀取變量
執(zhí)行諸如函數(shù)調(diào)用的指令
在GPU上啟動(dòng)函數(shù)調(diào)用
創(chuàng)建小批量數(shù)據(jù)
啟動(dòng)到GPU的數(shù)據(jù)傳輸
所需CPU的數(shù)量
當(dāng)我用三個(gè)不同的庫(kù)訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)時(shí),我總是看到一個(gè)CPU線程是100%(有時(shí)另一個(gè)線程會(huì)在0到100%之間波動(dòng))。 而且這一切立即告訴你,大多數(shù)深入學(xué)習(xí)的庫(kù),以及實(shí)際上大多數(shù)的軟件應(yīng)用程序,一般僅使用一個(gè)線程。
這意味著多核CPU相當(dāng)無(wú)用。 如果您運(yùn)行多個(gè)GPU,并使用MPI之類的并行化框架,那么您將一次運(yùn)行多個(gè)程序,同時(shí),也需要多個(gè)線程。
每個(gè)GPU應(yīng)該是一個(gè)線程,但每個(gè)GPU運(yùn)行兩個(gè)線程將會(huì)為大多數(shù)深入學(xué)習(xí)庫(kù)帶來(lái)更好的性能;這些庫(kù)在單核上運(yùn)行,但是有時(shí)會(huì)異步調(diào)用函數(shù),就使用了第二個(gè)CPU線程。
請(qǐng)記住,許多CPU可以在每個(gè)內(nèi)核上運(yùn)行多個(gè)線程(這對(duì)于Intel 的CPU尤為如此),因此通常每個(gè)GPU對(duì)應(yīng)一個(gè)CPU核就足夠了。
CPU和PCI-Express
這是一個(gè)陷阱! 一些新的Haswell CPU不支持那些舊CPU所支持的全部40個(gè)PCIe通道。如果要使用多個(gè)GPU構(gòu)建系統(tǒng),請(qǐng)避免使用這些CPU。 另外,如果您有一個(gè)帶有3.0的主板,則還要確保您的處理器支持PCIe 3.0。
CPU緩存大小
正如我們將在后面看到的那樣,CPU高速緩存大小在“CPU-GPU-管線”方面是相當(dāng)無(wú)關(guān)緊要的,但是我還是要做一個(gè)簡(jiǎn)短的分析,以便我們確保沿著這條計(jì)算機(jī)管道能考慮到每一個(gè)可能出現(xiàn)的瓶頸,進(jìn)而我們可以全面了解整體流程。
通常人們購(gòu)買(mǎi)CPU時(shí)會(huì)忽略緩存,但通常它是整體性能問(wèn)題中非常重要的一部分。 CPU緩存的片上容量非常小,且位置非常靠近CPU,可用于高速計(jì)算和操作。 CPU通常具有緩存的分級(jí),從小型高速緩存(L1,L2)到低速大型緩存(L3,L4)。
作為程序員,您可以將其視為哈希表,其中每個(gè)數(shù)據(jù)都是鍵值對(duì)(key-value-pair),您可以在特定鍵上進(jìn)行快速查找:如果找到該鍵,則可以對(duì)高速緩存中的值執(zhí)行快速讀寫(xiě)操作; 如果沒(méi)有找到(這被稱為緩存未命中),則CPU將需要等待RAM趕上,然后從那里讀取該值(這是非常緩慢的過(guò)程)。 重復(fù)的緩存未命中會(huì)導(dǎo)致性能顯著降低。 高效的CPU高速緩存方案和架構(gòu),通常對(duì)CPU的性能至關(guān)重要。
CPU如何確定其緩存方案,是一個(gè)非常復(fù)雜的主題,但通常可以假定重復(fù)使用的變量、指令和RAM地址將保留在緩存中,而其他不太頻繁出現(xiàn)的則不會(huì)。
在深度學(xué)習(xí)中,相同的內(nèi)存范圍會(huì)重復(fù)被小批量讀取,直到送到GPU,并且該內(nèi)存范圍會(huì)被新數(shù)據(jù)覆蓋。但是如果內(nèi)存數(shù)據(jù)可以存儲(chǔ)在緩存中,則取決于小批量大小。
對(duì)于128位的小批量大小,我們對(duì)應(yīng)于MNIST和CIFAR分別有0.4MB和1.5 MB,這適合大多數(shù)CPU緩存;對(duì)于ImageNet,我們每個(gè)小批量有超過(guò)85 MB的數(shù)據(jù)( ),即使是最大的緩存(L3緩存不超過(guò)幾MB),也算是很大的了。
由于數(shù)據(jù)集通常太大而無(wú)法適應(yīng)緩存,所以新的數(shù)據(jù)需要從RAM中每個(gè)讀取一小部分新的,并且需要能夠以任何方式持續(xù)訪問(wèn)RAM。
RAM內(nèi)存地址保留在緩存中(CPU可以在緩存中執(zhí)行快速查找,并指向RAM中數(shù)據(jù)的確切位置),但是這僅限于整個(gè)數(shù)據(jù)集都存儲(chǔ)于RAM時(shí)才會(huì)如此,否則內(nèi)存地址將改變,并且緩存也不會(huì)加速(稍后你會(huì)看到的,使用固定內(nèi)存時(shí)則不會(huì)出現(xiàn)這種情況,但這并不重要)。
深度學(xué)習(xí)代碼的其他部分(如變量和函數(shù)調(diào)用),將從緩存中受益,但這些代碼通常數(shù)量較少,可輕松適應(yīng)幾乎任何CPU的小型快速L1緩存。
從這個(gè)推理結(jié)果可以看出,CPU緩存大小不應(yīng)該很重要。下一節(jié)進(jìn)一步分析的結(jié)果,也與此結(jié)論相一致。
- bAIwatch、深度學(xué)習(xí)和沖浪開(kāi)源硬件
- 玩轉(zhuǎn)智能硬件(三)Jetson Nano深度學(xué)習(xí)環(huán)境搭建
- 深度學(xué)習(xí)嵌入式系統(tǒng)
- DCS系統(tǒng)硬件學(xué)習(xí)
- 基于深度學(xué)習(xí)的機(jī)器人示教系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 77次下載
- 基于評(píng)分矩陣與評(píng)論文本的深度學(xué)習(xí)模型 58次下載
- 基于深度學(xué)習(xí)的行為識(shí)別算法及其應(yīng)用 20次下載
- 基于深度學(xué)習(xí)的神經(jīng)協(xié)同過(guò)濾推薦系統(tǒng) 5次下載
- 基于預(yù)訓(xùn)練模型和長(zhǎng)短期記憶網(wǎng)絡(luò)的深度學(xué)習(xí)模型 19次下載
- 3小時(shí)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)課件下載 0次下載
- 深度模型中的優(yōu)化與學(xué)習(xí)課件下載 3次下載
- 深度學(xué)習(xí)入門(mén):基于Python的理論與實(shí)現(xiàn)電子書(shū) 30次下載
- python機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的學(xué)習(xí)書(shū)籍資料免費(fèi)下載 93次下載
- 深度學(xué)習(xí)是什么?了解深度學(xué)習(xí)難嗎?讓你快速了解深度學(xué)習(xí)的視頻講解 16次下載
- dsp硬件開(kāi)發(fā)設(shè)計(jì)指南 40次下載
- 深度學(xué)習(xí)中的時(shí)間序列分類方法 332次閱讀
- 基于AI深度學(xué)習(xí)的缺陷檢測(cè)系統(tǒng) 492次閱讀
- TensorFlow與PyTorch深度學(xué)習(xí)框架的比較與選擇 529次閱讀
- 深度學(xué)習(xí)中的圖像分割 1105次閱讀
- 深度學(xué)習(xí)模型小型化處理的五種方法 4095次閱讀
- 深度學(xué)習(xí)和普通機(jī)器學(xué)習(xí)的區(qū)別 4342次閱讀
- NLP中的深度學(xué)習(xí)技術(shù)概述 4665次閱讀
- ICLR 2019論文解讀:深度學(xué)習(xí)應(yīng)用于復(fù)雜系統(tǒng)控制 7704次閱讀
- Python入門(mén)深度學(xué)習(xí)完整指南 1421次閱讀
- 深度學(xué)習(xí)和機(jī)器學(xué)習(xí)深度的不同之處 淺談深度學(xué)習(xí)的訓(xùn)練和調(diào)參 4270次閱讀
- 深度探究機(jī)器學(xué)習(xí)與圖像融合的技術(shù)基于TOF硬件平臺(tái)的技術(shù)應(yīng)用 4733次閱讀
- 深度揭示 Facebook 內(nèi)部支持機(jī)器學(xué)習(xí)的硬件和軟件基礎(chǔ)架構(gòu) 4611次閱讀
- 初學(xué)者必看!深度學(xué)習(xí)入門(mén)指南 3661次閱讀
- 淺析深度學(xué)習(xí)的多體問(wèn)題解決方案 1359次閱讀
- 如何區(qū)分深度學(xué)習(xí)與機(jī)器學(xué)習(xí) 1888次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 651單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)大棚環(huán)境控制器仿真程序
- 1.10 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多