本申請涉及互聯網,具體涉及人工智能,尤其涉及一種計算圖的處理方法、裝置、設備及存儲介質。
背景技術:
1、隨著人工智能(artificial?intelligence,ai)技術的發展,計算圖(computationgraph)得到了廣泛應用;所謂的計算圖是一種用于表示數學計算或程序執行的圖結構,其在ai模型的實現中尤為重要,可用于描述ai模型中的計算過程。計算圖的輸入可采用動態shape(形狀),所謂的動態shape是指可動態變化的shape,其可表示計算圖每次輸入的數據的shape不固定,即計算圖可支持輸入多種shape的數據,這樣的計算圖可稱為動態shape圖。
2、對于動態shape圖而言,常見的處理方式是編譯執行,即預先對動態shape圖進行動態編譯,得到支持動態輸入的編譯結果,從而在需要執行動態shape圖時,獲取該動態shape圖的輸入數據,并基于該編譯結果對輸入數據執行動態shape圖。由于其每次執行時所輸入的數據的shape往往不同,因此這樣的處理方式容易導致處理器產生較大的開銷,導致執行效率較低。
技術實現思路
1、本申請實施例提供了一種計算圖的處理方法、裝置、設備及存儲介質,可節省處理器的開銷且提升計算圖的執行效率。
2、一方面,本申請實施例提供了一種計算圖的處理方法,所述方法包括:
3、獲取計算圖,所述計算圖包括p個動態輸入,p為正整數;其中,每個動態輸入具備一個動態形狀,每個動態形狀具有一個取值范圍;
4、獲取所述計算圖的分桶標記,所述分桶標記用于指示:每個動態輸入所屬的組別以及每個組別的分桶方式;其中,同一個組別中的各個動態輸入的動態形狀具有相同的取值范圍,且各個動態輸入的動態形狀的取值范圍按照相應組別的分桶方式進行分桶處理;
5、按照所述分桶標記的指示,對所述p個動態輸入的動態形狀的取值范圍進行分桶處理,得到多個桶;每個桶中包括p個數值,所述p個數值中的不同數值是從不同的取值范圍中選取出的;
6、基于每個桶中的數值對所述計算圖進行靜態編譯,得到所述每個桶對應的編譯結果;
7、在獲取到所述計算圖的輸入數據后,基于所述多個桶對應的編譯結果,對所述輸入數據執行所述計算圖,得到所述輸入數據的數據計算結果。
8、另一方面,本申請實施例提供了一種計算圖的處理裝置,所述裝置包括:
9、獲取單元,用于獲取計算圖,所述計算圖包括p個動態輸入,p為正整數;其中,每個動態輸入具備一個動態形狀,每個動態形狀具有一個取值范圍;
10、所述獲取單元,還用于獲取所述計算圖的分桶標記,所述分桶標記用于指示:每個動態輸入所屬的組別以及每個組別的分桶方式;其中,同一個組別中的各個動態輸入的動態形狀具有相同的取值范圍,且各個動態輸入的動態形狀的取值范圍按照相應組別的分桶方式進行分桶處理;
11、處理單元,用于按照所述分桶標記的指示,對所述p個動態輸入的動態形狀的取值范圍進行分桶處理,得到多個桶;每個桶中包括p個數值,所述p個數值中的不同數值是從不同的取值范圍中選取出的;
12、所述處理單元,還用于基于每個桶中的數值對所述計算圖進行靜態編譯,得到所述每個桶對應的編譯結果;
13、所述處理單元,還用于在獲取到所述計算圖的輸入數據后,基于所述多個桶對應的編譯結果,對所述輸入數據執行所述計算圖,得到所述輸入數據的數據計算結果。
14、再一方面,本申請實施例提供了一種計算機設備,所述計算機設備包括輸入接口和輸出接口,所述計算機設備還包括:
15、處理器以及計算機存儲介質;
16、其中,所述處理器適于實現一條或多條指令,所述計算機存儲介質存儲有一條或多條指令,所述一條或多條指令適于由所述處理器加載并執行上述所提及的計算圖的處理方法。
17、再一方面,本申請實施例提供了一種計算機存儲介質,所述計算機存儲介質存儲有一條或多條指令,所述一條或多條指令適于由處理器加載并執行上述所提及的計算圖的處理方法。
18、再一方面,本申請實施例提供了一種計算機程序產品,該計算機程序產品包括一條或多條指令;所述計算機程序產品中的一條或多條指令被處理器執行時,實現上述所提及的計算圖的處理方法。
19、本申請實施例可獲取包括p個動態輸入的計算圖以及計算圖的分桶標記,該分桶標記用于指示每個動態輸入所屬的組別以及每個組別的分桶方式,同一個組別中的各個動態輸入的動態形狀具有相同的取值范圍,且各個動態輸入的動態形狀的取值范圍按照相應組別的分桶方式進行分桶處理;可見,本申請實施例通過分組的形式來設置分桶標記,可以實現同一個組別中的各個動態輸入的動態形狀的取值范圍的分桶方式采用一條信息即可記錄,這樣可以避免占用一些內存來分別記錄每個動態輸入的動態形狀的取值范圍的分桶方式,以此可有效節省處理器的內存。進一步的,可在執行計算圖之前,按照分桶標記的指示,對p個動態輸入的動態形狀的取值范圍進行分桶處理,得到多個桶,并基于每個桶中的數值對計算圖進行靜態編譯,從而在獲取到計算圖的輸入數據后,基于多個桶對應的編譯結果,對輸入數據執行計算圖以得到輸入數據的數據計算結果,這樣可避免每次獲取到輸入數據后,均需消耗處理器資源來編譯計算圖的情況,從而可有效節省處理器產生的開銷,并縮短計算圖的執行時長,進而提升計算圖的執行效率。
1.一種計算圖的處理方法,其特征在于,包括:
2.如權利要求1所述的方法,其特征在于,動態輸入的動態形狀包括n個維度的數值,且所述n個維度中存在動態維度,n為正整數;
3.如權利要求2所述的方法,其特征在于,所述分桶標記包括:每個動態輸入的組別標記,以及至少一個組別的屬性標記;其中:
4.如權利要求1-3任一項所述的方法,其特征在于,所述基于每個桶中的數值對所述計算圖進行靜態編譯,得到所述每個桶對應的編譯結果,包括:
5.如權利要求1-3任一項所述的方法,其特征在于,所述每個桶具有一個靜態形狀;所述基于所述多個桶對應的編譯結果,對所述輸入數據執行所述計算圖,得到所述輸入數據的數據計算結果,包括:
6.如權利要求5所述的方法,其特征在于,所述參考信息包括目標形狀計算式,所述目標形狀計算式中的變量為輸入數據的形狀中的數值,且所述目標形狀計算式的值表示目標輸出形狀中的第t個維度的取值,t為正整數且小于或等于所述目標輸出形狀中的維度數;
7.如權利要求6所述的方法,其特征在于,所述計算圖包括多個節點,每個節點具有各自的數據處理邏輯,所述多個節點的數據處理邏輯構成所述計算圖的運算邏輯;
8.如權利要求7所述的方法,其特征在于,所述多個節點包括:p個輸入節點、r個算子節點和輸出節點,r為正整數;其中,一個輸入節點表示所述計算圖的一個動態輸入,每個輸入節點的動態形狀包括動態維度;
9.如權利要求8所述的方法,其特征在于,所述第r個算子節點接收到的形狀表示為目標形狀;
10.如權利要求1所述的方法,其特征在于,所述分桶處理是在檢測到所述計算圖具有可分桶性的情況下執行的;
11.如權10所述的方法,其特征在于,所述根據所述當前算子的數據處理邏輯,預測當使用預設數據元素擴充輸入數據后,所述當前算子對擴充后的輸入數據進行計算時,所述預設數據元素是否影響輸入數據的原始計算結果,包括:
12.如權利要求11所述的方法,其特征在于,所述方法還包括:
13.一種計算圖的處理裝置,其特征在于,包括:
14.一種計算機設備,包括輸入接口和輸出接口,其特征在于,還包括:處理器以及計算機存儲介質;
15.一種計算機存儲介質,其特征在于,所述計算機存儲介質存儲有一條或多條指令,所述一條或多條指令適于由處理器加載并執行如權利要求1-12任一項所述的計算圖的處理方法。
16.一種計算機程序產品,其特征在于,所述計算機程序產品包括一條或多條指令;所述計算機程序中的一條或多條指令被處理器執行時,實現如權利要求1-12任一項所述的計算圖的處理方法。