Domain-Specific Architectures(DSA)是后摩爾時(shí)代持續(xù)提升處理器性能的一種技術(shù)理念,即采用可編程的專用集成電路(ASICs)去加速特定的高強(qiáng)度的處理器負(fù)載,比如加速圖形渲染、加速AI神經(jīng)網(wǎng)絡(luò)的前向推理計(jì)算、提高巨量網(wǎng)絡(luò)數(shù)據(jù)的吞吐等。 架構(gòu)的定義包含指令集架構(gòu)與微架構(gòu)。指令集架構(gòu)是軟件與硬件進(jìn)行對(duì)話的接口,如果說一條指令是一個(gè)單詞,那么指令集(ISA)就是詞典,而軟件程序就像是一本使用特定詞典中的詞匯編寫出來的一本書。 通過對(duì)架構(gòu)進(jìn)行面向特定領(lǐng)域的設(shè)計(jì),縮小應(yīng)用范圍,獲得更高的性能,或者更好的能效比,保持可編程的靈活性,這就是DSA的理念。 - 面向領(lǐng)域的架構(gòu)設(shè)計(jì)可以以較低的成本獲取較高的算力,以滿足算力需求。 - 指令集架構(gòu)的可編程性帶來了相對(duì)通用的算力,為下一代算法的應(yīng)用和覆蓋更廣泛的領(lǐng)域提供了無限的可能。 GPU也是一種的DSA,GPU的發(fā)展論證了DSA取得的成功。DSA、GPU、AI這是個(gè)互相成就的故事。而Nvidia的GPGPU硬件的成功,與其CUDA生態(tài)豐富的算力軟件包、易于使用的編程接口、優(yōu)秀的編譯器脫不開干系。由此我們可以得出一條結(jié)論,對(duì)于DSA算力硬件來說,這些都是走向商業(yè)成功的必要條件。 從TX1推出開始,對(duì)標(biāo)TX1的競(jìng)品層出不窮。TX1的算力來自于GPGPU,而更加客制化的ASIC,利用卷積操作的空間局部性進(jìn)行數(shù)據(jù)復(fù)用的精妙設(shè)計(jì),在達(dá)到同等甚至更高算力的同時(shí)硬件的成本更低。最普遍的設(shè)計(jì)是一個(gè)高能效比的CPU小核如Arm Cortex A7/A53加固化的2D圖像處理(CV)模塊與固化的神經(jīng)網(wǎng)絡(luò)處理(DNN/NPU)模塊。 由于小CPU的計(jì)算能力非常受限,將主要負(fù)責(zé)應(yīng)用軟件的任務(wù)調(diào)度部分,AI應(yīng)用的前處理(非DNN算法模型部分)主要由2D圖像處理模塊來承接。問題在于前處理是非常碎片化的算法,除了個(gè)別的插值、顏色域轉(zhuǎn)換功能幾乎所有圖像處理軟件都會(huì)用到,其他所需功能非常的廣泛。僅OpenCV的核心函數(shù)、圖像處理函數(shù)就包含矩陣變換、濾波、分辨率變換、顏色空間轉(zhuǎn)換、直方圖等等幾個(gè)大類,其中每個(gè)大類中的子方法又會(huì)有若干個(gè),無法定義哪些功能需要被固化。這還不包含3D數(shù)據(jù)處理能力與特征描述子的使用。算法廠商的需求各不相同,固化的多了浪費(fèi)面積,固化的少了產(chǎn)品開發(fā)的難度將大幅提升。 ONNX是一種針對(duì)機(jī)器學(xué)習(xí)所設(shè)計(jì)的開放式的文件格式,用于存儲(chǔ)訓(xùn)練好的模型。它使得不同的人工智能框架訓(xùn)練得到的網(wǎng)絡(luò)模型可以以相同的格式進(jìn)行存儲(chǔ)。 ONNX的規(guī)范及代碼主要由微軟,亞馬遜,F(xiàn)acebook和IBM等公司共同開發(fā)。以NVIDIA的AI軟件生態(tài)中最富盛名的DNN推理開發(fā)工具庫TensortRT為例,5.1版本支持87個(gè)ONNX算子,到了7.1版本支持的ONNX算子數(shù)量為108個(gè)。功能高度固化的ASIC無法對(duì)新增的算子計(jì)算類型進(jìn)行支持,將會(huì)越來越約束算法的迭代。而在這之上進(jìn)行AI產(chǎn)品開發(fā)的算法工程師們無異于是戴著鐐銬跳舞。 Google公司研發(fā)了張量處理單元 (TPU),TPU v1 于2015年投入生產(chǎn),并被谷歌內(nèi)部用于其應(yīng)用程序。TPU是一種應(yīng)用于AI領(lǐng)域,為AI算法提供算力的ASIC,利用了神經(jīng)網(wǎng)絡(luò)對(duì)于數(shù)值精度不敏感的特性,其思想核心是采用低精度矩陣Systolic Array提供巨大算力,同時(shí)提供滿足AI需求的最小化的運(yùn)算功能。此版本(即TPUv1)的云服務(wù)從未對(duì)用戶開放開發(fā)使用,F(xiàn)在TPUv2以及后續(xù)版本被廣泛的應(yīng)用于谷歌的搜索排序、語音識(shí)別、以圖搜圖、谷歌翻譯等領(lǐng)域。 通過以上的成功案例我們可以發(fā)現(xiàn),GPGPU、TPU的迭代的共同點(diǎn)是通過越來越高度的架構(gòu)定制帶來了越來越澎湃的專用算力。同時(shí)保留或者新增通用的算力。通過高度優(yōu)化的編譯器和豐富的軟件棧,讓用戶能夠輕松的將硬件算力充分地利用起來。那么通用算力、編譯器、軟件棧這些顯然都在CPU平臺(tái)是最豐富最成熟的,而對(duì)于CPU來說 “Domain-specific architecture design is all you need”。(張底剪報(bào))
|