即使在移動AI時代,軟體仍將主導業界

機器之心發表於2020-05-13
人們已經達成了某種共識:那些在邊緣裝置(edge device)與物聯網裝置(IoT device)上實現了真正的智慧的公司將定義計算的未來。為了實現這一目標,無論是谷歌,微軟,亞馬遜,蘋果和 Facebook 等大型技術公司,還是初創公司,每年在研發上的投入都高達數百億美元。工業界主要致力於開發用於機器學習和推理的專用硬體加速器,這麼做的原因是他們認為硬體因素是實現真正的移動智慧的主要限制因素。為此,工業界已經花費了數十億美元來推動這種智慧硬體競賽。

我們對這種做法有所疑問,並堅信即使在移動 AI 時代,軟體仍將主導業界。我們的中心論點是,深度學習應用程式的軟體最佳化潛力仍未得到充分開發。一旦完成了正確的軟體最佳化,我們就可以立即在數十億個現有移動裝置上啟用實時深度學習,從而釋放一個萬億美元的市場。

在本文的其餘部分,我們回顧了 AI 硬體的概況,不同的軟體最佳化方法,並深入研究了我們認為最有希望的方法,即“壓縮 - 編譯”(compression-compilation)聯合設計方法。我們得出的結論是,即使在移動 AI 時代,軟體仍在佔有並將持續佔有整個業界,並且透過純軟體壓縮編譯協同設計在數十億個現有移動裝置和數萬億個新興的物聯網裝置上啟用實時 AI 應用程式是最切實可行的方法。

AI 硬體的格局

工業界主要致力於開發用於機器學習和推理的專用硬體加速器,這麼做的原因是他們認為硬體因素是實現真正的移動智慧的主要限制因素。

晶片製造商英特爾與包括 NVIDIA,AMD 在內的競爭對手以及一些採用 ARM 技術的競爭對手之間的激烈競爭已經使晶片進入 AI 計算市場。如今,在美國,歐洲和亞洲,有 100 多家 AI 晶片初創公司,從重塑可程式設計邏輯和多核設計(programmable logic and multi-core designs)的公司,到開發自己的全新架構的公司,再到使用神經形態架構(neuromorphic architectures)等未來技術的公司。數百億美元的風險資金已經投入到這個市場中,以支援這些創業公司,同時也加劇了主要晶片製造商之間的競爭,我們看到英特爾以極高昂的價格收購了 MobilEye,Movidius 和 Altera,Xilinx 收購了 DeePhi,谷歌開發了 TPU,以及 NVIDIA 在自動駕駛處理器方面的大量投資。儘管有大量投入,但到目前為止,輸出還是令人失望的,因為我們尚未看到邊緣 AI 加速器的任何大規模部署。這不禁使我們思考,專用硬體加速是正確的道路,還是軟體仍然主導移動 AI 時代?

經過仔細研究,我們主張透過有效的壓縮 - 編譯(compression-compilation)協同設計,在不使用特殊硬體加速器的情況下,在現有邊緣裝置上實現實時人工智慧(AI)是可行的。壓縮編譯協同設計的原理是以手拉手的方式對深度學習模型進行壓縮及對壓縮後的模型可執行檔案的編譯。這種協同方法可以有效地最佳化深度學習模型的大小和速度,還可以大大縮短壓縮過程的調整時間,從而極大地縮短了 AI 產品上市的時間。
當我們將深度學習模型部署在主流邊緣裝置上執行時,我們的設計能在大多數 AI 應用上實現實時性,而這些 AI 應用原本被廣泛的認為只有使用特殊的 AI 加速器才能到達實時執行的效果。得益於主流處理器相對於特殊硬體的多重優勢,對於實時 AI 的特殊硬體需求可能將會逐漸降低:
  • 上市時間:特殊硬體通常需要數年才能上市。為新開發的硬體加速器建立關聯的編譯器和系統軟體會進一步延長該過程。使用此類硬體的應用程式經常需要使用特殊的 API 並滿足許多特殊的約束(例如,將計算限制到特定大小),這會延長 AI 產品的上市時間。

  • 成本:開發專用的 ASIC 處理器非常昂貴,將它們新增到現有系統中會產生額外的費用。

  • 技術成熟度:與通用處理器不同,專用硬體的生產量要小得多;因此,其生產可用的技術通常比通用處理器落後幾代。例如,大多數 AI 加速器都基於 28 至 65nm CMOS 技術,其電晶體密度比最新的移動 CPU 或 GPU 低 10 倍以上。

  • 速度:由於採用了舊技術,專用處理器的執行速度比通用處理器要慢得多。

  • 生態系統:通用處理器具有完善的生態系統(除錯工具,最佳化工具,安全措施),這使得高質量應用程式的開發比使用特殊處理器要容易得多。

  • 使用:由於上述所有原因,使用特殊處理器通常僅限於建立該處理器的公司及其很少的密切客戶。結果,為特殊處理器開發的 AI 應用程式僅可以被有限數量的裝置所採用。


