「全棧」開源的VTA會給AI晶元產業帶來什麼?

「全棧」開源的VTA會給AI晶元產業帶來什麼?

來自專欄片上神經網路23 人贊了文章

TVM團隊剛剛公開了開源項目VTA:Versatile Tensor Accelerator[1]。陳天奇博士的知乎文章稱其為「VTA: 開源深度學習晶元棧」[2]。結合TVM,這是一個從軟體到硬體完全開源的項目,是目前看到最完整的開源嘗試。那麼,它會對AI晶元產業產生什麼樣的影響呢?


背景

在AI領域,軟體開源非常普遍。而在去年,Nvidia甚至開源了它在實際產品中使用的硬體加速器NVDLA(從Nvidia開源深度學習加速器說起)。但像VTA項目這樣的軟硬體「全棧」開源的應該還是第一次。從目前公開的內容來說,這次開源準備的也比較充分,代碼,文檔,教程和Blog一應俱全。陳天奇博士還第一時間在知乎上發表了一篇文章,介紹了他們的想法[2]。下圖即為這個「晶元棧」。

應該說,TVM團隊一直在嘗試針對不同硬體架構對DNN進行優化,已經做了很多工作(我之前也簡單討論過,Deep Learning的IR「之爭」)。這次他們終於把「觸角」伸到了硬體層面,似乎也是情理之中。如[2]中所說「首先,VTA是一個完全開源的深度學習加速器。但是VTA不光包含了加速器設計本身,完整的驅動,tvm編譯的整合和直接從tvm前端python編譯部署深度學習模型的完整開源工具鏈。」 這次VTA開源的內容和資料還是挺多的,我簡單過了一下他們的技術文檔[3]。下面先簡單討論一下技術方面的特點。


技術特點

做一個「全棧」方案最重要的目的當然是軟硬體聯合優化。這也是VTA的最大特點。放映到硬體設計上,就是「軟體友好的硬體架構」。

這個硬體架構圖,可以說很好的反映了上述特點。我看到的第一感覺就是,「這怕是軟體工程師畫的吧」。

VTA有兩個層次的指令集,粗粒度的指令(CISC)有4個,LOAD,GEMM,ALU,STORE,分別對應上圖中的4個主要的硬體模塊。其中GEMM實現矩陣乘法,實現CONV;而ALU則主要執行Element-wise ALU, 實現activation,normalization,pooling等操作。GEMM和ALU實現功能是通過細粒度的微代碼(Micro-op)實現。微代碼的控制流比較簡單,不使用條件跳轉之類功能。具體內容大家可以參考[3]。LOAD模塊也支持2D DMA的訪存模式。取指模塊根據CPU的配置從DRAM中讀取指令,簡單解碼後分發到各自的隊列等待執行。在VTA軟硬體設計中最重要的一個點就是「顯式的控制流依賴」。如[2]中提到,「VTA裡面最讓我喜歡的設計是顯式的控制流依賴操作。利用這些控制流依賴我們可以直接在軟體層面實現動態的流水線,達到掩蓋內存開銷的目的。」這一點在硬體和軟體工具的設計中都有體現,就不展開討論了。

目前版的VTA硬體只有FPGA的實現,而且並非是RTL代碼,而是Xilinx的HLS C代碼。HLS C代碼需要使用Xilinx的HLS(高層次綜合)工具轉換為硬體設計。HLS的具體的效果還有待觀察。實例使用的FPGA平台是「a low-power PYNQ board which incorporates an ARM Cortex A9 dual core CPU clocked at 667MHz and an Artix-7 based FPGA fabric」,成本很低。當然,相應的,性能也不高。實例中實現了16x16的MAC,能夠運行在100MHz,峰值的處理能力是51GOPS/s。從下圖的roofline結果來看,C1到C11都是ResNet-18 inference中的卷積層conv2d運算,經過訪存和運算調度的優化後接近roof。考慮到FPGA硬體的限制,這個結果還是不錯的。

VTA對應的軟體工具基於TVM框架。由於之前已經做了很多優化和編譯器相關的工作,這部分性能應該做的不錯。其中一個比較值得關注的是它的JIT runtime功能。目前實例有一個比較完整的部署流程(如下圖)和參考教程,大家可以自己上手試一試。

總得來說,單純看VTA的硬體,目前還是一個比較簡單的設計,只支持Inference,還沒有考慮稀疏性,低精度,數據壓縮,以及對一些其它的硬體設計技巧的支持(從ISCA論文看AI硬體加速的新技巧)。它的最大特點還是在硬體架構設計中更多的考慮了軟體設計,或者說是更多的在軟體視角考慮硬體設計。其基本出發點如[2]中所說,「我相信未來的深度加速器也會往「更加聰明的軟體,更加笨的硬體」,和更多軟硬體協同方向發展。


