資料庫生成方法、數據流切分方法、裝置、設備及介質與流程
2023-06-29 10:07:42 2
1.本發明涉及數據處理技術領域,尤其涉及一種資料庫生成方法、數據流切分方法、裝置、設備及介質。
背景技術:
2.ai晶片,例如,dla(deep learning accelerator,深度學習加速器),在開發完成後,一般都具有理論計算性能,也就是該ai晶片在理想情況下能夠達到的最佳算力。ai晶片的實際計算性能由ai晶片的數據存儲方式(例如,單級存儲或者多級存儲)、帶寬大小、晶片理論運算能力以及路由分配方式等綜合因素來決定。現階段主流的dla都包含複雜的存儲層級(memory hierarchy)。如圖1所示,以三層存儲為例,每個dla中包含多個簇(cluster),每個簇中包含多個計算單元,每個計算單元包含一個或多個乘法器陣列。各存儲層級的存儲容量自上而下逐級降低,帶寬和訪問速度逐級增加。當數據流輸入至dla時,輸入數據自上而下的穿過多級存儲,輸出數據再自下而上的穿過多級存儲。
3.對於dla的輸入{in0,in1,in2,
…
}和輸出{out0,out1,out2,
…
},二者在第i層存儲的切分{in0_i,in1_i,in2_i,
…
}和{out0_i,out1_i,out2_i,
…
},構成一種數據流切分和搬運策略。對於給定的輸入和輸出,實際上存在指數級數量的數據流切分和搬運策略。如果採用現有的搜索策略來尋找最優的數據流搬運策略,需要對每一個策略的代價進行建模,使得模型複雜度高,且模型的精確性難以保證。因此,現有技術中難以精確預測當前數據流的張量形狀應用各切分方式時所需要的代價,難以確定針對當前張量形狀的代價較小、性能表現較優的較佳切分方式。
技術實現要素:
4.本發明提供了一種資料庫生成方法、數據流切分方法、裝置、設備及介質,以精確地預測數據流應用各切分方式時的代價,有利於確定各數據流的較佳切分方式。
5.第一方面,本發明實施例提供了一種資料庫生成方法,包括:
6.生成初始資料庫;其中,所述初始資料庫包括多個初始數據流的初始張量形狀,以及所述初始張量形狀對應的切分方式和代價,所述初始張量形狀對應的代價小於可容忍代價閾值;
7.對所述初始張量形狀在至少一個維度上進行至少一次維度尺寸縮減,直至縮減後的張量形狀與其對應的代價不滿足線性關係時停止縮減,並將最後一次縮減前的張量形狀記為邊界張量形狀;
8.基於在各維度上進行維度尺寸縮減後得到的邊界張量形狀生成邊界資料庫;所述邊界資料庫包括多個邊界張量形狀,以及所述邊界張量形狀對應的切分方式和代價;
9.其中,所述初始資料庫和所述邊界資料庫用於對輸入數據流進行張量形狀匹配,並根據匹配結果確定所述輸入數據流的切分方式。
10.可選地,所述邊界張量形狀的獲取過程包括:
11.對於任一初始張量形狀在任一維度上進行一次維度尺寸縮減;
12.對於當前維度,計算縮減後維度尺寸與縮減前維度尺寸的尺寸比值;以及計算縮減後的張量形狀對應代價與縮減前的張量形狀對應代價的代價比值;
13.判斷所述尺寸比值和所述代價比值是否相等;
14.若是,則對縮減後的張量形狀繼續進行維度尺寸縮減,直至縮減後得到的尺寸比值和代價比值不相等時停止縮減,並將最後一次縮減前的張量形狀記為邊界張量形狀。
15.可選地,繼續進行的維度尺寸縮減基於當前維度或者其他維度進行。
16.可選地,若所述尺寸比值和所述代價比值不相等,則對當前初始張量形狀在其他維度上進行維度尺寸縮減,以獲取當前初始張量形狀對應的邊界張量形狀。
17.可選地,若當前初始張量形狀在各維度上分別進行一次維度尺寸縮減後對應得到的尺寸比值和代價比值均不相等,則判定當前初始張量形狀無對應的邊界張量形狀。
18.第二方面,本發明實施例還提供了一種資料庫生成裝置,包括:
19.初始資料庫生成模塊,用於生成初始資料庫;其中,所述初始資料庫包括多個初始數據流的初始張量形狀,以及所述初始張量形狀對應的切分方式和代價,所述初始張量形狀對應的代價小於可容忍代價閾值;
20.邊界張量形狀篩選模塊,用於對所述初始張量形狀在至少一個維度上進行至少一次維度尺寸縮減,直至縮減後的張量形狀與其對應的代價不滿足線性關係時停止縮減,並將最後一次縮減前的張量形狀記為邊界張量形狀;
21.邊界資料庫生成模塊,用於基於在各維度上進行維度尺寸縮減後得到的邊界張量形狀生成邊界資料庫;所述邊界資料庫包括多個邊界張量形狀,以及所述邊界張量形狀對應的切分方式和代價;
22.其中,所述初始資料庫和所述邊界資料庫用於對輸入數據流進行張量形狀匹配,並根據匹配結果確定所述輸入數據流的切分方式。
23.第三方面,本發明實施例還提供了一種數據流切分方法,基於本發明任意實施例所提供的初始資料庫和邊界資料庫實現,所述數據流切分方法包括:
24.獲取輸入數據流的當前張量形狀;
25.若所述初始資料庫和/或所述邊界資料庫中存在與所述當前張量形狀相匹配的目標張量形狀,則採用所述目標張量形狀的切分方式對所述輸入數據流進行切分。
26.可選地,若所述目標張量形狀不唯一,則根據所述目標張量形狀的代價估算採用所述目標張量形狀的切分方式對所述輸入數據流進行切分時產生的預估代價;並選取預估代價最低的目標張量形狀的切分方式對所述輸入數據流進行切分。
27.可選地,所述目標張量形狀與所述當前張量形狀相匹配包括:
28.第一匹配條件:所述目標張量形狀與所述當前張量形狀相同;
29.或者,
30.第二匹配條件:所述目標張量形狀的維度數量與所述當前張量形狀的維度數量相同,且所述當前張量形狀各維度的維度尺寸均為所述目標張量形狀對應維度的維度尺寸的整數倍。
31.可選地,所述目標張量形狀的選取過程包括:
32.判斷所述初始資料庫中是否存在滿足第一匹配條件的第一目標張量形狀;若是,
則將所述第一目標張量形狀作為所述目標張量形狀;
33.若所述初始資料庫中不存在所述第一目標張量形狀,則判斷所述邊界資料庫中是否存在滿足第一匹配條件的第二目標張量形狀;若是,則將所述第二目標張量形狀作為所述目標張量形狀;
34.若所述邊界資料庫中不存在所述第二目標張量形狀,則判斷所述初始資料庫中是否存在滿足第二匹配條件的第三目標張量形狀;若是,則將所述第三目標張量形狀作為所述目標張量形狀;
35.若所述初始資料庫中不存在所述第三目標張量形狀,則判斷所述邊界資料庫中是否存在滿足所述第二匹配條件的第四目標張量形狀;若是,則將所述第四目標張量形狀作為所述目標張量形狀。
36.第四方面,本發明實施例還提供了一種數據流切分裝置,包括:
37.張量形狀獲取模塊,用於獲取輸入數據流的當前張量形狀;
38.切分方式賦予模塊,用於在初始資料庫和/或邊界資料庫中存在與所述當前張量形狀相匹配的目標張量形狀時,採用所述目標張量形狀的切分方式對所述輸入數據流進行切分。
39.第五方面,本發明實施例還提供了一種電子設備,所述電子設備包括:
40.至少一個處理器;以及
41.與所述至少一個處理器通信連接的存儲器;其中,
42.所述存儲器存儲有可被所述至少一個處理器執行的電腦程式,所述電腦程式被所述至少一個處理器執行,以使所述至少一個處理器能夠執行本發明任意實施例所提供的資料庫生成方法,和/或,本發明任意實施例所提供的數據流切分方法。
43.第六方面,本發明實施例還提供了一種計算機可讀存儲介質,其特徵在於,所述計算機可讀存儲介質存儲有計算機指令,所述計算機指令用於使處理器執行時實現本發明任意實施例所提供的資料庫生成方法,和/或,本發明任意實施例所提供的數據流切分方法。
44.本發明實施例提供的資料庫生成方法,首先得到代價小於可容忍代價閾值的初始張量形狀集合,構成初始資料庫,可保證各初始張量形狀的性能較優;再通過對初始資料庫中各初始張量形狀進行各維度上的維度尺寸縮減,得到滿足代價線性關係的大量線性邊界張量形狀,構成邊界資料庫,可保證尺寸與邊界張量形狀呈倍數關係的張量形狀的代價可準確計量。初始資料庫和邊界資料庫中的張量形狀均作為對輸入數據流進行張量形狀匹配的參考張量形狀,一則,對於任意未知輸入數據流,只要存在與其相匹配的參考張量形狀,即可依據參考張量形狀的代價準確估算輸入數據流應用參考張量形狀的切分方式所消耗的代價,而無需對各輸入數據流進行單獨建模處理;二則,由於各初始張量形狀的性能較優,與初始張量形狀存在線性關係的邊界張量形狀的性能也能夠得到一定的保證,那麼,當存在與輸入數據流相匹配的參考張量形狀時,直接將參考張量形狀的切分方式賦予輸入數據流,相當於復用較小張量形狀的數據流來保證較大張量形狀的性能,從而保證最終選取的切分和搬運方式性能較優,可充分發揮晶片的算力。因此,相比於現有技術,本發明實施例可以精確地預測數據流應用各切分方式時的代價,有利於確定各數據流的較佳切分方式。
45.應當理解,本部分所描述的內容並非旨在標識本發明的實施例的關鍵或重要特
徵,也不用於限制本發明的範圍。本發明的其它特徵將通過以下的說明書而變得容易理解。
附圖說明
46.為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
47.圖1是現有技術中的一種dla的多級存儲結構示意圖;
48.圖2是本發明實施例提供的一種資料庫生成方法的流程示意圖;
49.圖3是本發明實施例提供的另一種資料庫生成方法的流程示意圖;
50.圖4是本發明實施例提供的一種各張量形狀的尺寸與代價線性度的對應關係示意圖;
51.圖5是本發明實施例提供的一種各張量形狀的實際代價線性度與預測代價線性度的對應關係示意圖;
52.圖6是本發明實施例提供的一種數據流切分方法的流程示意圖;
53.圖7是本發明實施例提供的一種尋找目標張量形狀的流程示意圖;
54.圖8是本發明實施例提供的一種資料庫生成裝置的結構示意圖;
55.圖9是本發明實施例提供的一種數據流切分裝置的結構示意圖;
56.圖10是本發明實施例提供的一種電子設備的結構示意圖。
具體實施方式
57.為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本發明保護的範圍。
58.需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語「第一」、「第二」等是用於區別類似的對象,而不必用於描述特定的順序或先後次序。應該理解這樣使用的數據在適當情況下可以互換,以便這裡描述的本發明的實施例能夠以除了在這裡圖示或描述的那些以外的順序實施。此外,術語「包括」和「具有」以及他們的任何變形,意圖在於覆蓋不排他的包含。
59.本發明實施例提供了一種資料庫生成方法,所生成的資料庫作為提供可泛化的數據流切分和搬運策略的基礎,該方法適用於包含任意存儲層級結構的ai晶片在計算時對數據流的處理需求,該方法可以由資料庫生成裝置來執行,該資料庫生成裝置可以採用硬體和/或軟體的形式實現,該資料庫生成裝置可配置於電子設備中。圖2是本發明實施例提供的一種資料庫生成方法的流程示意圖。如圖2所示,該資料庫生成方法包括:
60.s110、生成初始資料庫;其中,初始資料庫包括多個初始數據流的初始張量形狀,以及初始張量形狀對應的切分方式和代價,初始張量形狀對應的代價小於可容忍代價閾值。
61.其中,張量形狀對應的切分方式包括張量形狀在ai晶片的每層存儲中對應的切分方式。張量形狀對應的代價包括但不限於數據流切分以及搬運所消耗的時間和功耗等。初始資料庫作為未知輸入數據流在切分方式選取時的參考資料庫的一部分,構建為代價小於可容忍代價閾值的數據流的張量形狀的集合,可以保證各初始數據流的初始張量形狀所對應的代價都較小,使ai晶片的算力得到充分的發揮;保證作為參考的初始數據流均為性能較優的數據流,從而保證以初始張量形狀為基礎進行維度尺寸縮減後得到的各邊界張量形狀的性能也較優,進而保證初始張量形狀以及邊界張量形狀的切分方式,對於未知輸入數據流而言,均為性能較優的切分方式,可以直接調用。
62.具體地,初始資料庫的生成方式可以是:隨機生成多個初始數據流,針對每個初始數據流,獲取其在目標晶片中的切分搜索空間,並根據多項切分約束條件,在切分搜索空間中逐次濾除無效切分方式,得到多個備選切分方式,之後,使用各備選切分圖樣對原始數據流進行編譯,得到與各備選切分方式對應的實測數據,最後根據各實測數據,在各備選切分方式中得到原始數據流在目標晶片中的代價最小的目標切分方式,並記錄其初始張量形狀及其對應的切分方式和代價,生成初始資料庫。
63.示例性地,以採用圖1中的存儲結構實現矩陣乘法為例,晶片的輸入包括左操作數和右操作數兩個數據流,晶片的輸出包括計算結果這一個數據流。預先規定輸入的左操作數張量形狀,右操作數張量形狀和輸出的張量形狀。那麼,當左操作數和右操作數輸入至dla後,dla可以在每層存儲中,均確定相應的切分方式。進而,輸入數據在經過三級存儲最終輸入至乘法器陣列中進行計算,並將計算結果逐級返回至dla中進行合併存儲的過程中,需要分別確定出左操作數、右操作數以及計算結果在簇中的切分方式,在計算單元內的切分方式,以及在乘法器陣列中的切分方式。
64.各數據流較優切分方式的獲取過程可以是:獲取上述算子的每個數據流在每個存儲層級下全部的切分方式(先不考慮合理性),按照各種約束條件,例如,硬體約束條件以及軟體棧約束條件等,逐步在上述各切分方式中濾除不滿足約束條件的不合理切分方式,剩餘的少數幾個切分方式可作為備選切分方式。實測當輸入數據按照剩餘的各備選切分方式進行切分時,ai晶片基於該算子的計算性能,以最終篩選出在每個存儲層級的各方面性能表現較優的切分方式,並將該算子的各數據流的張量形狀對應的較優切分方式以及代價存儲在初始資料庫中備用。
65.s120、對初始張量形狀在至少一個維度上進行至少一次維度尺寸縮減,直至縮減後的張量形狀與其對應的代價不滿足線性關係時停止縮減,並將最後一次縮減前的張量形狀記為邊界張量形狀。
66.其中,每個張量形狀包括至少一個維度,每個維度包括至少一個元素,維度尺寸縮減即針對初始張量形狀,進行某維度上的元素數量縮減處理。示例性地,將初始張量形狀某一維度上的元素數量減半一次,相當於針對該初始張量形狀進行了一次維度尺寸縮減。張量形狀與其對應的代價滿足線性關係是指:張量形狀進行一次維度尺寸縮減後,其代價也以相同倍數縮減。
67.該步驟實際上相當於尋找各初始張量形狀在各個維度方向上進行縮減,直至尺寸和代價線性關係邊界處得到的所有最小尺寸邊界張量形狀集合。邊界張量形狀的性能可能低於初始張量形狀,但作為初始張量形狀的線性邊界,其形狀尺寸小於初始張量形狀,只要
輸入數據流的張量形狀尺寸是邊界張量形狀尺寸的整數倍,其代價與邊界張量形狀對應的代價就符合線性的倍數關係,那麼輸入數據流的代價就可以被準確估算。這相當於採用更多尺寸更小的邊界張量形狀形成的邊界資料庫對初始資料庫進行了擴展,初始資料庫和邊界資料庫共同構成對輸入數據流進行張量形狀匹配的參考資料庫,在保證代價可準確估算的基礎上,可以提高參考張量形狀與未知輸入張量形狀匹配到的概率。大量的邊界張量形狀可以大大豐富參考張量形狀的數量和結構,拓寬參考資料庫的應用範圍,使後續數據流切分方法的適用範圍更廣。
68.其中,一個n維的初始張量形狀通常對應著n維空間中超過n個的邊界張量形狀。示例性地,對於一個n維初始張量形狀,按照始終沿一個維度進行維度尺寸縮減的方法縮減直至線性邊界,可以得到n個邊界張量形狀;在縮減過程中,變換維度進行維度尺寸縮減,可以得到不同於上述n個的其他邊界張量形狀;即使選取相同的幾個維度進行維度尺寸縮減,任一維度的縮減尺度(倍數)不同的情況下,也對應著不同的邊界張量形狀。
69.s130、基於在各維度上進行維度尺寸縮減後得到的邊界張量形狀生成邊界資料庫;邊界資料庫包括多個邊界張量形狀,以及邊界張量形狀對應的切分方式和代價;其中,初始資料庫和邊界資料庫用於對輸入數據流進行張量形狀匹配,並根據匹配結果確定輸入數據流的切分方式。
70.其中,若輸入數據流的張量形狀與參考資料庫中存在的張量形狀相同或呈倍數關係,可認為輸入數據流的張量形狀與參考資料庫中的張量形狀相匹配,此時可根據匹配到的張量形狀的代價估算輸入數據流的代價,而無需再對輸入數據流進行建模等複雜處理。示例性地,當輸入數據流的張量形狀匹配到參考資料庫中的多個張量形狀時,可優先選取屬於初始資料庫中的張量形狀,將其切分方式賦予輸入數據流,這是由於初始資料庫中的張量形狀都是實際運行得到,相比於縮減處理後得到的邊界張量形狀,可以確保其切分方式對應的性能更優,從而保證輸入數據流選取到代價更優的切分方式。或者,當輸入數據流的張量形狀匹配到參考資料庫中的多個張量形狀時,可將採用各張量形狀的切分方式進行切分得到的估計代價進行排序,選擇估計代價最小的切分方式賦予輸入數據流。
71.本發明實施例提供的資料庫生成方法,首先得到代價小於可容忍代價閾值的初始張量形狀集合,構成初始資料庫,可保證各初始張量形狀的性能較優;再通過對初始資料庫中各初始張量形狀進行各維度上的維度尺寸縮減,得到滿足代價線性關係的大量線性邊界張量形狀,構成邊界資料庫,可保證尺寸與邊界張量形狀呈倍數關係的張量形狀的代價可準確計量。初始資料庫和邊界資料庫中的張量形狀均作為對輸入數據流進行張量形狀匹配的參考張量形狀,一則,對於任意未知輸入數據流,只要存在與其相匹配的參考張量形狀,即可依據參考張量形狀的代價準確估算輸入數據流應用參考張量形狀的切分方式所消耗的代價,而無需對各輸入數據流進行單獨建模處理;二則,由於各初始張量形狀的性能較優,與初始張量形狀存在線性關係的邊界張量形狀的性能也能夠得到一定的保證,那麼,當存在與輸入數據流相匹配的參考張量形狀時,直接將參考張量形狀的切分方式賦予輸入數據流,相當於復用較小張量形狀的數據流來保證較大張量形狀的性能,從而保證最終選取的切分和搬運方式性能較優,可充分發揮晶片的算力。因此,相比於現有技術,本發明實施例可以精確地預測數據流應用各切分方式時的代價,有利於確定各數據流的較佳切分方式。
72.下面結合圖3,對各初始張量形狀進行維度尺寸縮減處理的過程進行詳細說明,但不作為對本發明的限定。圖3是本發明實施例提供的另一種資料庫生成方法的流程示意圖,參見圖3,該資料庫生成方法包括:
73.s200、生成初始資料庫。
74.s201、自初始資料庫中任選一個未經縮減的初始張量形狀。
75.s202、針對選中的初始張量形狀,任選一個未經縮減的維度,進行一次維度尺寸縮減,得到初次縮減張量形狀。
76.該步驟相當於對任一初始張量形狀在任一維度上進行一次維度尺寸縮減,例如將選中初始張量形狀某一維度的元素數量減半。
77.s203、判斷初始張量形狀與初次縮減張量形狀之間的尺寸比值和代價比值是否相等;若是,則執行s204;若否,則執行s211。
78.其中,尺寸比值為:對於被縮減的當前維度,縮減前的張量形狀(該步驟中為初始張量形狀)在該維度的維度尺寸(元素數量),與縮減後得到的張量形狀(該步驟中為初次縮減張量形狀)在該維度的維度尺寸(元素數量)的比值。代價比值為:縮減前的張量形狀對應的代價,與縮減後得到的張量形狀對應的代價的比值。
79.若初始張量形狀與初次縮減張量形狀之間的尺寸比值等於代價比值,表明初始張量形狀與初次縮減張量形狀符合代價線性關係,可以針對初次縮減張量形狀繼續進行下一步的維度尺寸縮減。若尺寸比值不等於代價比值,表明初次縮減張量形狀與初始張量形狀之間不符合代價線性關係,也就是說,針對選中的初始張量形狀,以當前被縮減維度作為初始縮減維度時,不存在對應的邊界張量形狀,需要針對該初始張量形狀,轉換其他維度進行維度尺寸縮減嘗試,判斷其他維度下得到的初次縮減張量形狀是否與初始張量形狀存在線性關係。
80.s204、基於當前維度或其他維度,對初次縮減張量形狀繼續進行維度尺寸縮減。
81.當初次縮減張量形狀與初始張量形狀滿足線性關係時,可對初始縮減張量形狀繼續進行維度尺寸縮減,以尋找該初次縮減張量形狀在各維度方向上的各線性邊界。
82.s205、判斷縮減前後的尺寸比值和代價比值是否相等;若是,則返回執行s204;若否,則執行s206。
83.該步驟中,是對當前次縮減前和縮減後的張量形狀進行上述兩類比值的比較,以判斷當前次縮減後的張量形狀與縮減前的張量形狀之間是否仍滿足線性關係。若縮減後得到的尺寸比值和代價比值不相等,則表明當前次縮減後得到的張量形狀已經不滿足代價線性條件的要求,當前維度方向上的維度尺寸縮減已到達線性邊界,此時停止縮減。
84.s206、將最後一次縮減前的張量形狀記為邊界張量形狀,並加入邊界資料庫。
85.其中,最後一次縮減是指:在該次縮減完成後,縮減得到的尺寸比值和代價比值首次出現不相等的情況。也就是說,在該次縮減前,張量形狀的尺寸較大,可以掩蓋住硬體流水的時間,整體上表現為形狀尺寸與代價呈正比的關係;而在該次縮減後,張量形狀的尺寸過小,已無法掩蓋硬體流水的時間,即使維度尺寸再成倍縮小,代價已經不能縮小太多。因此,對邊界張量形狀繼續縮減後得到的張量形狀,其代價無法被準確預估。
86.圖4是本發明實施例提供的一種各張量形狀的尺寸與代價線性度的對應關係示意圖。參見圖4,以各維度的尺寸乘積作為張量形狀整體的尺寸,沿自右向左的方向,各張量形
狀的尺寸不變或縮小;代價的線性度越接近1代表該張量形狀與縮減前的張量形狀的代價越接近線性關係。通過圖4可以看出,當張量形狀的尺寸縮小到一定程度時,其對應代價的線性度偏離1。圖4中,可將[12_56_56_64_256_1_1_1]作為邊界張量形狀。以邊界張量形狀的輸入尺度為閾值,當張量形狀尺寸增加時,代價線性增長;當張量形狀尺寸減小時,由於硬體流水等特性,代價不再符合線性特徵。
[0087]
s207、判斷針對初次縮減張量形狀,是否完成各維度方向的縮減處理;若是,則執行s208;若否,則返回執行s204。
[0088]
其中,初次縮減張量形狀完成各維度方向的縮減處理是指:已經尋找到針對於初次縮減張量形狀的所有邊界張量形狀;或者,針對初次縮減張量形狀尋找到的邊界張量形狀的數量已達到數量閾值。
[0089]
示例性地,以對初始張量形狀進行第一次縮減時選取的維度作為當前維度;針對初次縮減張量形狀的後續縮減處理,包括但不限於以下幾種:第一、持續在當前維度進行維度尺寸縮減,直至不符合線性條件,可得到一個邊界張量形狀。第二、持續在除當前維度的其他任意一個維度進行維度尺寸縮減,直至不符合線性條件,每個維度下可得到一個邊界張量形狀。第三、先後變換不同維度進行維度尺寸縮減,直至不符合線性條件,可得到不同於上述兩種情況的其他邊界張量形狀。
[0090]
s208、判斷針對初始張量形狀,是否完成各維度方向的縮減處理;若是,則執行s209;若否,則返回執行s202。
[0091]
其中,初始張量形狀完成各維度方向的縮減處理是指:初始張量形狀在各維度下分別進行一次縮減後得到的各個初次縮減張量形狀,都已經完成了各維度方向的縮減處理。若初始張量形狀已完成各維度方向的縮減處理,說明已經將該初始張量形狀對應的各個邊界張量形狀添加至了邊界資料庫,之後可以選取初始資料庫中其他未經縮減的初始張量形狀進行縮減處理。
[0092]
s209、判斷初始資料庫中所有初始張量形狀是否均完成縮減處理;若是,則執行s210;若否,則返回執行s201。
[0093]
s210、結束縮減,得到邊界資料庫。
[0094]
s211、判斷針對選中的初始張量形狀,是否所有維度都經過了一次維度尺寸縮減;若是,則執行s212;若否,則返回執行s202。
[0095]
在s203中判斷出初始張量形狀與初次縮減張量形狀之間的尺寸比值和代價比值不相等後,先經過s211的判斷步驟,若初始張量形狀的所有維度經過一次維度尺寸縮減後得到的初次縮減張量形狀,都與初始張量形狀不存在線性關係,表明該初始張量形狀縮減後的尺寸已經不能掩蓋硬體流水時間,即表明當前初始張量形狀縮減後無對應的邊界張量形狀,可直接將該初始張量形狀拋棄。
[0096]
需要說明的是,當初始張量形狀的所有維度經過一次維度尺寸縮減後都與初始張量形狀不存在線性關係時,除了初始張量形狀本身尺寸已經不能掩蓋硬體流水時間外,還存在初始張量形狀本身恰好是邊界張量形狀的可能。此處將所有維度經過一次維度尺寸縮減後都不符合代價線性條件的初始張量都判定為無對應邊界張量形狀而直接拋棄,可以在不影響參考資料庫豐富性的基礎上,有效簡化判斷步驟。這是因為:初始資料庫中已經包含有初始張量形狀,也就是說參考資料庫中已經包含有各初始張量形狀,對於恰好處於線性
邊界的初始張量形狀,即使不對其進行是否為線性邊界的判斷就直接拋棄,也只是減少了邊界資料庫中的張量形狀數量,而不影響參考資料庫中涵蓋的參考張量形狀的類型,不影響對未知張量形狀切分方式的選取;並且,不將恰好為邊界張量形狀的初始張量形狀放入邊界資料庫,還可以避免參考資料庫中張量形狀的重複,有利於簡化後續的張量形狀匹配過程。
[0097]
s212、拋棄該初始張量形狀。
[0098]
本發明實施例通過s200-s212給出了基於初始張量形狀的邊界資料庫的構建過程,通過尋找各初始張量形狀在各維度方向上進行維度尺寸縮減得到的代價符合線性的最小形狀(邊界張量形狀)集合,對於初始資料庫中的一個初始張量形狀,就可以生成一系列的邊界張量形狀和代價,大大增加了參考張量形狀的數量。
[0099]
為驗證上述參考資料庫的適用性,發明人對一些張量形狀進行了實際測量和預測,各張量形狀的實際代價線性度與預測代價線性度的對應關係可參見圖5。圖5中示例性地,實線代表實際代價線性度,虛線代表預測代價線性度。通過圖5可以看出,在線性區間內,預測曲線與實際曲線基本重合;在非線性區間內,預測曲線偏離實際曲線較多,這表明本實施例中邊界張量形狀的選取合理,對尺寸大於線性邊界張量形狀的其他張量形狀的代價預測結果可信度較高。對於未知的張量形狀,線性區間內預測的準確率可達90%-95%以上。因此,將邊界張量形狀作為對輸入數據流進行張量形狀匹配的參考張量形狀是可靠的。
[0100]
本發明實施例還提供了一種數據流切分方法,基於上述各實施方式提供的參考資料庫,即初始資料庫和邊界資料庫實現。該方法適用於包含任意存儲層級結構的ai晶片在計算時對數據流的處理需求,該方法可以由數據流切分裝置來執行,該數據流切分裝置可以採用硬體和/或軟體的形式實現,該數據流切分裝置可配置於電子設備中。圖6是本發明實施例提供的一種數據流切分方法的流程示意圖。參見圖6,該數據流切分方法包括:
[0101]
s310、獲取輸入數據流的當前張量形狀。
[0102]
s320、若初始資料庫和/或邊界資料庫中存在與當前張量形狀相匹配的目標張量形狀,則採用目標張量形狀的切分方式對輸入數據流進行切分。
[0103]
其中,由於初始資料庫中的各初始張量形狀是通過實際運行得到的代價較小性能較高的張量形狀,實際應用時,可優先判斷初始資料庫中的張量形狀是否與當前張量形狀相匹配。
[0104]
初始資料庫和邊界資料庫共同構成參考資料庫,參考資料庫中的參考張量形狀與當前張量形狀之間滿足下述任意一種匹配條件,即可認為該參考張量形狀為與當前張量形狀相匹配的目標張量形狀。具體地,匹配條件包括:第一匹配條件:目標張量形狀與當前張量形狀相同;或者,第二匹配條件:目標張量形狀的維度數量與當前張量形狀的維度數量相同,且當前張量形狀各維度的維度尺寸均為目標張量形狀對應維度的維度尺寸的整數倍。相較於第二匹配條件,滿足第一匹配條件的目標張量形狀與當前張量形狀的相似度更高,更能保證其切分方式與當前張量形狀適配。因此,可以優先選取滿足第一匹配條件的張量形狀作為目標張量形狀。
[0105]
本發明實施例提供的數據流切分方法,通過在初始資料庫和邊界資料庫中的匹配查找,可快速準確的查找到對於輸入數據流較優的切分方式,使得晶片的算力能夠得到充分的發揮,解決了現有技術中無法準確、有效的識別出各輸入數據流對應的高效切分方式,
對開發人員的經驗依賴性大的問題。
[0106]
下面結合圖7,對目標張量形狀的尋找過程進行詳細說明,但不作為對本發明的限定。圖7是本發明實施例提供的一種尋找目標張量形狀的流程示意圖。參見圖7,在一種實施方式中,可選地,尋找目標張量形狀包括:
[0107]
s410、獲取輸入數據流的當前張量形狀。
[0108]
s420、判斷初始資料庫中是否存在滿足第一匹配條件的第一目標張量形狀;若是,則執行s460;若否,則執行s430。
[0109]
首先針對初始資料庫進行第一匹配條件的判斷,若查找到第一目標張量形狀,則可以將第一目標張量形狀直接作為目標張量形狀。輸入數據流的當前張量形狀與第一目標張量形狀相同,可直接採用第一目標張量形狀的切分方式進行切分,其代價明確已知,且代價較小。這樣可以最大程度上保證輸入數據流採用該切分方式時的代價小,性能優。
[0110]
s430、判斷邊界資料庫中是否存在滿足第一匹配條件的第二目標張量形狀;若是,則執行s460;若否,則執行s440。
[0111]
其中,在未查找到第一目標張量形狀的情況下,若查找到第二目標張量形狀,則可以將第二目標張量形狀直接作為目標張量形狀。輸入數據流的當前張量形狀與第二目標張量形狀相同,可直接採用第二目標張量形狀的切分方式進行切分,其代價同樣明確已知。這樣也可以儘量保證輸入數據流採用該切分方式時的代價小,性能優。
[0112]
s440、判斷初始資料庫中是否存在滿足第二匹配條件的第三目標張量形狀;若是,則執行s460;若否,則執行s450。
[0113]
其中,由於輸入數據流的當前張量形狀多種多樣,即使初始資料庫和邊界資料庫中已經包含眾多的張量形狀,當前張量形狀與參考張量形狀完全相同的概率實際上也不高。那麼,採用第二匹配條件進行查找相當於拓寬了搜索條件,儘管有可能犧牲部分運行性能,但只要參考張量形狀在任意維度都滿足:「當前張量形狀%參考張量形狀=0」的條件,仍能保證當前張量形狀的代價可精確預測。這樣,相比於現有技術中依靠開發人員經驗或依靠複雜建模尋找切分方式的方法,仍能高效準確的查找到對於輸入數據流較優的切分方式。
[0114]
在未查找到第一目標張量形狀和第二目標張量形狀的情況下,若查找到第三目標張量形狀,則可以將第三目標張量形狀直接作為目標張量形狀。輸入數據流的當前張量形狀尺寸是第三目標張量形狀尺寸的整數倍,可將第三目標張量形狀的切分方式賦予當前張量形狀,並在當前張量形狀存在兩倍及以上倍數關係的維度增加切分次數即可。這相當於復用較小形狀(目標張量形狀)的數據流來保證較大形狀(當前張量形狀)的性能。
[0115]
s450、判斷邊界資料庫中是否存在滿足第二匹配條件的第四目標張量形狀;若是,則執行s460;若否,則執行s470。
[0116]
在上述三類目標張量形狀均未查找到的情況下,若查找到第四目標張量形狀,則可以將第四目標張量形狀直接作為目標張量形狀。輸入數據流的當前張量形狀尺寸是第四目標張量形狀尺寸的整數倍,可將第四目標張量形狀的切分方式賦予當前張量形狀。
[0117]
s460、確定目標張量形狀。
[0118]
s470、判定不存在目標張量形狀。
[0119]
本發明實施例通過s410-s470給出了目標張量形狀的查找步驟,以匹配度從高到
低,以及應用切分後性能的可靠性從高到低的順序,自初始資料庫和邊界資料庫中查找目標張量形狀,儘可能的查找到屬於當前張量形狀的最優切分方式。
[0120]
在上述各實施方式的基礎上,可選地,若目標張量形狀不唯一,則根據目標張量形狀的代價估算採用目標張量形狀的切分方式對輸入數據流進行切分時產生的預估代價;並選取預估代價最低的目標張量形狀的切分方式對輸入數據流進行切分,以儘可能保證選取到的切分方法性能最優。
[0121]
在上述各實施方式的基礎上,可選地,由於初始數據流以及輸入數據流等數據流的張量形狀的確定方式比較自由,ai晶片可在某級存儲的位置採用自動填充(auto-padding)策略處理數據流,使填充後的數據流在各維度的尺寸都是該級存儲單元在該維度尺寸的整數倍,即,使得填充後的數據流的張量形狀呈現為尺寸是存儲單元張量形狀(切分形狀)尺寸整數倍的標準張量形狀,使數據流可以按照簡單循環進行搬運,以保證數據流搬運的規則性和高效性。示例性地,填充處理可以指對原始張量形狀進行數據填充,具體可以是將原始張量形狀填充至指定大小,例如,將形如m*k的原始張量形狀直接填充至形如w*v的標準張量形狀,其中,w大於m,v大於k。或者,也可以是對原始張量形狀填充預設數值,例如,將形如m*k的原始張量形狀填充至形如(m+1)*(k+1)的標準張量形狀。示例性地,存儲單元張量形狀在某維度的尺寸為5,待處理張量形狀在該維度的尺寸為13,通過auto-padding策略,可以將待處理張量形狀在該維度的尺寸填充至15,儘量以最小的填充量實現整數倍的對應關係。
[0122]
具體地,以包含nhwcico維度的數據流為例,該填充策略下,需要保證:n是hn的倍數;h是hh的倍數;w是hw的倍數;ci是hci的倍數;co是hco的倍數。其中,hn、hh、hw、hci與hco分別是存儲單元在該維度下的尺寸,或稱切分形狀在該維度的尺寸。並且,ai晶片需儘量保證auto-padding以下的硬體行為儘量一致,以確保張量形狀的線性關係可靠。儘管auto-padding的策略會損失部分算力,但該策略有利於數據流的搬運,在實際應用時,出於算力和搬運規則性之間的平衡性考慮,可以適當採用該填充策略。對於特定的張量形狀,可以儘量找到一個較小auto-padding的切分,使這個切分的性能接近於不做auto-padding時的性能。
[0123]
如果忽略硬體流水時間,已知nhwcico的張量形狀在配置{hn,hh,hw,hci,hco,
…
}時的代價為a,那麼,對於未知的張量形狀n』h』w』ci』co』,其代價a』可採用下式計算:
[0124][0125]
其中,ceil表示返回大於或者等於指定表達式的最小整數的運算。
[0126]
需要說明的是,本發明實施例所提供的數據流切分方法適用於各種結構的存儲層級。出於降低帶寬,以及達成計算和帶寬上的平衡的需求,可利用多級存儲結構為每級存儲和計算提供數據復用。進一步地,為了便於數據搬運和數據存儲,不同存儲層級之間的切分尺寸可呈倍數關係。
[0127]
本發明實施例還提供了一種資料庫生成裝置,用於執行本發明任意實施例所提供的資料庫生成方法,具備執行方法相應的功能模塊和有益效果。圖8是本發明實施例提供的
一種資料庫生成裝置的結構示意圖,參見圖8,該資料庫生成裝置包括:初始資料庫生成模塊110、邊界張量形狀篩選模塊120和邊界資料庫生成模塊130。
[0128]
初始資料庫生成模塊110用於生成初始資料庫;其中,初始資料庫包括多個初始數據流的初始張量形狀,以及初始張量形狀對應的切分方式和代價,初始張量形狀對應的代價小於可容忍代價閾值。邊界張量形狀篩選模塊120用於對初始張量形狀在至少一個維度上進行至少一次維度尺寸縮減,直至縮減後的張量形狀與其對應的代價不滿足線性關係時停止縮減,並將最後一次縮減前的張量形狀記為邊界張量形狀。邊界資料庫生成模塊130用於基於在各維度上進行維度尺寸縮減後得到的邊界張量形狀生成邊界資料庫;邊界資料庫包括多個邊界張量形狀,以及邊界張量形狀對應的切分方式和代價。其中,初始資料庫和邊界資料庫用於對輸入數據流進行張量形狀匹配,並根據匹配結果確定輸入數據流的切分方式。
[0129]
在上述各實施方式的基礎上,可選地,邊界張量形狀篩選模塊120具體用於:對於任一初始張量形狀在任一維度上進行一次維度尺寸縮減;對於當前維度,計算縮減後維度尺寸與縮減前維度尺寸的尺寸比值;以及計算縮減後的張量形狀對應代價與縮減前的張量形狀對應代價的代價比值;判斷尺寸比值和代價比值是否相等;若是,則對縮減後的張量形狀繼續進行維度尺寸縮減,直至縮減後得到的尺寸比值和代價比值不相等時停止縮減,並將最後一次縮減前的張量形狀記為邊界張量形狀;若否,則對當前初始張量形狀在其他維度上進行維度尺寸縮減,以獲取當前初始張量形狀對應的邊界張量形狀。以及,若當前初始張量形狀在各維度上分別進行一次維度尺寸縮減後對應得到的尺寸比值和代價比值均不相等,則判定當前初始張量形狀無對應的邊界張量形狀。
[0130]
本發明實施例還提供了一種數據流切分裝置,用於執行本發明任意實施例所提供的數據流切分方法,具備執行方法相應的功能模塊和有益效果。圖9是本發明實施例提供的一種數據流切分裝置的結構示意圖,參見圖9,該數據流切分裝置包括:張量形狀獲取模塊210和切分方式賦予模塊220。
[0131]
其中,張量形狀獲取模塊210用於獲取輸入數據流的當前張量形狀。切分方式賦予模塊220用於在初始資料庫和/或邊界資料庫中存在與當前張量形狀相匹配的目標張量形狀時,採用目標張量形狀的切分方式對輸入數據流進行切分。
[0132]
在上述各實施方式的基礎上,可選地,數據流切分裝置還包括:代價預估模塊,用於在目標張量形狀不唯一時,根據目標張量形狀的代價估算採用目標張量形狀的切分方式對輸入數據流進行切分時產生的預估代價;並選取預估代價最低的目標張量形狀的切分方式對輸入數據流進行切分。
[0133]
在上述各實施方式的基礎上,可選地,目標張量形狀與當前張量形狀相匹配包括:第一匹配條件:目標張量形狀與當前張量形狀相同;或者,第二匹配條件:目標張量形狀的維度數量與當前張量形狀的維度數量相同,且當前張量形狀各維度的維度尺寸均為目標張量形狀對應維度的維度尺寸的整數倍。
[0134]
在上述各實施方式的基礎上,可選地,切分方式賦予模塊220具體用於:判斷初始資料庫中是否存在滿足第一匹配條件的第一目標張量形狀;若是,則將第一目標張量形狀作為目標張量形狀;若初始資料庫中不存在第一目標張量形狀,則判斷邊界資料庫中是否存在滿足第一匹配條件的第二目標張量形狀;若是,則將第二目標張量形狀作為目標張量
形狀;若邊界資料庫中不存在第二目標張量形狀,則判斷初始資料庫中是否存在滿足第二匹配條件的第三目標張量形狀;若是,則將第三目標張量形狀作為目標張量形狀;若初始資料庫中不存在第三目標張量形狀,則判斷邊界資料庫中是否存在滿足第二匹配條件的第四目標張量形狀;若是,則將第四目標張量形狀作為目標張量形狀。
[0135]
本發明實施例還提供了一種電子設備。圖10是本發明實施例提供的一種電子設備的結構示意圖,如圖10所示,該電子設備包括至少一個處理器410;以及,與至少一個處理器410通信連接的存儲器420;其中,存儲器420存儲有可被至少一個處理器執行的電腦程式,電腦程式被至少一個處理器410執行,以使至少一個處理器410能夠執行本發明任意實施例所提供的資料庫生成方法,和/或,本發明任意實施例所提供的數據流切分方法。另外,電子設備中還可包括:輸入裝置430和輸出裝置440。電子設備中的處理器410、存儲器420、輸入裝置430和輸出裝置440可以通過總線或其他方式連接,圖10中以通過總線連接為例。
[0136]
存儲器420作為一種計算機可讀存儲介質,可用於存儲軟體程序、計算機可執行程序以及模塊,如本發明實施例中的資料庫生成方法,和/或,數據流切分方法對應的程序指令/模塊(例如,資料庫生成裝置中的初始資料庫生成模塊110、邊界張量形狀篩選模塊120和邊界資料庫生成模塊130;和/或,數據流切分裝置中的張量形狀獲取模塊210和切分方式賦予模塊220)。處理器410通過運行存儲在存儲器420中的軟體程序、指令以及模塊,從而執行電子設備的各種功能應用以及數據處理,即實現上述的資料庫生成方法,和/或,數據流切分方法。
[0137]
存儲器420可主要包括存儲程序區和存儲數據區,其中,存儲程序區可存儲作業系統、至少一個功能所需的應用程式;存儲數據區可存儲根據終端的使用所創建的數據等。此外,存儲器420可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁碟存儲器件、快閃記憶體器件、或其他非易失性固態存儲器件。在一些實例中,存儲器420可進一步包括相對於處理器410遠程設置的存儲器,這些遠程存儲器可以通過網絡連接至電子設備。上述網絡的實例包括但不限於網際網路、企業內部網、區域網、移動通信網及其組合。
[0138]
輸入裝置430可用於接收輸入的數字或字符信息,以及產生與電子設備的用戶設置以及功能控制有關的鍵信號輸入。輸出裝置440可包括顯示屏等顯示設備。
[0139]
本發明實施例還提供了一種包含計算機可執行指令的存儲介質,所述計算機可執行指令在由計算機處理器執行時用於執行一種資料庫生成方法,和/或,數據流切分方法。
[0140]
當然,本發明實施例所提供的一種包含計算機可執行指令的存儲介質,其計算機可執行指令不限於如上所述的方法操作,還可以執行本發明任意實施例所提供的資料庫生成方法,和/或,數據流切分方法中的相關操作。
[0141]
通過以上關於實施方式的描述,所屬領域的技術人員可以清楚地了解到,本發明可藉助軟體及必需的通用硬體來實現,當然也可以通過硬體實現,但很多情況下前者是更佳的實施方式。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品可以存儲在計算機可讀存儲介質中,如計算機的軟盤、只讀存儲器(read-only memory,rom)、隨機存取存儲器(random access memory,ram)、快閃記憶體(flash)、硬碟或光碟等,包括若干指令用以使得一臺電子設備(可以是個人計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述的方法。
[0142]
值得注意的是,上述資料庫生成裝置,以及數據流切分裝置的實施例中,所包括的各個單元和模塊只是按照功能邏輯進行劃分的,但並不局限於上述的劃分,只要能夠實現相應的功能即可;另外,各功能單元的具體名稱也只是為了便於相互區分,並不用於限制本發明的保護範圍。
[0143]
應該理解,可以使用上面所示的各種形式的流程,重新排序、增加或刪除步驟。例如,本發明中記載的各步驟可以並行地執行也可以順序地執行也可以不同的次序執行,只要能夠實現本發明的技術方案所期望的結果,本文在此不進行限制。
[0144]
上述具體實施方式,並不構成對本發明保護範圍的限制。本領域技術人員應該明白的是,根據設計要求和其他因素,可以進行各種修改、組合、子組合和替代。任何在本發明的精神和原則之內所作的修改、等同替換和改進等,均應包含在本發明保護範圍之內。