陳維偉 王 穎 張 磊
(?中國科學院計算技術研究所 北京 100190)
(??中國科學院大學 北京 100049)
近年來,深度神經網絡(deep neural network,DNN)在計算機視覺、自然語言處理等領域都取得了巨大的突破[1]。算法研究人員針對不同的應用設計了大量的網絡結構和對應的訓練方法,如在圖像分類領域,從最初的AlexNet 到目前的Efficient-Net,人們對神經網絡結構的改進不斷提升其精度和性能表現[2]。同時針對深度學習這類計算密集和數據密集應用,業界關注開發特定領域的架構(如硬件加速器),此類硬件加速架構多采用單指令多數據流、用戶控制與緩存等技術,使其在并行性及帶寬利用率上比通用架構更加高效,通過結合專用領域的編程語言以繼續提高計算能力[3-5],如Google公司研發的張量處理單元(tensor processing unit,TPU)在神經網絡應用中平均比圖形處理器(graphics processing unit,GPU)(Nvidia K80 GPU)或中央處理器(central processing unit,CPU)(Intel Haswell CPU)快15~30 倍,能效比(Tops/Watt)高出約30~80 倍[3-4]。
深度學習軟硬件的興起為構建高能效的人工智能系統提供了可能,然而,目前深度學習算法與硬件專用架構設計之間依然存在著很大的鴻溝。在算法設計方面,DNN 模型設計者通常專注于設計具有更高精度、更低參數和更小每秒浮點運算次數(floating-point operations per second,FLOPs)的DNN 模型,但是其較少考慮到DNN 在具體硬件上的執行特性,使得僅設計具有較低參數和較少FLOPs 的DNN 模型并不能直接提升性能[2,7],如NasNet 與分層網絡MobileNet 相比,其有更低的參數但使用多分支結構,其碎片化的單元結構使得硬件運算效率較低[8]。在硬件設計方面,目前,對應用廣泛的、具有代表性的程序進行泛化是硬件設計和優化的傳統方法,其通常先構建一組基準測試程序(Benchmark,如SPEC),包含了一組特定的工作負載程序,硬件設計的目標之一就是優化這組特定程序的平均性能?!?br>