RISC-V架構下 DSA - AI算力的更多可能性(1)
責編 | 王子彧
出品 |進迭時空SpacemiT
AI 應用出現在我們日常的生產生活當中,賦能各行各業的勁頭勢不可擋。近些年,AI 算力芯片領域群雄逐鹿,通過對芯片、算力與 AI 三者發展迭代過程的理解,我們發現高能效比的算力、通用的軟件棧以及高度優化的編譯器,是我們的 AI 算力產品邁向成功的必要條件。
進迭時空作為計算芯片企業,對 RISC-V 架構 CPU 進行高度定制,不斷挖掘其在計算中的潛力,在 RISC-V 生態強大的軟件棧與 CPU 領域成熟的編譯器的基礎上對 RISC-V DSA 進行聯合優化并提供軟硬一體的計算解決方案,給 AI 領域帶來高效、易用的算力。
GPGPU 作為 HPC 領域(通用算力)的
DSA 打開了 AI 的大門
在上世紀80年代到90年代之間,隨著科技的發展,CPU 的性能每隔 18 到 20 個月左右就能翻倍。這就是英特爾(Intel)創始人之一戈登·摩爾提出的摩爾定律(Moore's law)的主要內容。這意味著每隔18個月左右,同一款軟件在新發售的 CPU 處理器上的運行速度可以直接翻倍。
轉折點大概在2004年5月份, 當時 Intel 取消了其新一代的單核處理器開發工作轉頭主攻雙核處理器設計。在同年稍晚一些,Herb Sutter 寫了著名的《The Free Lunch Is Over(不再有免費午餐)》,文章主要表達除非軟件的開發進行了多核多線程的設計,否則將無法像過去一樣每隔一年多時間即可獲取一倍的加速效果。如下圖所示,CPU 處理器的單核計算性能開始趨近于一個平臺區間,依靠增加晶體管密度來提升計算性能已趨于乏力,不斷縮小的芯片尺寸總會遇到其物理極限。這意味著獲得更高的性能提升需要新的方法。
上圖為42年間的微處理器趨勢數據
在摩爾定律的加倍效應已經放緩的后摩爾時代,持續提升處理器性能的一種重要的技術理念就是 Domain-Specific Architectures(DSA),即采用可編程的專用集成電路(ASICs)去加速特定的高強度的處理器負載,比如加速圖形渲染、加速 AI 神經網絡的前向推理計算、提高巨量網絡數據的吞吐等。
架構的定義包含指令集架構與微架構。指令集架構是軟件與硬件進行對話的接口,如果說一條指令是一個單詞,那么指令集(ISA)就是詞典,而軟件程序就像是一本使用特定詞典中的詞匯編寫出來的一本書。
架構設計
通過對架構進行面向特定領域的設計,縮小應用范圍,獲得更高的性能,或者更好的能效比,保持可編程的靈活性,這就是 DSA 的理念。
面向領域的架構設計可以以較低的成本獲取較高的算力,以滿足算力需求。
指令集架構的可編程性帶來了相對通用的算力,為下一代算法的應用和覆蓋更廣泛的領域提供了無限的可能。
DSA 的概念由 2017 年圖靈獎得主 Henessy 和 Patterson 提出,并進行了題為《創新體系結構將迎來新的黃金時代》的演說。我們生活中最為熟悉的DSA 可能就是顯卡(Graphics Processing Unit即GPU),游戲影音娛樂都離不開它。
1999年,NVIDIA 公司在發布其標志性產品 GeForce 256時,首次提出了 GPU 的概念。其實就是 DSA for 3D Graphics,目的是為了加速計算 3D 虛擬世界的渲染,降低 CPU 的負載。GPU 技術的發展也促進了顯卡殺手級游戲引擎的激進發展,時至今日游戲畫面的逼真程度堪比真人版電影。
時間來到2006年,NVIDIA 發布了 GeForce 8800 GTX(核心代號G80),與 G80 一同發布的還有著名的 CUDA(compute unified device architecture)并提供了驅動程序和 C 語言擴展 。
CUDA 發展到今日,區別于開放計算語言 (OpenCL 跨平臺并行編程的獨立開放標準) ,開發人員可以使用流行的語言(C、C++、Fortran、Python、MATLAB 等)編寫 CUDA 程序,并使用幾個基本的關鍵字即可將并行性添加到他們的代碼中,而不僅僅是局限于使用 C 語言。理論上 OpenCL 的運行時編譯能夠帶來較高的執行效率,但是實際上由于 CUDA 是由同一家開發執行其功能的硬件的公司開發,所以后者能更好地匹配 GPU 的計算特性,從而提供更好的性能。
由于 CUDA 便捷的編程模型與優秀的編譯器,硬件資源可以較為容易的被充分利用,使得 GPU 上的通用計算能力被充分開發,拓展了 GPU 的應用領域。如下圖所示 G80 核心能夠提供比同時期的以 CPU 為中心的高性能處理器相當甚至更高的計算能力。再加上便于編程利用的這一特點開始逐漸被高性能計算(High-Performance Computing HPC)社區注意到,并加入到 CUDA 的生態當中開展研究。NVIDIA 公司也提供了 cuBLAS、cuRAND、cuSPARSE、cuSolver、cuFFT、NPP 等一眾實用高效的計算庫,進一步擴充了 NVIDIA 的算力生態。
2012年多倫多大學的 Alex Krizhevsky 發表了一種新的深度神經網絡(DNN 亦或深度卷積神經網絡 CNN 本文中一律以 DNN 指代)模型 AlexNet,該模型在 ImageNet 圖像比賽中取得了有史以來最好的成績。15.3%的 top-5 錯誤率與此同時第二名的錯誤率高達26.2%。這一結果震驚了世界,從此AI競賽開始拉開帷幕。該網絡模型擁有60 million 的單精度浮點參數量,存儲到磁盤上要占用 240MB 的空間。作者表示在顯存和算力依然不夠的影響下這是他在兩塊GTX 580 3GB GPU 上能做到的極限了,如果能夠有更快的 GPU 按照經驗,他可以得到更好的分類結果。【ImageNet Classification with Deep Convolutional Neural Networks】
從那時起, 幾乎所有的AI研究員都開始使用 GPU 去進行算法領域的探索與突破。同時 GPU 的架構設計也傾向于提供越來越多的3D能力以外的通用算力,這種設計理念被稱為 General-Purpose GPU(GPGPU)。
2011年 TESLA GPU 計算卡發布,標志著 NVIDIA 將正式用于計算的 GPU 產品線獨立出來,憑借著架構上的優勢,GPU 在通用計算及超級計算機領域,逐漸取代 CPU 成為主角。【 HU L, CHE X, ZHENG S Q, et al. A closer look at GPGPU[J]. ACM Computing Surveys, 2016, 48(4): 1-20.】
伴隨著 GPU 技術的發展,AI算法研究也突飛猛進。2014 年前后,香港中文大學的 Sun Yi 等人將卷積神經網絡應用在人臉識別領域,采用20萬訓練數據,在 LFW 數據集上第一次得到超過人類水平的識別精度。2015年10月, AlphaGo 擊敗樊麾,成為第一個無需讓子即可在19路棋盤上擊敗圍棋職業棋士的電腦圍棋程序,創造了歷史,并于2016年1月發表在知名期刊《自然》。在 CES 2023上,奔馳宣布成為美國首家獲得 L3 自動駕駛認證的廠商。AI算法在越來越多的領域的能力上接近和超越人類,也就是說在這些領域AI可以幫助降低人們的負擔,釋放了人類的潛力。同時也意味著商機與產業化的機會。
通用算力、專用算力,
GPGPU與AI DSA相向而行,殊途同歸
在2014年,世界上第一款 supercomputer on a module, Jetson TX1問世,TX1采用256個NVIDIA Maxwell 架構 CUDA cores 提供了超過1 TeraFLOPs 性能。旨在能夠為當時最新視覺計算應用提供所需的性能和能效。定位為Deep Learning, Computer Vision, Graphics、GPU Computing 的嵌入式平臺。
圖5.DRIVE Thor is the next generation in the NVIDIA AI compute roadmap。
來源【https://blogs.nvidia.com/blog/2022/09/20/drive-thor/】
該系列產品從2018年的1T算力的 TX1 一路發展到2024年預計發售的擁有2000T算力的 THOR 平臺。值得注意的是在 XAVIER 與 ORIN 平臺上有超過一半的標稱算力是由 DLA 提供。
圖6.Jetson Orin Technical Specifications
來源【https://www.nvidia.com/en-sg/autonomous-machines/embedded-systems/jetson-orin/】
采用 DLA 可以加速部分計算密集的算子,與采用 GPGPU 計算相比,在損失部分推理精度的前提下,采用 DLA 加速推理計算不僅能加速更快而且能耗更低。但這并不是免費的午餐,首先要想把 GPGPU 與 DLA 兩塊算力同時利用起來軟件上就需要比較精巧的異步設計使得 CPU 負載、編解碼模塊、圖像處理模塊、GPGPU 以及 DLA 五者流水化并行處理。然而到了 THOR 這代自動駕駛平臺的產品。DLA 提供的算力甚至直接被砍掉,其中原由目前還不清楚。
但是從NVDIA的官方文檔中我們可以看到,DLA 支持了約15種主要 AI 算子的執行,不支持的算子類型將會回退到GPGPU進行運算。【https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#dla_layers】
值得關注的是 THOR 平臺的 CUDA 引入了 Transformer Engine 用來加速時下大火的基于 attention 機制的 DL 算法,Transformer 正是當下正被熱議的 ChatGPT 的網絡模型的重要組成部分。并且引入了對8-bit floating point (FP8) 精度的支持,這是 INT8(8-bit整形數據類型,用于加速 DNN 推理計算)的替代品能夠在同等的位寬下提供更高的精度。Nvidia 在其 Edge 平臺產品線上開始放棄專有的定制化大算力,逐步的在通用算力的基礎上來增加領域的定制化。這也與其發布會上反復提到的,提高開發效率和加快軟件迭代、算法迭代的目的相吻合。
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 以及后續版本被廣泛的應用于谷歌的搜索排序、語音識別、以圖搜圖、谷歌翻譯等領域。
圖:TPUv1硬件架構圖
在 TPUv1 版本硬件架構圖上,我們可以看到 Matrix Multiply 模塊提供了64K operations 每時鐘的超大算力,緊隨其后的是 Activation(激活)、Normalize/Pool(歸一化/池化)這些非常具現化的運算。而到了 TPUv2,我們可以看到通用的 Vector 單元代替了v1版本中 activation pipe 中的固定功能。
圖:Transforming the TPUv1 datapath into the TPUv2 datapath
來源:【The Design Process for Google’s Training Chips: TPUv2 and TPUv3 】
“我們已經在我們的數據中心內運行 TPU 一年多了,并且發現它們為機器學習提供了一個數量級更好的每瓦優化性能。這大致相當于未來七年左右的快進技術(三代摩爾定律)。谷歌的 CEO 這樣評價了 TPU。”【 Google CEO Sundar Pichai cloudplatform.googleblog.com/2016/05/Google-supercharges-machine-learning-tasks-with-custom-chip.html】
在21年,David Patterson 進行了 TPU 演進十年的總結:Google 的十大經驗教訓 【Ten Lessons From Three Generations Shaped Google’s TPUv4i : Industrial Product】 其中就指出DSA既要專門優化,也要靈活。TPUv2 引入的通用算力給 TPU 提供了更強大的能力,不僅僅局限于 TPUv1的模型推理功能,還能進行模型的訓練,這往往需要更復雜的運算。Google 也是通過 XLA:一個用于 TPU 的高度定制優化的機器學習編譯器,為機器學習(PyTorch、TensorFlow)與數值、科學計算(Jax、Julia、Nx)提供便捷通用的編程使用接口,通過云服務提供給用戶,為尤其此生態下的用戶帶來了良好的用戶體驗。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。