技術探索

深度神經網路中卷積加速器的Tile-Based架構探索

工業技術研究院 資訊與通訊研究所 石詠太 黃稚存 陳耀華 盧俊銘

近年來,人工智慧利用深度卷積神經網路(DCNNs) [1], [2] 在許多領域都獲得重大成功,例如: 視覺分析、自然語言處理以及多媒體合成。同時因為深度卷積神經網路有很高的計算複雜度以及大量的數據運算,對有效率的硬體加速器需求也隨之增加。

精彩內容

1. 卷積加速器架構介紹
2. 卷積加速器架構探索
3. 案例分析與架構探索

Tile-Based卷積加速器

圖1是我們為深度卷積神經網路所設計的可擴展深度推論(inference)處理器架構。我們使用總體緩衝器記憶庫(global buffer bank)作為主要的儲存空間,用來儲存要傳遞給PE叢集(cluster)的輸入特徵圖(input feature map, ifmap) 以及濾波器權值(filter weight),也用來儲存PE叢集運算過後所產生輸出特徵圖(output feature map, ofmap)以及部分和(partial sum, psum)。多個PE叢集(例如w個)可以依照行排列的形式組成1個PE叢集群,每個PE叢集群會與1個總體緩衝器記憶庫(memory bank)以1個一對一的多管道 (channel)線路連接,來獲取運算所需的輸入特徵圖以及濾波器權值。而在叢集群的內部,數據會以管道化(pipeline)的方式傳遞。加速器架構內的整個2-D PE陣列是由u個PE叢集群所組成,卷積計算所產生的部分和以及陣列相乘的結果會由上至下從所有PE叢集群累加到k個總體緩衝器記憶庫 (為達最大化架構彈性的目的k可以與w不同)。


圖1 Tile-based深度推論處理器架構

在這篇文章中,每個PE叢集都採用了[5]的行固定的數據流,搭配1個2-D PE陣列,並且在PE內部網路使用多播(multicast)的形式傳遞輸入特徵圖、濾波器權值、輸入部分和(input partial sums, ipsum)以及收集輸出部分和 (output partial sum, opsum)。叢集控制器(cluster controller)負責操控所有的數據路徑,讓PE叢集可以執行1個processing pass的計算。每個PE裡含有1個乘累加器(MAC, multiplication and accumulation)以及1個額外的加法器用來累加部分和;在記憶體方面,PE裡面有3個不同的暫存記憶體(scratchpad memory)分別用來存放輸入特徵圖、濾波器權值以及輸出部分合以最大化的再利用數據,除此之外,PE內還有額外的輸入緩衝器(input beffer, IBuf)和輸出緩衝器(output buffer, OBuf)用來彌補可能會發生的PE和PE間傳遞網路(Inter-PE networks)的頻寬衝突。
在架構中,PE叢集間的連接網路傳遞被管道化管理,並且在匯流排(bus)頻寬的部分以階梯式(stair-wise)的方法安排。傳遞輸入特徵圖以及濾波器權值的匯流排頻寬會隨著管道(pipeline)增加,而用來收集部分和的匯流排頻寬則會隨著管道減少(見圖1)。除此之外,多個被標記(tagged)的數據會被匯集成1個字(word)傳遞數據給不同的叢集以改善頻寬的使用效率。

1.卷積數據流

單一卷積層運算可以簡單的透過7層多重迴圈來表示,如圖2(a),外面4層多重迴圈 {n, m, f, e} 主要負責跑過所有的輸出特徵圖的像素(pixel),而內層的3層多重迴圈 {r, s, c} 則是負責幫輸入特徵圖讀取3-D濾波器,但是由於硬體資源的限制,tile-based架構會將批次量(batch size, N), 輸出特徵圖的高(E), 輸出管道的維度(output channel dimension, M)和輸入管道的維度(C)分別劃分成較小的tile(見圖2(b))。


圖2 Tile-based數據流

因此,tile-based數據流被分成兩個部分: 連續執行(sequential execution)、平行計算(parallel computation),在1個processing pass的平行計算由多個PE叢集同時負責,圖3(a) 展示了在行固定數據流下2開始-D卷積計算是如何對應到相對的PE集合(set)。 圖3(b)主要是用來說明tile-based加速器怎麼支援彈性映射(mapping),把理論中的PE集和對應到實際的PE叢集。舉例來說,在面對一般的卷積計算時tile-based加速器可以實現跨叢集的映射,這個特點大大的改善了PE利用率;另一方面,一般的PE集合映射往往會因為深度卷積層的數據再使用率低,所以在映射上有所限制,但是tile-based加速器架構可以針對輸出管道進行切割(tile)(例如圖2(b)中迴圈中的g0、g2)進而最大化數據的利用率。要注意的是以上所說的映射都需要硬體架構支援才得以實現,tile-based架構不僅對其支援,還可以被應用在行固定以外的數據流上。


圖3 (a)PE集合對應到2-D卷積;(b)多PE集合的映射

 

2.卷積加速器架構探索

在了解卷積加速器是如何運作以及數據流的映射之後,我們就可以開始根據不同輸入以及硬體資源規劃加速器的架構。為了達到這樣的目的,首先我們要事先提供目標深度神經網路模型,讓使用者可以從初始的tile候選組合(candidates, 包含PE叢集)和數據頻寬開始探索,我們的搜索空間採用貪婪演算法(greedy algorithm)作為搜尋架構參數可能組合的策略,再決定好參數配置之後,目標深度卷積神經網路就會根據我們的硬體架構進行tile以及排程,排程過後的結果會經由特定的PPA模型進行評估,計算在這樣的組合下神經網路加速器的表現、能耗和面積如何,評估結束後,我們會重複上述步驟,但使用不同的參數進行評估,在試過所有可能組合之後,我們就可以獲得架構參數的最佳組合,流程圖如圖4。


