本公開涉及人工智能,具體而言,本公開涉及一種數據處理方法、裝置、電子設備及存儲介質。
背景技術:
1、在深度學習神經網絡模型中,為了更高的性能,一般會采取多layout的機制,即不同的算子可能會支持不同的數據布局格式,因此可能會出現相鄰的兩個算子之間的數據布局格式不匹配的情況。
2、現有技術中通常是會兩個算子之間插入一個layout?convert算子(一種用于調整張量的內存布局的算子),layout?convert算子是純內存操作的訪存密集型算子,layoutconvert算子的插入會帶來大量數據訪存的耗時,從而降低了性能。
技術實現思路
1、本公開實施例提供了一種數據處理方法、裝置、電子設備及存儲介質,可以解決現有技術中layout?convert算子的插入會導致性能降低的問題。本公開提供的技術方案如下:
2、根據本公開實施例的一個方面,提供了一種數據處理方法,該方法包括:
3、獲取待處理的初始數據,以及所述初始數據對應的目標算子;
4、將所述目標算子的輸出通道數量除以預設數量所得到的商作為第一數量,將所述目標算子切分為第一數量個子算子;
5、將所述第一數量個子算子分配至神經網絡處理器中的至少兩個目標核心;其中,神經網絡處理器中的多個核心至少包括所述至少兩個目標核心;
6、針對每個目標核心中的每個子算子,通過該目標核心執行該子算子對所述初始數據的運算,將運算所得到的結果作為該子算子對應的子數據;
7、將各個子算子各自對應的各個子數據進行拼接,將拼接后的數據作為所述初始數據對應的目標數據;
8、其中,所述初始數據是基于第一內存布局格式進行存儲布局的;所述目標數據是基于第二內存布局格式進行存儲布局的;所述第二內存布局格式是在所述第一內存布局格式的基礎上以所述預設數量在通道維度上進行分組得到的。
9、可選地,所述將所述第一數量個子算子分配至神經網絡處理器中的至少兩個目標核心,包括:
10、確定所述神經網絡處理器中多個核心的第二數量;
11、基于所述第一數量與所述第二數量之間的大小關系,確定各個核心中的至少一個目標核心,以及各個目標核心各自對應的子算子的處理數量;所述目標核心對應的子算子的處理數量不為零;
12、針對每個目標核心,從第一數量個子算子中確定該目標核心對應的處理數量個子算子;其中,各個目標核心各自對應的至少一個子算子之間不重疊;
13、針對每個目標核心,將所述該目標核心對應的處理數量個子算子分配給所述目標核心。
14、可選地,所述基于所述第一數量與所述第二數量之間的大小關系,確定各個核心中的至少一個目標核心,以及各個目標核心各自對應的子算子的處理數量,包括:
15、若所述第一數量小于所述第二數量,則將所述第二數量個核心中的第一數量的核心作為目標核心,將每個目標核心的處理數量設置為1;
16、若所述第一數量不小于第二數量,則將每個核心作為目標核心,并基于所述第一數量和所述第二數量,確定各個目標核心各自對應的處理數量。
17、可選地,所述基于所述第一數量和所述第二數量,確定各個目標核心各自對應的處理數量,包括:
18、將所述第一數量對所述第二數量進行整數除法所得到的計算結果作為第一數值;
19、將所述第一數量對所述第二數量進行取余運算所得到的計算結果作為第二數值;
20、若所述第二數值為零,則將所述第一數值作為每個目標核心對應的處理數量;
21、若所述第二數值不為零,則從所述各個目標核心中確定第二數值個第一目標核心,將所述第一目標核心對應的處理數量設置為第三數值;將所述各個目標核心中每個第二目標核心對應的處理數量設置為所述第一數值;
22、所述第二目標核心為所述各個目標核心中除所述第一目標核心之外的目標核心;所述第三數值比所述第一數值大1。
23、可選地,所述每個目標核心分別對應一個核心序號;
24、所述從所述各個目標核心中確定第二數值個第一目標核心,包括:
25、將所述各個目標核心中核心序號排序靠前的第二數值個目標核心作為所述第一目標核心。
26、可選地,所述將各個子算子各自對應的各個子數據進行拼接,包括:
27、確定各個子算子對應的順序關系;
28、按照各個子算子對應的順序關系對各個子算子各自對應的各個子數據順次拼接。
29、可選地,所述目標算子與所述目標算子的相鄰算子存在連接關系;所述目標算子用于處理基于第一內存布局格式進行存儲布局的數據,所述相鄰算子用于處理基于第二內存布局格式進行存儲布局的數據。
30、根據本公開實施例的另一個方面,提供了一種數據處理裝置,該裝置包括:
31、獲取模塊,用于獲取待處理的初始數據,以及所述初始數據對應的目標算子;
32、切分模塊,用于將所述目標算子的輸出通道數量除以預設數量所得到的商作為第一數量,將所述目標算子切分為第一數量個子算子;
33、分配模塊,用于將所述第一數量個子算子分配至神經網絡處理器中的至少兩個目標核心;其中,神經網絡處理器中的多個核心至少包括所述至少兩個目標核心;
34、運算模塊,用于針對每個目標核心中的每個子算子,通過該目標核心執行該子算子對所述初始數據的運算,將運算所得到的結果作為該子算子對應的子數據;
35、拼接模塊,用于將各個子算子各自對應的各個子數據進行拼接,將拼接后的數據作為所述初始數據對應的目標數據;
36、其中,所述初始數據是基于第一內存布局格式進行存儲布局的;所述目標數據是基于第二內存布局格式進行存儲布局的;所述第二內存布局格式是在所述第一內存布局格式的基礎上以所述預設數量在通道維度上進行分組得到的。
37、根據本公開實施例的另一個方面,提供了一種電子設備,該電子設備包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,處理器執行程序時實現上述任一種數據處理方法的步驟。
38、根據本公開實施例的再一個方面,提供了一種計算機可讀存儲介質,該計算機可讀存儲介質上存儲有計算機程序,該計算機程序被處理器執行時實現如上述任一種數據處理方法的步驟。
39、根據本公開實施例的一個方面,提供了一種計算機程序產品,其包括計算機程序,該計算機程序被處理器執行時實現如上述任一種數據處理方法的步驟。
40、本公開實施例提供的技術方案帶來的有益效果是:
41、通過將目標算子切分為第一數量個子算子,使得每個子算子對初始數據進行運算,得到對應的子數據,對各個子數據進行拼接,將拼接后的數據作為目標數據,使得目標數據可以直接轉換為第二內存布局格式,不需要插入layout?convert算子,減少了layoutconvert密集訪存數據所帶來的耗時,提高了神經網絡處理器的性能。
42、通過將第一數量個子算子分配給神經網絡處理器中多個目標核心,將目標算子的任務劃分為多個子算子的子任務,通過將多個子任務分配給多個核心進行并行處理,進一步提高了神經網絡處理器的性能。