壓縮編譯協同設計軟體演算法方案

在本節中,我們介紹了壓縮編譯協同設計軟體演算法方案的細節,我們相信這將完全改變 AI 邊緣計算的格局。壓縮和編譯是在硬體上擬合深度學習模型以實現有效執行的兩個關鍵步驟。模型壓縮是減少深度學習模型的大小並提高其速度的常用技術。壓縮技術分為兩類,剪枝(pruning)和量化(quantization)。剪枝會刪除層或層中的輸出(filter)或輸入(channel)通道,而量化會降低引數的精度(例如,浮點數到短整數)。編譯是指從給定的深度學習模型生成可執行程式碼的過程。本質上,編譯是將深度學習中的高階操作對映到基礎硬體支援的低階指令的過程。編譯過程在最佳化程式碼以有效執行中起著關鍵作用。

壓縮編譯協同設計的原理是同時完成壓縮與編譯兩個元件的設計,並且此協同作用體現在三個層次上。

  • 需求 / 偏好級別:在此級別上,協同作用是在設計另一個元件時考慮一個元件的偏好或需求。一個例子是,主流處理器通常更喜歡具有某些計算模式(pattern)的程式碼。如果模型壓縮步驟可以考慮該首選項,則可以建立一個更可修改的方案,以使得編譯步驟有效地工作。

  • 視角 / 內涵級別:在此級別上,協同作用是在處理其中一個元件的問題時採取另一個元件對該問題的視角或內涵。一個例子就是可組合性或模組化原則,這個原則在保持程式設計系統和編譯高效且可擴充套件方面一直髮揮著至關重要的作用。

  • 方法論級別:在此級別上,協同作用是將兩個元件的方法論緊密整合在一起。例如,透過自動生成程式碼以啟用新的深度學習剪枝方案的編譯器框架,我們可以產生高達 180 倍的加速。

具體來說,我們在上圖中提供了壓縮編譯協同設計架構,該架構包含以下元件:

即使在移動AI時代,軟體仍將主導業界


模式化(pattern)的訓練階段可以執行有效的卷積核模式剪枝(kernel pattern pruning)和連通性剪枝(connectivity pruning),以便在不損失準確性的情況下實現最高的剪枝(加速)倍率。首先,我們設計了一套卷積核模式(kernel pattern)來為每個核心選擇。然後,我們使用擴充套件的基於 ADMM(交替方向乘子演算法)的演算法,根據設計的卷積核模式集和連通性剪枝方案執行模式化剪枝

細粒度的 DNN 分層表示(LR)提供了高階別的表示方法,使我們能夠從各種資源對 DNN 模型進行常規最佳化。特別地,LR 包括模式(pattern)和調諧(tuning)相關資訊。編譯器的最佳化依賴於 LR 的一系列改進,以生成緊湊模型和最佳化過的執行程式碼。

卷積核與輸出通道重排(filter kernel reorder)透過將具有相同長度和模式的卷積核組合在一起,解決了模式化剪枝帶來的兩個挑戰,即密集的控制流指令以及執行緒分散(thread divergence)和負載不均衡(load imbalance)。由於卷積核模式數量相對有限,可以透過適當的卷積核核心重新排序將具有相似模式的核心進行編組,從而顯著減少控制流指令並提高指令級並行度。此外,如果不同的執行緒處理不同的輸出通道,則由於每個輸出通道中的核心具有相似的計算工作量,因此可以正確解決執行緒分散和負載不均衡的問題,從而增強了執行緒級並行度。