圖4 加速器架構探索流程

  

案例分析與架構探索

我們將探索流用於評估1組加速器架構,該加速器是由2016個PE以及1296 KBytes的總體 (輸入特徵圖+濾波器權值: 288 KBytes; 部分和: 1008 KBytes)緩衝器所組成。每個PE中都有1個存有總共368個輸入特徵圖以及濾波器權值數據的暫存記憶體。另外,輸入特徵圖以及濾波器權值都已經被量化成8位元的數值,而部分和則是有32 位元。接下來,我們會針對不同PE叢集大小和內部連接網路參數會如何影響加速器總體的延遲以及面積來進行實驗。
首先,不同的PE叢集大小(3×7, 3×4, 3×2等)是透過Verilog來設計以及合成的,再來整體2016個PE的設計是透過運作在200 MHz搭配45奈米的開源元件庫(Open Cell Library)來驗證。
接著,根據PE tile的RTL設計,我們開發了1個週期精確(cycle-accurate)的架構模擬工具來計算加速器整體在不同內部連接網路參數設計中的延遲和面積;在單個PE叢集的面積方面,我們則是使用新思設計的編譯器來取得資料;在能耗方面,我們使用新思PrimetimePX來估算,我們還使用了McPAT [13] 來預測內部網路所需的能耗以及面積,並利用記憶體編譯器(memory compiler)來估算總體緩衝器(SRAM)。

1.探算不同叢集大小

我們將提出的tile-based設計與Eyeriss V2 [7] 的架構進行比較,觀察在45奈米的製程下延遲、能量以及面積的差異,結果見表1。我們選擇以3*4的叢集大小建構具有2016個PE的陣列,陣列在200 MHz下運作,輸入特徵圖以及濾波器權值為8位元數據,而部分和則是32位元,總體緩衝器的部分則是將756 KB用來儲存輸入特徵圖、1260 KB用來儲存部分和。觀察表1可以發現我們的架構可以在總面積減小3%的情況下,運用在ResNet50、MobileNet和 MobileNetV2上並獲得25.69%到36.73%不等的延遲改善。

表1 與Eyeriss2的比較

  

結論

我們提出了一種tile-based深度神經網路加速器架構,搭配對應的探索方法,我們可以找到有著更小且表現更好的設計。在實驗中,我們產生的加速器設計相比於Eyeriss V2有著更小的面積並讓延遲有著25.69%到36.73%不等的改善。未來我們將可以有效地在加速器架構探索中更好地找出適合且表現更佳的設計。

參考文獻

[1] A. G. Howard, M. Zhu et al., “MobileNets: Efficient convolutional neural networks for mobile vision applications,” ArXiv, vol. abs/1704.04861, 2017.
[2] K. He, X. Zhang et al., “Deep residual learning for image recognition,” in 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016, pp. 770–778.
[3] N. P. Jouppi, C. Young et al., “In-datacenter performance analysis of a tensor processing unit,” in ACM/IEEE 44th International Symposium on Computer Architecture (ISCA), 2017, pp. 1–12.
[4] S. Zhang, Z. Du et al., “Cambricon-X: An accelerator for sparse neural networks,” in 2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO), 2016, pp. 1–12.
[5] Y. Chen, T. Krishna et al., “Eyeriss: An energy-efficient reconfigurable accelerator for deep convolutional neural networks,” IEEE Journal of Solid-State Circuits, vol. 52, no. 1, pp. 127–138, 2017.
[6] J. Lee, C. Kim et al., “UNPU: A 50.6tops/w unified deep neural network accelerator with 1b-to-16b fully-variable weight bit-precision,” in 2018 IEEE International Solid-State Circuits Conference (ISSCC), 2018, pp. 218–220.
[7] Y. Chen, T. Yang et al., “Eyeriss v2: A flexible accelerator for emerging deep neural networks on mobile devices,” IEEE Journal on Emerging and Selected Topics in Circuits and Systems, vol. 9, no. 2, pp. 292–308, 2019.
[8] H. Kwon, M. Pellauer, and T. Krishna, “MAESTRO: An open-source infrastructure for modeling dataflows within deep learning accelerators,” ArXiv, vol. abs/1805.02566, 2018.
[9] L. Ke, X. He, and X. Zhang, “NNest: Early-stage design space exploration tool for neural network inference accelerators,” Proceedings of the International Symposium on Low Power Electronics and Design, 2018.
[10] B. Reagen, P. Whatmough et al., “Minerva: Enabling low-power, highlyaccurate deep neural network accelerators,” in ACM/IEEE 43rd Annual International Symposium on Computer Architecture (ISCA), 2016, pp. 267–278.
[11] H. Kwon, A. Samajdar, and T. Krishna, “MAERI: Enabling flexible dataflow mapping over DNN accelerators via reconfigurable interconnects,” in Proc. 23rd International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’18), 2018, p. 461–475.
[12] K. Hegde, R. Agrawal et al., “Morph: Flexible acceleration for 3D CNNbased video understanding,” in Proc. 51st Annual IEEE/ACM International Symposium on Microarchitecture (MICRO), 2018, p. 933–946.
[13] S. Li, J. H. Ahn et al., “McPAT: An integrated power, area, and timing modeling framework for multicore and manycore architectures,” in Proc. 42nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO), 2009, pp. 469–480.