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