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