來源:微軟研究院AI頭條
概要:1月17日,院友袁進輝博士回到微軟亞洲研究院做了題為《打造最強深度學習引擎》的報告,分享了深度學習框架方面的技術進展。
1月17日,院友袁進輝博士回到微軟亞洲研究院做了題為《打造最強深度學習引擎》的報告,分享了深度學習框架方面的技術進展。報告中主要講解了何為最強的計算引擎?專用硬件為什么快?大規(guī)模專用硬件面臨著什么問題?軟件構架又應該解決哪些問題?
首先,我們一起來開一個腦洞:想象一個最理想的深度學習引擎應該是什么樣子的,或者說深度學習引擎的終極形態(tài)是什么?看看這會給深度學習框架和AI專用芯片研發(fā)帶來什么啟發(fā)。
以大家耳熟能詳?shù)木矸e神經(jīng)網(wǎng)絡CNN 為例,可以感覺一下目前訓練深度學習模型需要多少計算力。下方這張表列出了常見CNN模型處理一張圖片需要的內(nèi)存容量和浮點計算次數(shù),譬如VGG-16網(wǎng)絡處理一張圖片就需要16Gflops。值得注意的是,基于ImageNet數(shù)據(jù)集訓練CNN,數(shù)據(jù)集一共大約120萬張圖片,訓練算法需要對這個數(shù)據(jù)集掃描100遍(epoch),這意味著10^18次浮點計算,即1exaFlops。簡單演算一下可發(fā)現(xiàn),基于一個主頻為2.0GHz的CPU core來訓練這樣的模型需要好幾年的時間。
專用硬件比通用硬件(如CPU、GPU)快,有多種原因,主要包括:(1)通用芯片一般經(jīng)歷“取指-譯碼-執(zhí)行”(甚至包括“取數(shù)據(jù)”)的步驟才能完成一次運算,專用硬件大大減小了“取指-譯碼”等開銷,數(shù)據(jù)到達即執(zhí)行;(2)專用硬件控制電路復雜度低,可以在相同的面積下集成更多對運算有用的器件,可以在一個時鐘周期內(nèi)完成通用硬件需要數(shù)千上萬個時鐘周期才能完成的操作;(3)專用硬件和通用硬件內(nèi)都支持流水線并行,硬件利用率高;(4)專用硬件片內(nèi)帶寬高,大部分數(shù)據(jù)在片內(nèi)傳輸。顯然,如果不考慮物理現(xiàn)實,不管什么神經(jīng)網(wǎng)絡,不管問題的規(guī)模有多大,都實現(xiàn)一套專用硬件是效率最高的做法。問題是,這行得通嗎?
現(xiàn)實中,不管是通用硬件(如GPU)還是專用硬件(如TPU) 都可以通過高速互聯(lián)技術連接在一起,通過軟件協(xié)調(diào)多個設備來完成大規(guī)模計算。使用最先進的互聯(lián)技術,設備和設備之間傳輸帶寬可以達到100Gbps或者更多,這比設備內(nèi)部帶寬低上一兩個數(shù)量級,不過幸好,如果軟件“調(diào)配得當”,在這個帶寬條件下也可能使得硬件計算飽和。當然,“調(diào)配得當”技術挑戰(zhàn)極大,事實上,單個設備速度越快,越難把多個設備“調(diào)配得當”。
當前深度學習普遍采用隨機梯度下降算法(SGD),一般一個GPU處理一小塊兒數(shù)據(jù)只需要100毫秒的時間,那么問題的關鍵就成了,“調(diào)配”算法能否在100毫秒的時間內(nèi)為GPU處理下一塊數(shù)據(jù)做好準備,如果可以的話,那么GPU就會一直保持在運算狀態(tài),如果不可以,那么GPU就要間歇性的停頓,意味著設備利用率降低。理論上是可以的,有個叫運算強度(Arithmetic intensity)的概念,即flops per byte,表示一個字節(jié)的數(shù)據(jù)上發(fā)生的運算量,只要這個運算量足夠大,意味著傳輸一個字節(jié)可以消耗足夠多的計算量,那么即使設備間傳輸帶寬低于設備內(nèi)部帶寬,也有可能使得設備處于滿負荷狀態(tài)。進一步,如果采用比GPU更快的設備,那么處理一塊兒數(shù)據(jù)的時間就比100毫秒更低,譬如10毫秒,在給定的帶寬條件下,“調(diào)配”算法能用10毫秒的時間為下一次計算做好準備嗎?事實上,即使是使用不那么快(相對于TPU 等專用芯片)的GPU,當前主流的深度學習框架在某些場景(譬如模型并行)已經(jīng)力不從心了。
一個通用的深度學習軟件框架要能對任何給定的神經(jīng)網(wǎng)絡和可用資源都能最高效的“調(diào)配”硬件,這需要解決三個核心問題:(1)資源分配,包括計算核心,內(nèi)存,傳輸帶寬三種資源的分配,需要綜合考慮局部性和負載均衡的問題;(2)生成正確的數(shù)據(jù)路由(相當于前文想象的專用硬件之間的連線問題);(3)高效的運行機制,完美協(xié)調(diào)數(shù)據(jù)搬運和計算,硬件利用率最高。
事實上,這三個問題都很挑戰(zhàn),本文暫不討論其解法,假設我們能夠解決這些問題的話,會有什么好處呢?
假設我們能解決前述的三個軟件上的難題,那就能“魚與熊掌兼得”:軟件發(fā)揮靈活性,硬件發(fā)揮高效率,任給一個深度學習任務,用戶不需要重新連線,就能享受那種“無限大專用硬件”的性能,何其美好。更令人激動的是,當這種軟件得以實現(xiàn)時,專用硬件可以比現(xiàn)在所有AI芯片都更簡單更高效。讀者可以先想象一下怎么實現(xiàn)這種美好的前景。
讓我們重申一下幾個觀點:(1)軟件真的非常關鍵;(2)我們對宏觀層次(設備和設備之間)的優(yōu)化更感興趣;(3)深度學習框架存在一個理想的實現(xiàn),正如柏拉圖心中那個最圓的圓,當然現(xiàn)有的深度學習框架還相距甚遠;(4)各行各業(yè)的公司,只要有數(shù)據(jù)驅(qū)動的業(yè)務,最終都需要一個自己的“大腦”,這種“大腦”不應該只被少數(shù)巨頭公司獨享。
-
硬件
+關注
關注
11文章
3535瀏覽量
68476 -
深度學習
+關注
關注
73文章
5586瀏覽量
123717 -
cnn
+關注
關注
3文章
355瀏覽量
23149
原文標題:深度學習引擎的終極形態(tài)是什么?
文章出處:【微信號:AItists,微信公眾號:人工智能學家】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論