影響

AI晶元落地的難點更多的在於軟體,這是大家的共識。Nvidia和Google的領先,也應該歸功於其軟體上的實力。目前的AI晶元Startup中,已經有了第一代晶元的公司都在極大力度的擴充軟體團隊,也從側面說明了軟體的重要性。

如前面所分析,VTA的開源只是個起點,其硬體設計被看成一個「模板」(「VTA can serve as a template deep learning accelerator design」)更為恰當[1]。當然,從目前的完成度(代碼,文檔,Tutorials)來說,這個起點也並不低。更重要的是,TVM/VTA構成了一個完整的軟硬體部署的實例(稍有遺憾的是硬體沒有RTL代碼)。

目前說TVM/VTA能夠對於AI晶元產業帶來多大影響還為時尚早。不過我認為,他們提出的以下兩個目標應該是可以達成的。

  • Provide an open deep learning system stack for hardware, compilers, and systemsresearchers alike to incorporate optimizations and co-design techniques.
  • Lower the barrier of entry for machine learning practitioners to experiment with novel network architectures, operators and data representations that require specialized hardware support.

NVDLA推出的時候所提目標是降低inference實現的門檻。但NVDLA的軟體工具並未開源,項目更新頻率和社區的活躍度不高,都讓這個目標打了折扣。而相比之下,雖然VTA的硬體和NVDLA(和其它商用加速器)相比還不成熟,但我們有理由期待它的發展更能充分發揮開源項目的優勢。在Framework生態中,TVM的特色是結合底層硬體的優化。增加一個硬體加速器對於它肯定是有巨大幫助的。下一步就看能不能把社區搞好,讓更多的人參與到軟硬體優化過程當中了。

接下來的問題是,如果TVM/VTA能夠健康快速的成長,或者出現更多的「全棧開源」,會帶來什麼連鎖反應呢

第一,現在開源已經成了競爭手段。對於Nvidia,Google來說,雖然目前分別佔據硬體和軟體的絕對領導地位,但潛在的威脅不少,而他們兩者之間的碰撞也可能越來越明顯(最近MLPerf一些話題的爭論也可以看出來)。為了鞏固在產業鏈的地位,它們會不會也做更多的開源呢?比如,Nvidia更「完整」的開源NVDLA,而Google開源「老版本」的TPU硬體?其它巨頭是否會加入硬體開源呢?

第二,對於目前正在做AI晶元又急需軟體能力的初創公司來說,TVM/VTA的可以作為軟體開發的一個參考。這就有可能出現後來者和領先公司拉近差距的情況,導致更複雜的競爭態勢。而如果有更多的開源硬體項目出現,AI晶元設計的門檻會進一步降低,將意味著商業晶元的競爭會更加激烈。大家必須拿出真正差異化的東西才可能生存。

第三,對於學術界來說,VTA提供了一個可以同時玩兒軟體和硬體的平台,有可能促進更多創新的出現。由於AI領域是學術界和產業界結合最緊密的地方,這個方向的影響也不能小覷。

當然,上述討論只是些假想。畢竟產業還在發展初期,機會很多,變數也很多。

參考:

1.Thierry Moreau(VTA architect), Tianqi Chen(TVM stack), Ziheng Jiang?(graph compilation), Luis Vega(cloud deployment)「VTA: An Open, Customizable Deep Learning Acceleration Stack」,tvm.ai/2018/07/12/vta-r.

2. 陳天奇,「VTA: 開源深度學習晶元棧」,zhuanlan.zhihu.com/p/39

3. Thierry Moreau, Tianqi Chen, Ziheng Jiang, Luis Ceze, Carlos Guestrin, Arvind Krishnamurthy, 「VTA: An Open Hardware-Software Stack for Deep Learning」, arxiv.org/abs/1807.0418

- END-

歡迎關注我的微信公眾號:StarryHeavensAbove

題圖來自網路,版權歸原作者所有

本文為個人興趣之作,僅代表本人觀點,與就職單位無關


推薦閱讀:

阿里達摩院自主研發AI晶元 布局「中國芯」
美國下注15億美元重點搞晶元,電子復興計劃首批入圍項目曝光
全球AI晶元哪家強?馬雲跨界迎戰,這家中國小公司居然擠進去了!
國內AI晶元的先行者,寒武紀科技一直兢兢業業!
深度起底蘋果AI晶元A11:九年潛伏布局 狂買數十家公司

TAG:AI晶元 | 開源硬體 | TVM |