黃教主的開源NVDLA,「核」爆還是「核」平?
作者:痴笑、小張
萬眾期待的GPU Tech Conference中國站終於揭開了面紗,坊間流傳已久的英偉達開源DLA項目也在9月26日早上公布了RTL代碼、DC綜合腳本和testbench。矽說 小編也是備好水與麵包,在電腦面前靜靜地看了一天的代碼,迫不及待的和大家一起膜一膜黃教主的 開 源 新信仰。這到底將導致未來深度學習晶元產品的爆發還是NV一統天下後的寧靜?
架構篇:不是親兒子也一樣優秀么?
那麼多年來,Nvida只靠一條產品線——GPU獨步天下,即使近年來的Tegra Jetson (SoC=ARM+GPU)計劃,賣點也依賴於N家長久以來在GPU領域的技術累積。但由於複雜的多線程式控制制,GPU這一架構在低功耗嵌入式應用中缺乏能效上的競爭力。而此次推出的開源DLA計劃,徹底推翻GPU架構,重新定義了加速器架構,還能展現NV家優勢么?
上圖是目前發表的release中DLA的架構,其數據流主要包含卷積、激活(單數據操作 , Single Data),池化(平面數據操作,Planar Data),歸一化(多維數據操作,Multi-Plane Data)以及Reshape。從架構看,其很好地對接了CNN神經網路的主流框架,並且支持多種精度(整數4/8/16,浮點16/32)的Inference計算。
然而,DLA的可編程性相較於GPU卻弱了很多。目前卷積核主要支持Channel數為16,Kernel數為64的矩陣運算。對於無法填滿這個巨無霸矩陣的卷積核,其利用率就會降低很多,比如只有RGB三個Channel的圖形第一層。當總體而言,16x64在目前的圖像深度學習中仍然是一個較小的單元,因此其對AlexNet,VGG等主流網路的加速仍然是可觀的。
【矽說點評——深度懷疑,該卷積架構在技術上傳承了採用年初Tesla V100的新一代Cuda 核心中的Tensor Core技術,值得重點觀察!】
炫技篇:Winograd卷積法與稀疏壓縮
相比於架構上的中規中矩,NV家在加速實現上卻對最先進的高性能計算技術好不吝嗇。其中首推就是Winograd的卷積法。Winograd卷積法是對小矩陣的高速實現演算法,是由Nervana(當時可能還沒有被Intel收購呢)發表在2016年CVPR上的新演算法,其靈感來自80年代S. Winograd對於FFT加速的演算法的實現。
(如果您對數學沒有信心,請跳躍至下一個括弧)
對於一個4輸入,3係數,2輸出的卷積,採用直接的卷積計算,需要6次乘法才能得到記過。但實際上由於向量化以後的輸入數據的重複性很高,可以用過一組中間向量,僅採用4次乘法即可得到結果,即一維Winograd卷積法。該方法使乘法數量降低了1.5倍。
將一維卷積拓展成兩維,對於一個,4x4輸入,3x3係數,2x2輸出的卷積,採用直接計算,需要36個乘法器,採用Winograd乘法後僅需16個乘法器,但兩者在數學上的計算結果是等價的。由此至少一半的乘法器資源被節省了。
(數學結束了,你只要記住,對於Kenel尺寸較小的2維卷積,Winograd卷積法可以節省一半的乘法器數量與功耗得到相同的結果。)
除了Winograd,DLA還針對全連接網路的稀疏特點採用了壓縮傳輸演算法,當一組數據的60%中為0時,通過壓縮傳輸編碼,將傳輸數據帶寬降低一半。該演算法的代碼級實現
【矽說點評——這兩種方法都是高效率的硬體加速法,雖然在理論成熟後的RTL並不困難,但是想NV這樣工業級的代碼水準仍然值得我們學習!】
戰略篇:把蛋糕做大才能吃得更多?
Nvidia的人工智慧生態以硬體為本,並伴隨著推出高度優化的深度學習訓練/推理加速framework(如CuDNN和TensorRT),其願景是未來只要是深度學習相關的應用,就一定會用到由Nvidia出品的硬體或者軟體工具。考慮到人工智慧未來巨大的潛力以及目前Nvidia在人工智慧加速硬體賽道上遙遙領先的地位,Nvidia在這個時間點的選擇並不是繼續消滅打壓其他競爭對手,而是更多考慮如何推動釋放人工智慧的潛力並加速人工智慧應用的普及,這樣Nvidia才能從中獲得更多利潤。DLA之前最著名的開源晶元項目是RISC-V微處理器,而NvidiaDLA的目標,就是讓人工智慧加速器像微處理器一樣普及,在智能設備中隨處可見。相信不遠的未來基於RISCV+NVDLA的深度學習SoC就會成為開源硬體的代表作。
那麼,目前人工智慧普及的瓶頸在哪裡呢?在雲端訓練市場,搭配多塊GPU的超級計算機已經能很好地完成訓練任務,而且該市場已經被Nvidia牢牢掌控;但是在終端,硬體仍然是制約人工智慧普及的最大問題。目前基於深度學習的人工智慧計算量很大,傳統的移動SoC無法達到流暢運行深度學習模型所需要的性能,而基於GPU的方案又功耗太大,應用場景受限。在智能手機、智能攝像頭、智能家電、物聯網等等場景,人們早已經構想了無數中人工智慧的應用,然而由於市面上沒有合適的硬體,人工智慧在這些領域的普及,在Nvidia眼中只能說是蹣跚前進,遠遠沒有達到它想要的速度。
於是,Nvidia開源了DLA,目標受眾就是那些為終端應用開發晶元,沒有能力、資源或者決心開發自己的人工智慧加速模塊但又不想錯過人工智慧大潮的廠商。為什麼Nvidia自己不做終端晶元而是要開源其DLAIP呢?因為終端晶元是一個長尾市場,應用種類太多,每一種晶元都有其對於性能和功耗不同的設計。Nvidia如果想親自佔領每一個終端晶元市場,就必須增設多條產品線(攝像頭,語音,智能家電…),每款晶元在擁有深度學習加速的同時還要兼容這些晶元的原有功能(你能想像Nvidia去做攝像頭ISP晶元嗎),另外還要面臨這些市場里的原有晶元公司的競爭,最後的結果就是Nvidia疲於奔命,反而無法集中精力把自己最擅長的深度學習加速做好(之前Nvidia試水手機晶元推出Tegra系列結果鎩羽而歸,內部一定也有反思)。而開源DLA IP與推出晶元不同,針對不同的晶元需求晶元廠商可以在DLA的基礎上進行一定程度的定製和優化,從而開發出適合自己晶元的DLA版本並集成進自己的晶元,於是Nvidia只要把自己擅長的深度學習加速架構做好就行,晶元的其他部分由專業的晶元廠商負責,同時Nvidia與這些廠商的關係也由競爭變成了合作。
【矽說點評——既然終端晶元市場太大沒法在近期一口吃下,NV轉而做長期布局,提供DLA IP幫助大家把人工智慧加速功能集成進不同的晶元里便成了其主要選項,這樣一方面加速了人工智慧在終端市場的發展,與眾友商一起把蛋糕做大,雖然DLA IP不收費但是終端人工智慧市場起飛後模型的訓練和優化還是要用Nvidia的解決方案,最後還是會轉化為Nvidia的利潤;另一方面在終端卡位,避免有其他晶元廠商從終端晶元發力在人工智慧硬體站穩腳跟,進而繼續向上挑戰Nvidia在人工智慧領域的位置。】
血腥篇:AI晶元公司還有活路么?
那麼,DLA對於目前眾多人工智慧加速晶元初創公司有什麼影響呢?是不是Nvidia出場,這些初創公司的發展空間就被扼殺了呢?
事實並非如此。參考嵌入式處理器/MCU市場。在這個市場,ARM的Cortex-M0可以以近乎免費的價格使用,同時也有RISC-V這樣的開源核新起之秀。然而,在這個領域還是有許多晶元初創公司(如SiFive,Ambiq Micro等等)證明自己的價值。同樣的,在人工智慧晶元領域,初創公司在Nvidia DLA推出之後還是大有可為。
首先,目前大部分深度學習晶元的初創公司還是聚焦專用的領域的,吸取DLA技術對SoC的開發無疑是有利無害的,特別是NV大幅降低了License門檻。高性能的DLA作為SoC的重要組成部分,反而考驗了各類初創公司的集成電路設計能水平。以和DRAM的通信介面為例,即使在給出綜合約束文件(SDC)後,對於一般的後端工程師,滿足高速DRAM PHY的設計要求仍然是一個不小的課題,否則就是空有屠龍寶刀卻砍不了蒼蠅的禁地。
在目前給出的兩種系統方案(small/large)距離實用場景還遠遠不夠細緻,特別在工具鏈層面,自有編譯器與未來的DLA編譯器直接如何融會貫通都將成為重要的課題,決定了初創公司的成敗。
其次,DLA架構也有自己的瓶頸,Nvidia為了照顧通用性,其實在很多需要極致性能(超低功耗,超強性能)的場合,使用DLA架構無法滿足需求。所以,完全拋開DLA另闢蹊徑也不失為一條可行的路,例如可擴展性極好的眾核CGRA配合分散式存儲用於超高性能計算外加非常好的可配置性,或者使用硬體支持動態網路模型壓縮實現極高能效比等等,都是值得探索的路。
【矽說點評——NVDLA並非是深度學習晶元公司的末日,而更像是一個提供標準的通用參考。基於這一設計初創公司將避免自己重新發明輪子的低附加值重複,轉而發展自己最擅長的部分,實現高附加值創新。因此,Nvidia DLA對於人工智慧晶元初創公司更多的是一個參考,一種激勵,能促使這些公司更多的思考自己的獨特之處在哪裡,而不是把過多的時間放在基礎的輪子設計上。這是一件好事。】
想一起討論NVDLA嗎,歡迎加入微信討論群:
aHR0cHM6Ly93d3cud2p4LnRvcC9tLzE2ODIzODcxLmFzcHg= (二維碼自動識別)
========
歡迎加入我們的讀者群,與志同道合的人一起交流一起吐槽!點下面的鏈接填寫您的信息我們會邀請您入群!
矽說讀者交流群
我們同時也開通了微信平台(微信號:silicon_talks),將會發布更多半導體行業深度解讀和福利,歡迎搜索公眾號!
推薦閱讀:
※Minnowboard MAX介紹
※奧松機器人是一家什麼樣的公司?
※如何評價 Windows 10 提供對 Raspberry Pi 2 的支持?
※程序員如何看懂開源硬體(Arduino、Raspberry pi..)原理圖?
※Intel的Galileo和 Arduino以及Raspberry Pi有什麼區別?
TAG:NVIDIA英伟达 | 深度学习DeepLearning | 开源硬件 |