壓縮權重儲存(compressed weight storage)格式是專門為我們的卷積核模式和連通性剪枝設計的。與卷積核與輸出通道重排結合後,這種緊湊的資料結構比傳統的 CSR(壓縮稀疏行)格式能夠產生更好的壓縮率。

消除負載冗餘(load redundancy elimination)透過在核心執行程式碼生成過程中透過分析處理兩個暫存器級負載冗餘問題,解決了基於卷積核模式化剪枝對記憶體效能的挑戰。在記憶體和快取之間的資料移動已透過高階資料平鋪技術進行了最佳化的前提下,我們的負載冗餘消除有著更加重要的意義。

引數自動調整(parameter auto-tuning)專門測試關鍵效能引數的不同配置,包括將資料放置在各種 GPU/CPU 儲存器上,不同的資料平鋪大小以及每個處理單元上每個 DNN 層的迴圈置換的策略。

總而言之,壓縮編譯協同設計方法允許編譯器將剪枝後的核心視為特殊模式,不僅可以實現模型的高精度與高壓縮率,還可以有效地將卷積核模式轉換為硬體上的效能提升。

效能對比:軟體與硬體

為了驗證我們的中心論點,即軟體仍然主導 AI 時代,我們需要回答的關鍵問題是,在現有的裝置上,“壓縮 - 編譯”聯合設計方法是否優於專用的硬體加速器。我們在三星 Galaxy S10 智慧手機上部署了 “壓縮 - 編譯” 聯合設計的框架,並將其效能與在 ASIC 和 FPGA 上實現的硬體加速器進行了比較。

即使在移動AI時代,軟體仍將主導業界

結果總結在上圖中:首先,使用專用 ASIC 硬體(包括 Google 的雲 TPU-V2 和 Edge TPU,NVIDIA Jetson AGX Xavier,Cambricon MLU-100,Eyeriss 等)上對效能和能效進行比較的結果。與 DeePhi 的 FPGA 解決方案 ESE 在準確性和能效上的比較結果。這是對相同網路模型的公平比較,並且我們的解決方案未採用權重量化(quantization)。

我們可以清楚地看到,我們在現有的移動裝置上的解決方案在能效方面始終優於代表性的 ASIC / FPGA 解決方案。這種獨特的現象歸因於三個原因:
  1. 智慧手機本身具有超高的能量效率。智慧手機計算晶片是使用最先進的技術(例如 7nm,11nm 技術)構建的,並且是技術進步的關鍵驅動力,而 FPGA / ASIC 解決方案則基於 28nm 或 40nm 技術,而這些技術本身就不那麼節能。同樣,ARM(用於移動 CPU)和高通(Qualcomm)(用於移動 GPU)尤其擅長高效電路 / 系統設計。

  2. 雖然現有的移動編譯器框架對不同神經網路的支援有限(例如,不支援 RNN 或大規模 DNN),但我們的編譯器可以支援所有主要型別的神經網路,從而釋放了移動裝置的全部潛力。

  3. 由於基於軟體的解決方案具有高度的靈活性,因此我們的方法在不同的 DNN 基準上始終保持高效能。相反,可以清楚地看到,當前的 ASIC / FPGA 解決方案針對特定的 DNN 型別 / 大小進行了最佳化,因此缺乏通用性。具體而言,邊緣 TPU 針對小型 DNN 最佳化,而 Cambricon MLU-100 針對大型 DNN 最佳化。


壓縮編譯協同設計與其它軟體演算法的效能對比

下一個問題就是在相同的硬體條件下,我們的方法能否超出現有的其它軟體最佳化演算法,也即壓縮編譯協同設計方法是否具有顯著的優越性。

我們在三星 Galaxy S10 智慧手機上測試評估我們的演算法效能。S10 擁有最新的高通驍龍(Qualcomm Snapdragon)855 移動平臺,包含了高通 Kryo 485 8 核 CPU 和高通 Adreno 640 移動 GPU。

