目前,市場上的芯片主要包括指令集架構(gòu)和數(shù)據(jù)流架構(gòu)兩種實(shí)現(xiàn)方式。指令集架構(gòu)主要包括X86架構(gòu)、ARM架構(gòu)、精簡指令集運(yùn)算RISC-V開源架構(gòu),以及SIMD架構(gòu)??傮w來說,四者都屬于傳統(tǒng)的通用指令集架構(gòu)。傳統(tǒng)的指令集架構(gòu)采用馮諾依曼計(jì)算方式,通過指令執(zhí)行次序控制計(jì)算順序,并通過分離數(shù)據(jù)搬運(yùn)與數(shù)據(jù)計(jì)算提供計(jì)算通用性。與上述四者不同,數(shù)據(jù)流架構(gòu)采用了數(shù)據(jù)流引擎的計(jì)算架構(gòu),它的顯著特點(diǎn)就是能夠大幅提高芯片利用率。如鯤云的CAISA(Custom AI Streaming Accelerator Architecture)就采用了定制化的數(shù)據(jù)流架構(gòu)。那么,究竟什么是數(shù)據(jù)流架構(gòu)呢?它又是怎么實(shí)現(xiàn)性能的極大提升呢?
數(shù)據(jù)流架構(gòu)是一種計(jì)算機(jī)體系結(jié)構(gòu),直接與傳統(tǒng)的馮·諾依曼架構(gòu)或控制流體系結(jié)構(gòu)進(jìn)行對比,數(shù)據(jù)流架構(gòu)沒有概念上的指令計(jì)數(shù)器。它使用粗粒度表示(Coarse-grained Representation)來提高數(shù)據(jù)的并行度,并允許編譯器同時(shí)調(diào)度多個(gè)順序循環(huán)和功能,以實(shí)現(xiàn)更高的吞吐量和更低的延遲。
下圖顯示了數(shù)據(jù)流流水線的概念圖。在這個(gè)概念圖中,指令集架構(gòu)首先執(zhí)行函數(shù)A,完成之后再執(zhí)行函數(shù)B,依次類推直至執(zhí)行完所有程序。在定制數(shù)據(jù)流架構(gòu)的情形下,編譯器可以安排每個(gè)函數(shù)在數(shù)據(jù)可用時(shí)立即執(zhí)行。
在此示例中,指令集架構(gòu)(圖A)等待時(shí)間和間隔為8個(gè)時(shí)鐘周期。使用數(shù)據(jù)流架構(gòu),該間隔可減少到僅三個(gè)時(shí)鐘周期(圖B)。
目前,數(shù)據(jù)流架構(gòu)已在專用硬件中成功應(yīng)用,例如數(shù)字信號處理、網(wǎng)絡(luò)路由、圖形處理、遙感檢測、以及數(shù)據(jù)庫處理等。同時(shí),在當(dāng)今的許多軟件體系結(jié)構(gòu)中(包括數(shù)據(jù)庫引擎設(shè)計(jì)和并行計(jì)算框架),它也占據(jù)著非常重要的地位。1994年,帝國理工學(xué)院教授、英國皇家工程院院士、鯤云科技聯(lián)合創(chuàng)始人和首席科學(xué)家Wayne Luk陸永青院士率先將數(shù)據(jù)流架構(gòu)定制化并運(yùn)用到AI領(lǐng)域。
定制數(shù)據(jù)流架構(gòu)與指令集架構(gòu)的區(qū)別
首先,現(xiàn)在大部分的 GPU、CPU 都是基于指令集的架構(gòu),應(yīng)用層可以通過軟件和編輯器去將語言最終轉(zhuǎn)化為機(jī)器的語言,即二進(jìn)制的碼,從而執(zhí)行指令和操作,并保證對不同應(yīng)用的兼容性。
相較于指令集,數(shù)據(jù)流的核心就是使每個(gè)時(shí)鐘周期都能進(jìn)行有效計(jì)算。數(shù)據(jù)不停流入計(jì)算單元并完成計(jì)算,得到輸出后,最終數(shù)據(jù)將會被存儲到內(nèi)存中或流入下一個(gè)流水線操作。
簡而言之,數(shù)據(jù)流架構(gòu)可以為特定應(yīng)用場景提供更高的芯片利用率;而指令集架構(gòu)雖然能提供更高的通用性,但其芯片利用率相對較低。兩種架構(gòu)產(chǎn)生差異的原因在于:
數(shù)據(jù)流架構(gòu)完全依靠數(shù)據(jù)流轉(zhuǎn)的方式來控制計(jì)算,從而消除了由于指令控制和數(shù)據(jù)搬運(yùn)而產(chǎn)生的數(shù)據(jù)開銷;
指令集架構(gòu)通過指令控制來處理不同場景下的運(yùn)算,提高了對不同計(jì)算需求的通用性支持。
數(shù)據(jù)流架構(gòu)要實(shí)現(xiàn)性能的極大提升,需要解決兩個(gè)問題,一是如何在復(fù)雜計(jì)算架構(gòu)下保持較高的計(jì)算效率,二是如何保證定制架構(gòu)的通用性,即如何支持不同的深度學(xué)習(xí)算法。
為此, 鯤云研發(fā)了RainBuilder與CAISA架構(gòu)配合,通過動態(tài)配置使其能通用支持各種AI算法,提升了通用性。該編譯器能進(jìn)行算法模型結(jié)構(gòu)的解析,并把模型導(dǎo)入數(shù)據(jù)流架構(gòu),從而提高數(shù)據(jù)流架構(gòu)的計(jì)算效率來完成深度學(xué)習(xí)網(wǎng)絡(luò)的計(jì)算。
RainBuilder的優(yōu)勢包括:
是一種端到端(End-to-End)的編譯工具
最大化 AI 性能,充分利用數(shù)據(jù)流架構(gòu)下的計(jì)算單元
使用硬件流水線架構(gòu)完成數(shù)據(jù)的計(jì)算與控制
RainBuilder由RbCompiler、RbRuntime和RbDriver三部分構(gòu)成。RainBuilder的原理如下圖所示:
RainBuilder Compiler(下文稱為RbCompiler或Compiler)可以將用戶在TensorFlow、Caffe、ONNX、PyTorch等深度學(xué)習(xí)框架下開發(fā)的算法模型進(jìn)行全自動的編譯優(yōu)化,并提取數(shù)據(jù)流中間表達(dá)式(Streaming Graph IR,SG IR)。模型編譯過程中自動進(jìn)行數(shù)據(jù)量化、節(jié)點(diǎn)融合、軟硬件分割等操作。Compiler通過鯤云研發(fā)的圖優(yōu)化算法將已有開發(fā)框架中的指令集計(jì)算圖重構(gòu)為數(shù)據(jù)流圖。轉(zhuǎn)化過程中涉及大量針對數(shù)據(jù)流架構(gòu)的模型壓縮和量化技術(shù),從軟件層面進(jìn)一步提升計(jì)算效率。
RainBuilder Runtime為CAISA加速引擎的軟件運(yùn)行時(shí),負(fù)責(zé)將SG IR進(jìn)行加載并使用CAISA加速引擎對深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行運(yùn)行加速,該部分組件以C/C++ API接口的形式開放給用戶進(jìn)行二次開發(fā)和部署使用。RbRuntime作為RainBuilder的后端,配合RbCompiler使用,用于加載并運(yùn)行RbCompiler編譯生成的模型文件,即上文提到的SG IR,SG IR包含了模型的所有節(jié)點(diǎn),并能根據(jù)節(jié)點(diǎn)創(chuàng)建對應(yīng)的SG OP,同時(shí)還能按照拓?fù)漤樞驅(qū)G OP部署在相應(yīng)的設(shè)備上執(zhí)行計(jì)算,返回模型的計(jì)算結(jié)果。Runtime提供深度學(xué)習(xí)算法的應(yīng)用接口,用戶可根據(jù)使用習(xí)慣調(diào)用python或C/C++的API完成算法的部署。Runtime設(shè)計(jì)了工作線程和計(jì)算線程精細(xì)化調(diào)度框架,同時(shí)針對x86、ARM平臺實(shí)現(xiàn)了算子的深度適配和優(yōu)化,從而保證目標(biāo)算法可以充分發(fā)揮CAISA架構(gòu)計(jì)算效率的優(yōu)勢。
RainBuilder Driver是底層CAISA架構(gòu)的相關(guān)驅(qū)動模塊,對應(yīng)用開發(fā)者透明,驅(qū)動CAISA硬件架構(gòu),實(shí)現(xiàn)硬件模塊的計(jì)算調(diào)度和硬件模型分析。
RainBuilder的推出簡化了算法從開發(fā)到芯片級部署的流程。用戶不需要了解底層計(jì)算架構(gòu),也不需要改變開發(fā)習(xí)慣,就可以實(shí)現(xiàn)算法在數(shù)據(jù)流架構(gòu)上的高效部署。
鯤云科技聚焦于基于數(shù)據(jù)流架構(gòu)的定制AI計(jì)算引擎,憑借自1991年近三十年技術(shù)積累,2019年4月,鯤云科技發(fā)布全球首個(gè)AI數(shù)據(jù)流架構(gòu)CAISA 2.0架構(gòu),其芯片利用率(Chip Utilization Ratio,CUR )最高可達(dá)98%,并且支持大多數(shù)主流卷積神經(jīng)網(wǎng)絡(luò)(CNN),是世界上首個(gè)針對人工智能的數(shù)據(jù)流架構(gòu)?;谧灾餮邪l(fā)的CAISA數(shù)據(jù)流架構(gòu),鯤云的“星空”、“雨人”加速卡已在航空、航天、電力、安防、教育、智能制造、智慧城市等領(lǐng)域落地。
提供下一代計(jì)算平臺 加速人工智能落地
聯(lián)系我們:contact@corerain.com
銷售聯(lián)絡(luò):sales@corerain.com
媒體合作:media@corerain.com
展會合作:events@corerain.com
深圳 | 深圳市福田保稅區(qū)市花路長富金茂大廈14層
上海 | 上海市閔行區(qū)龍湖虹橋天街A棟608A
濟(jì)南 | 山東省濟(jì)南市濟(jì)南市高新區(qū)旅游路8661號高科技創(chuàng)新園 5 號樓 9 層
北京 | 北京市海淀區(qū)知春路23號4層406A室
西安 | 陜西省西安市碑林區(qū)大差市十字西南角1幢1單元10503室 (萬達(dá)新天地)
廣州 | 廣東省廣州市番禺區(qū)鐘村街鐘二村鐘漢路13號星光薈直播小鎮(zhèn)508A
重慶 | 重慶市九龍坡區(qū)渝州路121號A區(qū)D207
杭州 | 杭州市江干區(qū)錢江新城城星路98號迪凱城星國際A座27樓
南京 | 江蘇省南京市鼓樓區(qū)漢中路2號亞太商務(wù)樓31層
武漢 | 湖北省武漢市武昌區(qū)中南路街街道武珞路與丁字橋交匯路口中南國際匯18樓OVU創(chuàng)客星(理想國際站)