雖然目前有各種測試方式來比較不同架構的性能落差,但追根究底,不同架構原本的設計目的就有不同,有的必須要兼顧通用計算,因此在芯片布局中必須塞入更多邏輯管理單元,有的專注于純粹的計算能量,完全不考慮其他工作,因此可能在芯片幾乎大部分都塞乘加法器(MAC)之類的計算單元,也有的計算架構考慮的是各種情境下的通用計算需求,這些不同的考慮就產生的不同的效能/能效結果。
而近來欲在人工智能領域挑戰 GPU 架構的各類計算新秀,都不約而同的號稱可提供相較于 GPU 計算倍數以上的算力輸出。GPU 性能變成這些新架構最直觀的比較基準。
比如說包含寒武紀、華為的達芬奇架構,甚至是美國的 Habana 公司,都在產品發布時號稱可在同樣的規模設定下達到最高 1~3 倍于 NVIDIA 方案的性能輸出。
后起之秀超越 GPU 的算力已經變成常識,且其宣稱的性能優勢也越來越大,所以 GPU 這種傳統 AI 計算架構注定已經是末路黃花?其實這也還言之過早。當然,以行銷而言,直接點出自己產品和競品之間的技術落差是最直接有效的方法,但廠商往往只會指出對自己有利的部分,而對那些較不利的部分略之不談,因此討論這些新架構時,還是得從其設計目的、具體架構的真實際算效率來觀察,才不會被廠商宣稱的數字所蒙蔽。
最后,若這新架構在計算能量方面遠優于舊架構,為何市場不選擇這些理論上效率更高的計算架構?反而偏好既有的、沒那么有效率的架構?
寒武紀與 TPU 淵源深,達芬奇、Habana 則都借鑒 GPU,精簡以求效率為共通點
其實近幾年崛起的多數 AI 計算架構都可以說是脫胎自 GPU 計算架構,由于 GPU 必須肩負龐大的通用計算工作,所以計算單元內包含了更復雜的邏輯、分支預測、緩存、繪圖管線、暫存設計,而新近的 AI 計算架構通常把 GPU 復雜的 ALU(算法邏輯計算單元) 中他們認為多馀的部分去除,只留下純粹的乘加法器,并根據需要添加自己的算法框架支持,或者是為了泛用而增加的可編程邏輯處理能力,再通過 SDK 包裝之后就變成 AI 方案。
DT 君就以近來幾個比較熱門的 AI 計算架構來觀察,可以發覺其實寒武紀與 Google TPU 的淵源較深,而華為的達芬奇與美國 Habana 則可以說有異曲同工之妙。
寒武紀和 TPU 都是基于龐大乘加法器建構而成的類神經元計算架構。從生物觀點來看,神經元中有許多突觸,負責為別的神經元傳遞信息。同樣,個別神經元也會接收來自許多其他神經元的信息。
以寒武紀 DianNao 相關論文中所揭露的內部結構來觀察,可以發現其計算體系分為三層,分別是 NFU-1 部分的乘法單元。總共有 16X16=256 個乘法器。這些乘法器同時計算,也就是說,一個周期可以執行 256 個乘法。
NFU-2 則是是加法樹。總共有 16 個。每個加法樹是按照 8-4-2-1 這樣組成的結構,每個加法數有 15 個加法器。NFU-3 是激活單元,共 16 個,主要工作是根據前面兩個單元計算得到的刺激量,從而判斷是否需要激活操作。
除了這三個 NFU 階段的計算邏輯部分,還有三個 Buffer 分別負責存儲輸入數據、存儲權值(filter 值),以及存儲計算結果。從整體架構來看,其實非常單純,也不需要進行任何邏輯判斷,所以效能/能效可以達到非常高的程度。
而最新的 Cambricon-X 架構其實就是在 DianNao 的基礎之下針對近來流行的稀疏系數矩陣計算架構,稀疏計算可以牽涉到前段時間火了一陣子,號稱中國 NVIDIA,但后來賣給 Xilinx 的深鑒科技,其聯合創始人韓松經過研究發現,傳統的深度學習網絡模型的許多權重系數是可以去除的,甚至能去掉 90% 以上還不會不影響模型的計算精度。
傳統作法中,要刪除權值系數必須花費很長的時間去分析模型,這也是之前深鑒方案之所以曾提到壓縮神經網絡模型與建立模型所需的時間相仿甚至還要更長的主要原因。
雖然刪減了大量權值系數后,模型網絡所需要的乘法計算次數可大幅減少,但因為系數的稀疏具有不可控的隨機性,不同 filter 的有效權重可能是不同位置的,所以,這就造成了大量權重并行計算時,無法做到同步,導致目前現有的處理器設計都并不能充分利用系數稀疏帶來的加速效果。
寒武紀的 Cambricon-X 就是在 DianNao 的基礎之下,追求對稀疏系數優化的架構。而 Google 的 TPU 架構發展也邀請了曾經參與寒武紀核心技術研發的核心人物 Olivier Temam,甚至 Google 在 TPU 的論文也引用了寒武紀團隊成員前期發表的 6 篇論文,因此寒武紀與 Google 的 TPU 在設計上有相當深的淵源。
二者較大的差異主要是在稀疏權值處理方面:TPU 屬于二維的脈動陣列,輸入數據的復用效率明顯較低。而寒武紀的 Cambricon-X 在矩陣越稀疏的情況下效率越高,但反之,效率就可能會明顯降低。
而華為的達芬奇架構主要也是眾多乘加法器構成的架構,華為將這個乘加法器叢集稱為 Cube,不過與其他類神經網絡芯片不同的是,華為在數據流調度方面用了特殊的手法,讓數據流量可以最大化,從而創造更高的能效表現。
而華為在達芬奇架構所強調的 3D Cube 計算架構,其實與 NVIDIA 的 CUDA 和 TensorCore 有著異曲同工之妙,同樣都是以矩陣處理陣列的立體形式來處理 MAC 中的乘加計算,而華為正也因此將之稱為 3D Cube。
但達芬奇架構有個更特殊的作法是,其在達芬奇核心中整合了標量,矢量,張量等各種指令集,可以配合其軟件堆棧定制、優化數據打包和處理流程,是可自定義的 SIMD(單一指令多重數據流) 架構。依其號稱的效能推論,應該是從個別應用情境進行針對性的深度優化才有辦法達成,因此可能會非常倚賴編譯器。
而另一個最近才冒出頭的 AI 加速架構 Habana,根據該公司的自述資料,其創立于 2016 年,通過為處理性能、成本和功能帶來數量級改進解鎖人工智能的真正潛力。該公司著手從頭開發人工智能處理器,為深度訓練神經網絡的特定需求以及生產環境中的推理部署進行優化。
乍看之下和中國此起彼落的 AI 芯片架構訴求相當一致,甚至在效能訴求上,也和寒武紀、達芬奇架構一樣,都號稱是以倍數的優勢超越 GPU,不過 Habana 相較其他計算架構,其實更類似 GPU。
Habana 的 Goya HL-1000 推理芯片的核心是配備可編程能力自有指令集的 8 個 VLIW(超長指令集)TPC 內核,該公司聲稱,該架構具備了在所有的神經網絡推理任務創建的 400 個內核庫類型,也支持 8 至 32 位浮點和整數格式計算工作。
其 VLIW 架構是比較特殊的設計,過去 VLIW 通常只會在高端專業計算架構才會出現,比如說英特爾的 IA64,這種技術是基于一種非常長的指令組合,它把許多條指令進行打包連接并批次處理,從而增加計算的速度。VLIW(超長指令字)體系結構是美國 Multiflow 和 Cydrome 公司于 20 世紀 80 年代設計的體系結構。
乍看之下,若以目前 NVIDIA 的技術來比較,其 GPU 架構屬于 SIMD 技術,但 Goya 架構卻是基于 VLIW,似乎距離有點遙遠?
不過 TPC 的計算單元包裹方式其實和 GPU 基于 ALU 叢集的 SM 塊也是類似的概念,而另外一個 GPU 主流體系,也就是 AMD 的 GPU,也曾經采用過 VLIW 的設計方式,過去 GPU 使用 VLIW 有其理論性能上的優勢,尤其非常適合進行大量的規則化數據的處理,但驅動非常難以設計優化,尤其娛樂 GPU 要面對復雜的游戲引擎和圖形計算環境,更讓 AMD 過去的架構很難在一開始與 NVIDIA 直接粗暴的計算方式在性能上相提并論,但 AMD 的 VLIW 架構往往在經過長時間的驅動更新之后能有著明顯贏過同世代對手 GPU 的實力,也因此 AMD 的GPU產品也常常被戲稱為戰未來架構。
不過因為優化的難度高,后來 AMD 放棄 VLIW 轉而走 RISC 架構。所以要說 Goya 比較像早期的 AMD GPU,而達芬奇架構則類似于后期 AMD GPU 的概念,其實也說得通。
Goya 采用了 VLIW 方式,目的應該與華為的達芬奇的作法類似,就是作為管理數據流與指令打包方式的優化作法,目的都是為了要在個別應用情境下有更高的性能表現,而因為 AI 計算環境遠比游戲應用單純,因此優化難度明顯較低。
而根據 Habana 公司提供的測試數據,基于其 Goya HL-1000 處理器的 PCIe 計算 卡可在 ResNet-50 推理基準實現每秒 15000 張圖片的吞吐量,延遲時間為 1.3 毫秒,功耗僅為 100 瓦,我們以熟悉的麒麟 980 芯片的同樣測試項目來比較,該架構的性能是每分鐘 4500 張,約為每秒 75 張,而麒麟 980 內建 NPU 的峰值功耗推估約在 2W 左右,換算之下,Goya 計算卡的每瓦性能是 150 張,而麒麟 980 的 NPU 每瓦計算性能約 37.5 張,可見其架構效率的優勢。
當然,由于架構針對的應用情境和內建緩存、總線的規模都不同,這樣的比較并不精確,但稍微可看出 Goya 架構的效率表現達到什么程度。對了,麒麟 980 是 7nm,而 Goya 計算卡則是 16nm。
根據官方表示,與如今數據中心部署的一般解決方案相比,Habana Labs 人工智能處理器的性能要高出一到三個數量級,若以 GPU 計算卡為比較基準,則可達到 3 倍的能效輸出。相當令人熟悉的說法,是吧?
后起之秀強壓老架構?
不要忘了,即便是 NVIDIA 最新的 Volta 和圖靈架構中的 CUDA 核心,也就是 GPU 的基礎計算單元,雖然架構效率有隨著時間進行修改、提升,但多數集中在內存子系統的強化,整體架構和老舊的 Pascal 并沒有太大的不同,其在專業計算中所呈現出來的訓練性能表現增長主要還是因為工藝的改進,使得 CUDA 數量和時鐘速度增長所帶來的結果。換言之,這些在 AI 計算的后起之秀用以作為比較基準的,是個已經有兩三年歷史的老架構。
若理論效率能夠很好的轉換為實際表現,那么現有的 AI 計算架構應該早就很快的被這些新的給取代,但實際上,NVIDIA 仍然在市場上擁有接近獨占的地位,即便其計算效率并不是最高。
另外,以架構純粹的純人工智能加速計算架構和 GPU 相提并論是否適當,其實也是值得探討的問題。
肩負多重任務,GPU不只是GPU
前面也提到,GPU 過去依靠其龐大的計算單元能夠很好的處理機器學習工作,但因為 GPU 的主要功能還是繪圖計算,有相當大比重的晶體管并非使用在計算工作上,為彌補整體計算架構的效率,NVIDIA 也為其增加了 TensorCore 核心,彌補原本純粹 GPGPU 架構針對推理工作的短板,該核心也能同時進行訓練加速工作。
以同樣晶體管規模的純粹訓練或推理性能而言,TensorCore 遠超過標準 CUDA 單元,比如說 FP16 深度學習的性能,使用 TensorCore 的性能表現在理想情境下可達純粹 CUDA 的 3 倍以上。
那大家可能會好奇,為何 NVIDIA 不推出純粹使用 TensorCore 的芯片,以該架構全面取代效率較低的 CUDA 單元?那要在同樣的芯片規模下取得和寒武紀等后起之秀類似或更好的性能其實不是難事。
但重點是有沒有意義。若不久之后系統對于純粹 AI 性能的要求更高了,而半導體設計和制造技術又遭遇瓶頸,或許 NVIDIA 可能會這么做,以純粹的 TensorCore 芯片來對抗競爭對手。但就目前而言,維持 GPU 架構的延續對 NVIDIA 有更重要的戰略意義,畢竟專業計算雖然利潤高,但市場規模小,而娛樂繪圖市場規模大,且可應用的空間廣,只要是包含視覺處理的工作,基本上都和 GPU 脫不了關系,對 NVIDIA 而言,是極為重要的現金來源。
另外,以單一架構進行量產,可在芯片制造上取得較好的經濟規模,對利潤率的提升有更好的幫助,而 NVIDIA 近年來的財務數字表現也證明了這個觀點。
而根據 NVIDIA 方面的論點,TensorCore 不只能在 AI 計算環境中發揮作用,未來也將肩負著游戲或虛擬環境中的 AI、物理模擬工作,對 NVIDIA 而言,任何硬件功能區塊的加入都不會是只有針對單一工作,而是要針對更廣,且適合未來應用發展的的計算考慮。
當然,FPGA 和 DSP 等不同類型的計算架構也和 GPU 有類似的狀況,不過這二者不在本文的討論范圍中。
也因此,如果要把只能用于單一用途的架構拿來和多功能的架構相比,就好比拿同樣 1000cc 汽缸的摩托車和汽車比較,摩托車肯定在加速方面可以有很亮眼的表現,可能更快到達目的地。但是汽車能用來承載更多乘客,也能載更多貨物,孰優孰劣,端看應用目的,其實沒有辦法很直觀的進行比較。
而目前 GPU 在特定效能數字上的弱勢也不是沒有辦法解決,如果未來 NVIDIA 把針對不同應用的 GPU 進行更徹底的特化,比如說給專業計算的就配備更大的 TensorCore,給娛樂繪圖的就更大的 GPU 區塊,GPU 仍是共通的邏輯處理核心,但依照應用而給予的晶體管分配比重各有不同,那么現在動輒號稱能效數倍于 GPU 的后起 AI 計算架構能否維持優勢就很難說了。
重點在于生態的養成
生態這兩個字已經是老生常談,所有的新架構在推出時都往往會在其行銷材料上掛上這兩個字,但實際上能做到的卻少之又少。
舉例來說,NVIDIA 當初之所以能夠成功,主要還是在開發環境與教育訓練的完備,當初為了推動 CUDA 開發環境,NVIDIA 與許多行業、學校合作,并且把相關的開發環境和學校課程進行結合,且同步舉辦多種競賽活動,不僅是炒作市場氣氛,也同時是在檢視其教育手段的成效如何。
但反觀目前國內外的新創 AI 架構推動者,多半都是針對特定的應用著眼,而非真正創造泛用架構,對于創造生態并沒有太多興趣,而有意愿打進教育體系的更是少之又少,畢竟對這些架構開發者而言,能顧好自己的目標市場就好,要顧及更大的領域,其實力有未逮。
但如果是擁有龐大資本的 AI 方案公司,卻不進行這些長遠計劃,只求以性能表現來“彎道超車”,這樣的生態或許能拿到少數合作伙伴的支持,但能在市場上維持多久,其實也是令人存疑。
在這種產業背景下,華為所推動的“AI 開發者啟動計劃”在中國 AI 計算市場就顯得相當特立獨行,該公司承諾將會投資 1.4 億美元來教育培訓 AI 人才,其實算是有意要仿效 NVIDIA 之前經營生態的作法。該計劃將幫助華為與開發者、合作伙伴、大學和研究機構合作打造更好的開發生態系統,從而支援 AI 資源、平臺、課程和聯合解決方案。其次,華為也會提供資金和技術支持,提供測試平臺給開發者、合作伙伴。
金額雖然并不算特別大,且起步也有點晚,但其在建立生態上定下了相當遠大的目標:利用 3 年時間,發展 100 萬 AI 開發者及伙伴。
由華為正在推動的計劃可看出,在公布達芬奇架構以及基于該架構發展出來的昇騰方案后,打的就是長遠的生態戰爭。
建立生態依靠的是長期的經營與資源的投入,期間可能付出多回收少,但要是成功以技術和商業模式優勢說服開發者以及相關供應渠道,往后對相關市場經營的黏著性將有立竿見影的效果。雖然現在要判斷達芬奇架構以及昇騰方案的前景如何仍為時尚早,但其市場策略基本上已經走到正確的道路上了。