下圖顯示了在 CPU 和 GPU 上,我們的演算法與 TFLite,TVM 以及 MNN 加速框架的效能對比。我們採用了 6 種代表性的 DNN 模型結構,包括 VGG-16 (VGG), ResNet-50 (RNT), and MobileNet-V2 (MBNT) ,在 CIFAR-10 和 ImageNet 這兩個資料集上做訓練。結果顯示在所有的測試環境配置下,我們的壓縮編譯協同設計演算法都超越了其它的加速框架。

在移動 CPU 上,我們的演算法相較於 TFLite,實現了 12 倍到 44.5 倍的加速效果,相較於 TVM,實現了 2.3 倍至 8.1 倍的加速效果,相較於 MNN,實現了 1.9 倍至 15.5 倍的加速效果。在 GPU 上,相較於 TFLite,TVM 以及 MNN,分別實現了 2.5 倍至 20 倍,4.1 倍至 11.4 倍,以及 2.5 倍至 6.2 倍的加速效果。對於最大的 DNN 模型 VGG 以及最複雜的 ImageNet 資料集,我們的演算法在移動 GPU 上只需要用 18.9 毫秒就能完成單一輸入圖片的所有卷積層的計算操作,滿足了實時性的要求(實時性通常要求實現每秒 30 幀,即每幀 33 毫秒)。

即使在移動AI時代,軟體仍將主導業界

潛在應用

最後但也是最重要的一個問題就是在現有的移動環境和裝置下,我們的演算法可以實現哪些應用?這個問題直接關聯到壓縮編譯協同設計方法的潛在的商業價值

為了說明這個問題,我們研究了三種可能的 DNN 應用,包括風格遷移(style transfer),DNN 上色(coloring),以及超解析度(提高解析度,super resolution)。風格遷移的模型是基於在微軟 COCO 資料集上訓練的生成型網路,可以實現影片流的實時風格遷移效果。DNN 上色用 Places scene 資料集去訓練一個可以同時抽取與融合全域性和區域性特徵的模型,來實現將一個黑白影片流實時地轉化為彩色影片流的功能。超解析度模型主要利用在 DIV2K 資料集上訓練的具有更寬啟用層與線性低秩卷積的差分模組,實現將低解析度的影片流實時轉化為高解析度的影片流的效果。

即使在移動AI時代,軟體仍將主導業界

正如圖中所演示的,利用結構化剪枝以及編譯最佳化,我們在三星 Galaxy S10 智慧手機上實現了這些應用。對於風格遷移,DNN 上色以及超解析度,我們的演算法可以分別獲得 4.2 倍,3.6 倍,以及 3.7 倍的推理加速。結果顯示,我們團隊提出的壓縮編譯協同設計軟體演算法方案可以在移動平臺上實現令人滿意的高速實時效果。具體來說,所有的前向推理可以在 75 毫秒內完成,使得在現有的沒有特殊硬體結構的移動裝置上實時地執行復雜的 DNN 應用成為了可能。更多的演示影片請參考下面的網址。


即使在移動 AI 時代,軟體仍然佔據主宰地位

我們這篇文章的核心觀點是即使在 AI 時代,軟體仍將主導業界。我們希望透過這篇文章能夠向讀者表明,我們還是可以在現有的商業計算裝置上實現 AI,並且提供甚至比專業的 AI 硬體加速器更高的加速效果以及能量效率。這能夠擴充套件 AI 在邊緣計算裝置上的能力,並且改變人們對終端裝置上實現實時 AI 就必須採用專業的特殊 AI 硬體的認知。

我們相信這些結果會促使工業界重新審視現有的移動 AI 的發展方向和策略。這些令人振奮的進展顯示了很多潛在的未來發展方向,我們這裡列舉兩個。

第一個方向是擴充套件基於協同設計最佳化的領域。目前為止,壓縮編譯協同設計的原理主要聚焦於 DNN 模型。除了 DNN,現實世界的 AI 應用通常包括很多其它的內容,比如資料收集,資料預處理,以及用 DNN 預測之後的操作等等。DNN 在整個應用中扮演著一個很重要的角色,導致我們主要聚焦於 DNN 的最佳化,而缺乏對整個應用的最佳化,以至於難以滿足使用者的實際需求。所以一個很重要的方向就是如何將壓縮編譯協同設計的原理擴充到對整個 AI 應用的全面最佳化過程中。

