本技術涉及芯片設計,特別是涉及一種面向像素差分卷積神經網絡的芯片計算架構及其設計方法。
背景技術:
1、與傳統僅采用標準卷積的神經網絡相比,像素差分卷積神經網絡在gpu(圖形處理器)以及cpu(中央處理器)端實現了顯著的實時推理速度提升。但是在將該網絡在以乘累加陣列為核心的邊緣加速芯片中部署時,由于網絡中深度可分離卷積(包含逐深度卷積和逐點卷積)和膨脹卷積的計算方式特殊,而現有邊緣芯片通常針對標準卷積設計,從而導致計算資源利用率嚴重不足,限制了像素差分卷積神經網絡在實際中的應用價值。
2、現有解決方案通常需要在芯片中增加專門用于實現深度可分離卷積以及膨脹卷積的電路模塊。但新增模塊通常無法運行標準卷積,從而導致芯片面積增大和計算資源浪費。
技術實現思路
1、基于此,有必要針對上述技術問題,提供一種可以兼容標準卷積、深度可分離卷積和膨脹卷積的面向像素差分卷積神經網絡的芯片計算架構及其設計方法,實現計算資源的高效利用,從而提高推理計算效率。
2、一種面向像素差分卷積神經網絡的芯片計算架構,包括:m個激活加載隊列、m個權重加載隊列和由m×m個乘累加單元組成的乘累加陣列;其中,乘累加陣列中的每一乘累加列對應設置有一激活加載使能信號;m的取值為2的正整數次方;
3、激活加載隊列用于在水平方向上加載特征圖像激活數據至乘累加陣列,權重加載隊列用于在垂直方向上加載權重數據至乘累加陣列;
4、在乘累加陣列中,同一乘累加列共享同一權重數據,并在激活加載使能信號的控制下,同一乘累加行共享同一特征圖像激活數據或者加載不同的特征圖像激活數據,以實現像素差分卷積神經網絡中的標準卷積、逐點卷積、逐深度卷積和膨脹卷積。
5、在其中一個實施例中,每個乘累加單元包含一個乘法器、一個多路選擇器、一個加法器和一個輸出特征圖像緩存;其中,乘法器用于完成特征圖像激活數據和權重數據的相乘運算,多路選擇器用于選擇本地乘法器、上一行乘累加單元中的乘法器或下一行乘累加單元中的乘法器計算得到的結果,加法器用于將多路選擇器輸出的數據與輸出特征圖像緩存中存儲的部分累加和進行累加,然后再次寫入到輸出特征圖像緩存中。
6、在其中一個實施例中,特征圖像激活數據與權重數據向乘累加陣列加載時需滿足兩個約束條件:
7、約束一:所有加載的特征圖像激活數據和權重數據均具有相同的輸入通道編號;
8、約束二:向不同乘累加列加載的權重數據屬于不同的卷積核,即有不同的輸出通道編號。
9、在其中一個實施例中,乘累加陣列實現標準卷積和逐點卷積,包括:
10、將乘累加陣列中每一乘累加列對應的激活加載使能信號均設置為1,在任意時鐘周期內,同一乘累加列共享同一權重數據,同一乘累加行共享同一特征圖像激活數據,實現像素差分卷積神經網絡中的標準卷積和逐點卷積。
11、在其中一個實施例中,乘累加陣列實現標準卷積的數據加載方式,包括:
12、首先,向乘累加陣列加載任一輸入通道編號的特征圖像激活數據和權重數據;其中,特征圖像激活數據按照其列坐標編號除以m的余數加載到對應的乘累加行上,而權重數據則按照其輸出通道編號除以m的余數加載到對應的乘累加列上;特征圖像激活數據和權重數據相乘得到的結果暫存在乘累加單元中的輸出特征圖像緩存中;
13、其次,根據需要選擇首先更新權重數據或者特征圖像激活數據;
14、在一種實現方式中,首先保持特征圖像激活數據不變,將所有屬于同一輸入通道的權重數據進行遍歷加載,計算結果根據其在輸出特征圖像中的坐標,在輸出特征圖像緩存中暫存;然后更新一組特征圖像激活數據,再重新遍歷加載一次權重數據,相乘計算結果根據卷積運算規則與輸出特征圖像緩存中之前暫存的部分結果進行累加;上述過程循環進行,直至完成當前輸入通道內特征圖像激活數據和權重數據的卷積運算;然后切換到下一個輸入通道,并采用相同方式完成標準卷積運算;
15、在另一種實現方式中,首先保持權重數據不變,遍歷更新同一輸入通道內的特征圖像激活數據;然后再更新權重數據,遍歷加載特征圖像激活數據直至完成所有標準卷積運算。
16、在其中一個實施例中,乘累加陣列實現逐深度卷積,包括:
17、當m大于9時,乘累加陣列最多使用m個乘累加列中的9列實現逐深度卷積;在不失一般性的前提下,設置乘累加陣列中所使用到的乘累加列數量為n,其中n≤9,即實際使用的乘累加陣列規模為m×n,且當m小于9時,n=m;
18、m×n規模的乘累加陣列實現逐深度卷積的方式為:在第0周期至第n-1周期內,第0乘累加列至第n-1乘累加列對應的激活加載使能信號依次循環設置為1,其余乘累加列對應的激活加載使能信號設置為0,使得在從第0周期至第n-1周期的每個時鐘周期內,從激活加載隊列中讀出的各輸入通道的特征圖像激活數據,僅會加載到當前激活加載使能信號為1的乘累加列上;同時,在從第0周期至第n-1周期的每個時鐘周期內,各激活加載使能信號歷史設置為1而當前設置為0的乘累加列,保持已加載的特征圖像激活數據不變,更新權重數據為歷史加載的輸出通道內的新權重數據,并在每個乘累加單元內完成激活數據和權重數據的相乘運算,其中在第n-1周期第n-1乘累加列的特征圖像激活數據和權重數據加載完成首次相乘運算;在第n周期,重新將第0乘累加列的激活加載使能信號設置為1,更新第0乘累加列的特征圖像激活數據為第0周期加載的輸入通道中的新特征圖像激活數據,并還原權重數據為第0乘累加列在第0周期加載的權重數據,完成相乘運算,同時同步更新第1乘累加列至第n-1乘累加列的權重數據為各乘累加列歷史加載的輸出通道內的新權重數據;在接下來的第n+1周期至第2n-1周期,依次將第1乘累加列至n-1乘累加列的激活加載使能信號設置為1,更新各乘累加列的特征圖像激活數據為第1周期至第n-1周期加載的輸入通道中的新特征圖像激活數據,并還原權重數據為各乘累加列在第1周期至n-1周期對應加載的權重數據,完成相乘運算,同時同步更新其余乘累加列的權重數據為各乘累加列歷史加載的輸出通道內的新權重數據;在每n個時鐘周期采用上述方式更新特征圖像激活數據和權重數據,直至完成n個通道的逐深度卷積計算,然后采用同樣方式開展接下來n個通道的逐深度卷積計算,直至完成當前卷積層計算。
19、在其中一個實施例中,乘累加陣列實現逐深度卷積時,還包括:
20、當乘累加陣列的實際列數m大于n時,還可在第n+i周期,將第n+i乘累加列的激活加載使能信號設置為1,向第n+i乘累加列加載第n+i輸入通道的特征圖像激活數據和權重數據,同時考慮此時第0乘累加列至第i乘累加列上的特征圖像激活數據并未更新,重新加載第0乘累加列至第i乘累加列的權重數據并不會產生有意義的新計算,因此需關閉第0乘累加列至第i乘累加列的乘累加單元以便節省功耗;其中,0≤i<m-n。
21、在其中一個實施例中,乘累加陣列實現逐深度卷積時,在第n周期后續的每個時鐘周期內,在乘累加陣列中均存在m×n組相乘運算同時進行,直至完成像素差分卷積神經網絡中的所有逐深度卷積運算,且計算資源利用率最高為n/m。
22、在其中一個實施例中,乘累加陣列實現膨脹卷積,包括:
23、先通過像素差分卷積神經網絡中特征圖像的重新排列,將膨脹卷積退化為標準卷積;然后,將乘累加陣列中每一乘累加列對應的激活加載使能信號均設置為1,在任意時鐘周期內,同一乘累加列共享同一權重數據,同一乘累加行共享同一特征圖像激活數據,實現像素差分卷積神經網絡中的標準卷積;
24、特征圖像的重新排列方式為:
25、首先,設置膨脹系數為d,特征圖像的高度為h,寬度為w,特征圖像每個輸入通道內特征圖像激活數據的行號為h,列號為w,則將特征圖像激活數據按照行號h除d的余數和列號w除d的余數,分別重新拼接為d×d個子特征圖像,每個子特征圖像的高度為h/d向上取整,寬度為w/d向上取整,且當原特征圖像中的數據量不足以將某個子特征圖像完整填充時,使用零值進行補充;將d×d個子特征圖像重新以矩陣方式拼接為一個大的特征圖像,在拼接時水平方向和垂直方向上相鄰子特征圖像之間需填充d-1個零以避免卷積時計算結果相互影響;重新拼接后的特征圖像規模為;
26、然后將膨脹卷積權重矩陣中的零值剔除,使其規模退化為標準卷積規模;重新拼接后的特征圖像與膨脹卷積權重矩陣退化得到的標準卷積權重矩陣按照標準卷積方式在乘累加陣列中完成計算,計算得到的輸出特征圖像規模與輸入特征圖像規模相同,即為,其中與填充零對應的位置處的計算結果為無效數據;
27、最后計算得到的輸出特征圖像數據,在剔除無效數據后,以特征圖像的重新排列過程相逆的方式進行重新排列,得到正確的膨脹卷積結果。
28、一種面向像素差分卷積神經網絡的芯片計算架構的設計方法,所述方法包括:
29、設計面向像素差分卷積神經網絡的芯片計算架構,包括m個激活加載隊列、m個權重加載隊列和由m×m個乘累加單元組成的乘累加陣列;其中,乘累加陣列中的每一乘累加列對應設置有一激活加載使能信號;m的取值為2的正整數次方;
30、利用激活加載隊列在水平方向上加載特征圖像激活數據至乘累加陣列,并利用權重加載隊列用于在垂直方向上加載權重數據至乘累加陣列;
31、通過在乘累加陣列中,同一乘累加列共享同一權重數據,并在激活加載使能信號的控制下,同一乘累加行共享同一特征圖像激活數據或者加載不同的特征圖像激活數據,以實現像素差分卷積神經網絡中的標準卷積、逐點卷積、逐深度卷積和膨脹卷積。
32、上述面向像素差分卷積神經網絡的芯片計算架構及其設計方法,相較于現有技術,具備以下有益效果:
33、本技術采用一種乘累加陣列架構,乘累加陣列中的同一乘累加列共享同一權重數據,并在乘累加陣列的每一乘累加列對應設置的激活加載使能信號的控制下,乘累加陣列中的同一乘累加行共享同一特征圖像激活數據或者加載不同的特征圖像激活數據,從而以實現像素差分卷積神經網絡中的標準卷積、逐點卷積、逐深度卷積以及膨脹卷積,能夠有效支持像素差分卷積神經網絡及多種輕量化神經網絡的推理加速,避免了引入專用模塊實現逐深度卷積、逐點卷積和膨脹卷積,有利于降低加速器芯片面積和避免計算資源浪費,最終能夠將基于差分卷積算子構建的像素差分卷積神經網絡部署到低功耗芯片中進行高效推理。