第二個方向是擴充套件基於協同設計的最佳化的適用性。這一方向關聯到隱私性與安全性,這是在很多 AI 模型構建和部署中很重要的兩個因素。如何將它們有機地與壓縮編譯協同設計過程相結合,這是一個值得研究的問題。通常來說,模型剪枝需要訪問模型和整個訓練資料集。但是在某些場景下,由於隱私政策或者公司之間的人造邊界,模型的最佳化者可能並不能夠訪問資料集。有效規避這些攔路石可以擴充套件協同最佳化方案的適用性。

壓縮編譯協同設計軟體演算法方案可以在數十億的現有的移動裝置以及數萬億的大有可為的物聯網裝置上,立即實現實時的深度學習應用,產生巨大的商業價值。比如說,這種方法可以極大地提升影片流應用(如 Netflix,YouTube,抖音,或者 Snap)的使用者在低寬頻場景下的使用者體驗。這些應用可以推送低解析度的影片到使用者的裝置,然後我們可以實時地將之轉化為高解析度的影片。類似的,影片通訊類應用,如 Zoom,Skype,和 WebEx,可以利用壓縮編譯協同設計方法,達到最好的服務質量。此外,這種方法還能夠解鎖很多之前不可能的實時深度學習應用,例如用一個移動手機攝像頭來獲得實時的帶有藝術風格的影片流。

請聯絡 info@cocopie.ai 以獲得更多的資訊。

更多的論據

本章為有興趣的讀者提供更多的細節,以理解壓縮編譯協同設計是如何運作的。利用壓縮編譯協同設計方案,我們可以方便的支援所有種類的 DNN,包括 CNN,RNN,transformer,語言模型等等。此外,這種方法實現了最快的 DNN 剪枝與加速的框架, 相較於現有的 DNN 加速方案如 TensorFlow-Lite,它最高可以實現 180 倍的加速。總而言之,壓縮編譯協同設計方案可以使得 AI 應用在現有的移動裝置上實時地執行,這在原來的觀念中,被認為是隻有專業的硬體裝置支援才能夠做到的。

如果讀者想要挖掘更多的技術細節,可以參考下面的完整的壓縮編譯協同設計技術概覽:https://arxiv.org/abs/2003.06700

我們在下面的網址中展示了利用壓縮編譯協同設計方案在現有的移動裝置上實現實時地影片解析度提升的影片:https://www.youtube.com/watch?v=UqaRtG5EVR4 

關於基於卷積核模式化剪枝以及演算法層最佳化的細節與結果,讀者可以參考下面的研究論文:
  • [AAAI’2020] Xiaolong Ma, Fu-Ming Guo, Wei Niu, Xue Lin, Jian Tang, Kaisheng Ma, Bin Ren, and Yanzhi Wang, PCONV: The Missing but Desirable Sparsity in DNN Weight Pruning for Real-Time Execution on Mobile Device, The 34th AAAI Conference on Artificial Intelligence, February, 2020.


關於基本卷積核模式化剪枝的編譯程式碼生成以及最佳化的框架,以及與演算法層最佳化和系統層最佳化相結合的細節與結果,讀者可以參考下面的研究論文
  • [ASPLOS’2020] Wei Niu, Xiaolong Ma, Sheng Lin, Shihao Wang, Xuehai Qian, Xue Lin, Yanzhi Wang, and Bin Ren, PatDNN: Achieving Real-Time DNN Execution on Mobile Devices with Pattern-based Weight Pruning, The 25th International Conference on Architectural Support for Programming Languages and Operating Systems, March, 2020.


關於更快實現 DNN 剪枝的基於具有可組合性(composability)的編譯框架的細節與結果,讀者可以參考下面的研究論文

  • [PLDI’2019] “Wootz: A Compiler-Based Framework for Fast CNN Pruning via Composability”, Hui Guan, Xipeng Shen, Seung-Hwan Lim, Programming Language Design and Implementation, Phoenix, AZ, USA, June, 2019.

相關文章